Learn all about microservices from Product Marketing Manager Dan Giordano. We'll cover how to get started, the benefits, potential challenges, and how SmartBear can help.
2. Page
Proprietary & Confidential
Microservices:
an approach to engineering focused on building
single-function modules with well-defined
interfaces and operations.
• Minimize risk and scope of change
• Easy to deploy
• Easy to understand across the business
Microservices
2
6. Page
Proprietary & Confidential
6
Microservices
Benefits Of Microservices
Separation of Services
Easy to Change Tech
Simple to Understand
Increased Availability
Reusability of Services
Decentralized Data
Easy to Deploy
- Services focus on one single function
- No large commitment to one tech stack
- Distributed teams can understand small functions easier
- Improve fault isolation and system resiliency
- Reuse microservices through your organization
- Each microservice is responsible for its database
- Deploy in literally pieces
7. Page
Proprietary & Confidential
7
Microservices
Experience Layer
Process Layer
System Layer
Cancel
Credit Card
View
Balance
Receipt API
TwillioSalesforce
Fraud
API
Fraud
DB
Credit
Score
API
Card
Sales
API
User
DB
Messaging
API
Activity
API
New
Acct #
API
Check
Balance
API
Microservice in Enterprise
9. Page
Proprietary & Confidential
9
Microservices
Complexity
On top of normal APIcomplexity:
• Exponential number of connections
• Accuracyof API abstractions
• Not fully standardized
Complexity Automation Availability Performance
Microservice Microservice
You Start With…
And End Up With…
Microservice Microservice
Microservice
Microservice Microservice
Microservice
10. Page
Proprietary & Confidential
10
Microservices
Test Automation
Complexity Automation Availability Performance
• Functional Testing
• Testing Stateand Data
• ServiceChaining
• Test Refactoring
That’s a lot of endpoints to test!
11. Page
Proprietary & ConfidentialMicroservices
Availability
Complexity Automation Availability Performance
• 84% ofQAteamsreportdelayswaitingfor services,
components,API’setc.
• 81% ofDevelopmentteamsreportdelayswaitingfor
services,components,API’setc.
• Accessto requiredsystems
• Averagenumberofsystemsneededfor dev/test=52
• Averagenumberofsystemsavailablefor dev/test=32
• Averagewaittimeto accessrequiredsystems=32days
Application
Under Test
Tester
$00.02 per callAPI Still
Getting Built
Legacy, Fragile
Database
11
13. Page
Proprietary & Confidential
13
Microservices
How Can We Combat These Challenges?
Definition Driven
Development
Continuous
Testing
Service
Virtualization
Continuous
Monitoring
Designing and building your API with a standard spec like
Swagger will encourage collaboration and speed up work across
development and test.
Make sure that a sense of ownership of “testing” and “quality” is
felt equally by the development, testing, and operations teams.
Empower everyone with tools and processes for success.
Virtualize services so that fragile, production, or 3rd Party
systems are always available for integration, E2E, and
performance testing.
Monitoring your application’s performance and user experience
pre and post production to shorten downtimes and MTTR.
15. Page
Proprietary & Confidential
15
SmartBear’s API Lifecycle
Toolset
Design
Build
Test
Deploy
Microservices
Codegen– generateclientSDKsandserverstubs
SwaggerUI–buildbeautifuldocumentation
Editor–Designswagger-basedAPIseasily
SwaggerHub
Virtualizewebservices,allowing
yourdevelopmentortesting
teamtoworkona“live”API in
parallel
ServiceV
Functional– Automatedtestingfor
SOAP&RESTAPIs
Secure– RunsecurityscansagainstyourAPIs
SoapUI Pro
SyntheticmonitoringforAPIs
preandpostproduction
AlertSite LoadUI Pro
Performloadandperformance
testsagainstyourAPIs
MONITOR
DESIGN/BUILD
BUILD/TEST
TEST
TEST
DEPLOY PARTNERS
16. Microservices
Design
Design & Build with
Swaggerhub
Document
Generate SDKs
Collaborate on the Platform
for Designing and
Documenting APIs with
Swagger
Quick Hits:
• Issue Tracking
• Versioning
• Integrate into popular
tools and platforms like
AWS, Azure, Github, &
more.
• Cloud Access or Install
On-Prem
Design new and existing APIs in an intuitive, browser-based Editor that’s
built for rapid iteration of the Swagger/OpenAPI contract. Validate and save
your design on the fly, with a hassle-free editing experience for designing
APIs that maximize consumer adoption.
SwaggerHub visually renders your API contract as a fully interactive
document for live workability, letting your end consumers know exactly how
your API will work and behave, before integrating it into their code.
Build your API’s server and client code straight from your contract in over 30
different languages. The generated code packages are highly customizable
with friendly instructions to quickly turn your API contract into functioning
code.
SwaggerHub
17. Microservices
Prototype
Deploy & Share
Virtualize
Virtualize with
ServiceV
Create and deploy
virtualized APIs in minutes
with ServiceV
Quick Hits:
• Record live REST or SOAP
call
• Import Swagger spec
Quickly mock up and design an API by importing a Swagger spec and quickly
define responses or use our powerful Wizard to start creating your API.
SwaggerHub visually renders your API contract as a fully interactive
document for live workability, letting your end consumers know exactly how
your API will work and behave, before integrating it into their code.
Replace 3rd Party, unstable, or other costly APIs in your E2E, Integration, and
Performance testing process while still retaining testing accuracy.
ServiceV
18. Microservices
Functional Testing
Data-Driven Testing
Load Testing
Test with
ReadyAPI
Create powerful API
functional and load tests in
the world’s most widely
used testing platform.
Quick Hits:
• Test SOAP APIs
• Test REST APIs
• Data-Driven Testing
• Security Scans
• Load Testing
Create functional API tests for your entire microservices infrastructure easier
than ever. With SoapUI Pro, you can scan your Swagger specs or live
endpoint to automatically generate test structures for them. Then easily
refactor your tests when any of your APIs change.
Connect to a database, csv, or generate your own test data within SoapUI
Pro to seamlessly test your web services with actual data. You can drive
names, passwords, credit cards numbers, etc. into your API to get the largest
possible coverage.
LoadUI Pro provides key insights that help you fix performance bottlenecks
in your API under load. The tool tracks in-depth statistics and parameters on
your APIs performance and presents these in an intuitive & actionable
format.
SoapUI Pro LoadUI Pro
19. Microservices
Service Uptime
Pre & Post Production
Monitor with
AlertSite
Monitor web, desktop, or
mobile applications as well
as APIs
Quick Hits:
• Monitor REST & SOAP
APIs
AlertSite makes it easier than ever to monitor your internal, partner, or
public APIs - REST or SOAP - effortlessly. Create an API endpoint monitor
natively in AlertSite, or reuse OpenAPI/Swagger definitions and SoapUI tests
to monitor complex API transactions.
Monitor internal APIs that serve your internal customers from within your
private network using our private nodes placed in your local network, data
center, or private cloud.
AlertSite
20. Page
Proprietary & Confidential
Page 20
Why SmartBear Wins
Microservices
Easy To Install & Use
Affordable Pricing
Open & Integrated
Customer Success
Reusability
The Old Way The SmartBear Way
Hard To Try & Start
Expensive To POC & Buy
Locked-Down Ecosystem
Month-long Sale Cycles
Offline Business Model
22. Page
Proprietary & Confidential
22
Microservices
Reusability Across SmartBear
Import Your Swagger
Spec Into ReadyAPI
Virtualize that Swagger Spec
so developers, testers, and
consumers have access to it
Then reuse the same testing
script across ReadyAPI for
functional and performance
testing, and monitoring.
ServiceV
SoapUI Pro
AlertSite
LoadUI Pro
SwaggerHub
23. Page
Proprietary & Confidential
UI
API
Create Great Software, Without Tradeoffs
Perform Code &
Doc Review
Collaborator
Design, Develop, &
Document APIs
SwaggerHub
DEV TEST OPS
Code
Create Automated UI
Functional Tests
(Web, Desktop, Mobile)
TestComplete Script
Run Tests On Real
Devices in the Cloud
CrossBrowserTesting
Create Web Load Tests
LoadComplete
Spec
Create Automated API
Functional Tests
(REST, SOAP, and more)
SoapUI Pro Script
Virtualize API &
Database Services
ServiceV Pro
Create API Load Tests
LoadUI Pro
Monitor Web & API Performance,
Availability, & Functional Correctness
AlertSite
Manage Manual & Automated Tests
QAComplete
Integrations …100 +
24. Page
Proprietary & Confidential
24
Microservices
Design Monitor
Develop
Test
Deploy
Swaggerhub
Collaborator
ServiceV Pro
SoapUI Pro
LoadUI Pro
QAComplete
AlertSite
CrossBrowserTesting
TestComplete
LoadComplete
The Future Of
Quality
25. Page
Proprietary & Confidential
We provide tools for development, testing, and operations teams
to create great software, faster than ever.
AccelerateSDLCWorkflows | ImproveQualityatEveryStage | RealizeRapidTime-to-Value
• European HQ in Galway, with 7 offices globally
• Founded in 2009
• Open Source Innovator (Swagger & SoapUI)
6.5M+
Users
194
Countries
22K+
Companies
TestComplete
SoapUI Pro
SwaggerHub
CrossBrowserTesting
QAComplete
AlertSite
Microservices
25
26. Page
Proprietary & Confidential
Loyal and Diverse Customer Base
Accelerated Workflows Improved Quality Realized Rapid Time-to-Value
Health
Sciences
Insurance Financial
Travel
/Hospitality
Consumer Telecom
Government
/Defense
Software Tech
Achieved100%standardizationof
OpenAPISpecacrossdevprojects
Increasedreleasefrequencyby2xasa
resultofimprovedtestautomation
Realized>$30kincostssavingsby
switching fromHP/MicroFocus
Microservices is soon becoming the default standard for building continuously deployed systems in the DevOps world. In the simplest form, a Microservices architecture is an approach to building an application as a suite of small services, each running in its own process and are independently deployable. These services may be written in different languages and may use different data storage techniques. While this results in the development of systems that are scalable and flexible, it needs a dynamic makeover for the testing team. This necessitates that the testing team builds a deep architectural and design understanding and re-invent traditional test techniques.
So to the WHY of Microservices, I’d point to the following –
A Microservices approach can accelerate time to market. You can safely increment individual components without (necessarily) impacting other components. Granular changes are much easier to build and test, and these can deployed safely.
Secondly, with a microservice architecture, scaling decisions can be made at a more granular level, allowing more efficient system optimization and organization. You can tailor where to apply resources based on the needs of a smaller, more granular component.
Microservices make it easier to assign specific capabilities to individual teams so they can focus on the particular scaling and availability requirements of their system in-the-small, and have confidence that their decisions will have the appropriate impact at the larger scale.
Complexity Localization. Microservice-based architectures allow thinking about services as black boxes. Owners of the service need to understand the complexity of only what is within their service. Other service owners need to know only what capabilities your service provides, without having to worry about how it works internally. This compartmentalization of knowledge and complexity can help you create and manage larger applications more effectively.
And finally, since microservices are distinct entities unto themselves (accessible via APIs), they can be reused in other applications and systems without negatively impacting the original use case. This reusability allows improved leveraging and management.
It’s time to talk a bit some of the challenges microservices teams face – specifically, in the challenges associated with growing system complexity, test automation, component availability, and system performance.
So let’s say you’ve successfully componetized your application –going from one monolithic application to 10 discrete ones that interact with one another via APIs. One things that its easy to underestimate is the complexity of that interoperability and the exponential increase in communications. You need to know what services exist, what they do, and their dependencies. Without that, your system becomes fragile. (Tooling will take an increased importance here. Smartbear’s SwaggerHub can be an important facility to help document and manage dependencies.
Test automation can be a huge challenge. It’s pretty simple, even with open source, to test on a single API. But let’s say you have 50 services that interoperate with a myriad of dependencies. What happens if we change service 14? How do we string together tests to automate that entire chain. So while individual services may be easier to understand and manage, the application as a whole has significantly more moving parts. Since there are more components and those components have more interconnections, the associations between components becomes a complex architectural problem in their own right.
The market research firm Voke did study last year on virtualization, which I thought was spot on. What it points to are the staggering delays caused by lack of independence. You can fully test unless you have access to everything, and it takes 32 days on average to get access to the required systems.
Virtualization is important for Microservices testing because the availability of components for testing is quite applicable here. Back to that example we used before: Let’s say you change service 14, and it has dependencies on services 11, 22, 33 and 45. Let’s also say that service 22 is a third party service you don’t control and that service 33 is in development. You need to be able to virtualize those services so that you can complete a valid test.
And performance can be an Achilles heel. Performance engineering should be baked in to the development process – both at the individual service level and at the system test level. You’ve got to be able to model large scale utilization easily and economically.
This starts with testing the performance of each individual Microservice and interconnected Microservices. As each Microservice operates in its own process space, with interconnected Microservices, performance degradation is inevitable due to a domino effect. Determining which service performance is not meeting service levels can become very tricky. The best way to build a safety net, particularly for a new implementation, is through continuous monitoring in production where an application that mimics users constantly checks the application for performance issues.
-Cigna Increased release frequency by 2x as a result of improved test automation
-Bonotel Achieved 100% standardization of OpenAPI Spec across dev projects
-Dominos Realized > 50% cost savings by switching from HP/Micro Focus