Are you considering migrating from monolithic applications to microservices on the cloud? Check out this deck to understand the differences between monolithic applications and microservices, why microservices is a better option, and learn about cloud testing.
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Testing the Migration of Monolithic Applications to Microservices on the Cloud
1. ~ nagarro
Testing the Migration of
Monolithic Applications to
Microservices on the Cloud
The why and how!
2. Agenda
Here's w hat we learn
1 Monolithic vs. Microservices
- What is yours?
2 Monolithic applications
- Do you face these challenges?
3 Microservices
- Why is it a better option
4 On cloud, finally?
- See how you can deploy applications on the
cloud
S Still not sure?
- Business usage advantages with microservices
6 Key differentiators in
migrating to cloud
7 Cloud testing
- What are the focus areas?
8 Cloud testing
- Types &tools
3.
4. Monolithic applications
• Comprises single1 highly coupled
monolithic instances running on on-
premise servers to manage
operations
• Any single-component change will
require building and testing the entire
application
5. Microservices
• Comprises multiple, loosely
coupled microservice instances
running on cloud and API
gateway, configured to handle
operations
• Easy to identify the impact of
any change and test impacted
areas
7. Entire application goes down
• Even a small update requires redeploying the
entire application
• Extensive testing is required post
redeployment, as the impact is not clear
Barriers in new
techno oav adootin
• Huge barriers in adopting new frameworks
and technologies
Longer time to deploy
• Tight coupling between components makes it
difficult to deploy regularly
• Start-up time is high, as it loads all modules
• Continuous deployment is a problem with
complex monolithic applications
Inability to scale
Technical debt
• Debt gets accumulated over time, making future
development difficult
• Inability to scale individual components to meet
increased demand
• Not scalable when multiple modules have
conflicting resource requirements
8.
9. Highly available
Each service is scaled up independently and
each service instance is a Docker container
Continuous
deployment
Continuous deployment services are
easier to deploy, and changes are
tested as soon as possible
Easier to develop
Individual services are much easier to
develop, understand, and maintain
Small applications
Each microservice is a small application
with business logic implemented
L
.
I
-
Each service has its own database schema
rather than sharing a single database to
ensure loose coupling
Services consumed
APls are exposed by microservices,
which are consumed by other services
Own DB schema
The application is split into a set of simpler
web applications, facilitating easier
deployment across devices
10.
11. Deployment architecture
• Packaging: Instead of packaging all the
related WARs in one file, split them into
independent WARs
• Containers: Deploy each WAR in its
container (e.g., Docker container)
• DevOps: Manage each WAR independently
through an automated pipeline (continuous
delivery: build, deploy, and manage
independently)
Service model selected: Saas
(Software as a Service)
• Pay-per-use
• Quick to deploy
• Zero infrastructure
• Seamless upgrades
• Backups & DR
• No learning curve
• Access data from anywhere
• Delivered as a service and
managed by the vendor
..--------- SaaS ------------.
- - - - - - PaaS -----~
laaS
HoSl<d ,pp1,ca1J0ns/app, ~lopmtnt toolt Opor>tong Systtms SOIVtfS W SIOlilgt Nttwo1k1"9
data:~ ffli"il(Jf;'mPnl firewafls/security
business aNlytics
Oit.i ctnt11 physmil
pl•ntlboikliog
13. Any changes made can be
deployed and validated quickly
• Highly suitable architecture ideal
for changing requirements and
business
New functionalities can be added
easily along with the existing ones
• To avoid downtime, breaks the
application into smaller pieces
• If one service fails, other
applications are still available
Failed part of an application can
be rectified with minimal
downtime
• Accommodate workloads by
scaling up or down the nodes in
cloud
• Efficient, since resources are not
wasted on unrequired services
• Asynchrony, DB optimization,
loose coupling, and partitioning
should be considered
14. System reliability
ensures application uptime for a
sustained period without any
failure
Improved
time-to-market
• Microservices help achieve
improved time-to-market without
compromising on quality
standards, ensuring quicker
customer delivery
• A fault in one microservice will not
have an impact on any other
microservice
• Only a small part of the
application is impacted instead of
the entire application going down
15.
16. Pay-per-use and self-
service provisioning
No human interaction
Multi-platform
testing
Multi-tenant
Supervised pooling of
storage, p rocessing,
mem ory, virtual
machines
Dynamic Scaling:
Rapid scale in and
scale out
Provide services for
which the user is
paying
17.
18. Multi-tenancy
• Application upgrades to few tenants
• Validate app design for different
customers/domains
• Isolate data based on privileges and
authentication
• Validate tenants' use of resources as
per requirements
• Validate upgraded instances and
old instances
Disaster Recovery
• Test, measure, and update BCP
periodically
• Run simulations and evaluate
the team's readiness
Microservices Testing
• Validate each service independently
• Validate the different pieces of the
application
• Validate on multiple environments
• Use canary testing (Al is used to
automate)
P vi ionin Testing
• Self provisioning
• Dynamic provisioning
• Provisioning of new services when
new users sign up and vice versa
• Monitor test results to update
BCP over time
• Validate instances restore
automatically during failures
FOCUS AREAS
OF CLOUD TESTING
..
19. Synchronization Testing
• Verify device to device
synchronization issues
• Recovery situations when sync is
disrupted
• Rollback scenarios in case of failures
FOCUS AREAS
OF CLOUD TESTING
Performance & Security
• Verify how system behaves
under heavy load
• Verify scaling up/down as per
load
• Verify security of the systems
•
•
• Verify data schema as per new
application
• Verify checks like
Portability Testing
• Validate proper installation of
product
• Validate UI of application in
different browsers
• Validate application in different
environments
• Data integrity and data flow
• Data consistency and data
volume
21. • Component testing
• Microservices testing
• Data migration testing
• Usability testing
• Integration testing
• Licensing testing
• Accessibility testing
• i1 SN & L10N
Testing
on cloud
Non-functional
testing
• Performance testing
o Load/stress testing
o Latency testing
o Capacity testing
o Browser performance
• Security testing
o Application testing
o Network testing
o Compliance testing
Interoperability testing
• Compatibility testing
• Multi-tenancy testing
• Disaster recovery testing
o Failover testing
o Failback testing
Availability/ continuity
testing
Elasticity
• Synchronization
• End-to-end testing
22. Testing tools
(~
CloudTest®
Rapise®
Nessus
vu1ne1abttlty scanner
• Test connectivity with the cloud
• Upload and download data to cloud library
• Test automation for web, mobile, and desktop
• Automated recording: build a reusable object
repository and automated test script
• Allows adding verification points to test scripts
• Security scanning tool, raises alerts upon
discovering any vulnerabilities
~ TimeShiftX
/
APACHE
JMeter··
• Travel in time, test with ease
• TimeShiftX creates virtual dates and times,
simplifying time shift testing
• Simulate real-user behaviors and
performance/load test applications
23.
24. Functional testing
1/ 2
Microservices
• Unit testing
• Integration testing
Component testing
Contract testing
End-to-end testing
Integration
• Integration of modules
• Integration of software
and hardware
• Integration between
different components
Data migration
• Data consistency
• File type and size checks
Volume consistency
Driver testing
Component
• Effortless navigation of
the site
• Integration between
services/components
25. Functional testing
2/2
Accessibility Licensing
• QA will test the product and
its compIiance with the
section 508 requirement
standards
Verify all possible ways of
navigation
• Most pages will also be
readable via assistive
technology
Documentation should be
available in electronic format
Tests pertaining to the
licensing of the base
product and its different
features
Ensure only licensed
functionality is available
Devices should meet
certification requirements
for the network, protocol
compliance, device drivers,
app store submissions, etc.
Usability
• Effortless site navigation
• Easy interface
• Faster pickup
• UI checks
• Font and font size
• Application logo
• Warning/error messages
• UI responsiveness
• Minimize and
restore functionality
i18N &L10N
UI element and label
alignment
• Line wrapping
Word breaks or punctuation
Alphabetical sorting
Layout and text direction
27. Performance
Performance
Load/Stress
lliiiif T .
lliiiid est1ng
Capacity
Testing
Browser
Performance
Measuring the optimal response
time while the system is
subjected to increasing load
Monitoring the time taken to
move data messages between two
points within the cloud network
Benchmarking the maximum
amount of traffic that can be
handled
Validating the compatibility of
different browsers with the
overall system
• Speed: Evaluates the system for good
speed even under different loads
• Scalability: Checks the variation in
response time/scalability as the load on
the system varies
• Reliability: Validates whether the app
is reliable under prolonged periods of
high user traffic
• Stability: Evaluates if the system is
stable under heavy concurrent user
load
28. Security
Security testing
• Identification
o Password management
o Provisioning
o Registration
• Access management
o Authorization
o Authentication
• Plugins & Extensions
• Web Interfaces (SQL Injections)
• APls
• Unauthorized access to data
• Data leakage
• Multitenancy
• Connectivity to cloud from on-
prem or network
• Open ports
• Interfaces
o Networkservices
o Cloud interface
o Mobile interface
Best practices
• Data confidentiality
• Data integrity
• Accountability
• Continuous scanning
• Enable and encrypt CloudTrail
o Log file
o Track API calls
• Enable MSA (multi factor
authentication)
• 1AM policies
• Strong password policies
• Alert notifications through
Amazon CloudWatch
29.
30. Ability testing/Cloud-specific testing
1/ 2
Elasticity
• Automatic provisioning
of computing power and
memory
Dynamic scaling with no
loss of data, and end-
user connectivity
Disaster Recovery
• Failback plan
Failover plan
Availability
Business continuity
• Self-healing ability
• Upgrade testing
• Rollback to stable
version
Data Migration
• Rigid failures
Data consistency
Access controls
Multi-tenant security
• Availability
• Business continuity
Synchronization
• Sync across services and
devices
Recovery situations
when a sync is disrupted
Restart of services
31. Ability testing/Cloud-specific testing
2/2
Compliance
• Licensing of the base
product and its different
features
Only licensed
functionality is available
• Devices should meet
certification
requirements for the
network, protocol
compliance, device
drivers, app store, etc.
Compatibility
• Cross-platform
compatibility is ensured
Compatibility is ensured
across different
generations of
devices, versions, mobile
devices, operating
systems, etc.
Interrupt
• Validation of application
behavior against all
types of interruptions
Network outage
Graceful shutdown
• Abrupt shutdown
Graceful stop of services
Reboot hosts
Kill processes
End-to-end
• Validation of end-to-end
functionality
Validate SaaS/cloud
services functions
Automated suite
compatibility
Links and page layout
are working as expected
32.
33. 01 Scalability: Dynamic scaling up and down of resources as per need
02 Flexibility: Add and remove different components as required
0 3 Independent: Microservices can be written with different technologies
04 Agility: Continuous development and continuous testing is achieved
05 Responsive: Response downtime is minimized