Performance Testing of Large Scale Distributed System
Traditionally performance testing approach
usually follows Identification of Key Scenarios, Setting up the Load
Environment, Designing the Scripts, Generating load, Monitoring and at last
Analysis and Reporting. It works for
most of the system but it is completely a different ball game when conducting
performance testing of large scale distributed system. In this article, some of the key
characteristics and challenges will be discussed for performance testing of
large scale distributed system.
Key Characteristics |
|
High
Volume |
»
Terabyte of transactional
records in database »
Network throughput in gigabits
per second |
High
Transactions |
»
Millions of transactions per
second from end users »
Millions of transactions in
database due to few triggers (e.g. large report generation due to batch
processing) |
High
Concurrency |
»
Huge user base accessing
simultaneously (e.g. Facebook) |
Geographically
Distributed |
»
Traffic from all over the
world |
High
availability |
»
Huge revenue loss and
complaining customers due to unavailability |
Huge
Data Analytics |
»
Big data, data warehousing |
Key Challenges |
Proposed
Solution |
High
cost for test environment setup |
»
Production or staging
environment »
Scaled down environment |
High
cost for load generation environment |
»
Cloud based load generation
tool |
High
license cost for tools and utilities |
»
Open source load generation /
monitoring tools »
Use pay per service if number
of runs are less |
Production
like environment configuration |
»
Use CI tool like Jenkins for
automatic build and deployment |
Configuration
consistency for large number of nodes |
»
Automatic validation of
configurations before and after the execution »
Take restore point and roll it
back after the performance run |
Population
of high volume of test data |
»
Copy production data and mask
it »
Alteration of DB volumes »
Use tool like database
benerator, dbmonster »
Use historic data |
Simulation
of realistic load |
»
Identify key scenarios and
usage patterns from log files, market research, BA etc. »
Generate load from different
geographies »
Baseline response with CDN and
without CDN |
Penetrating
the system complexity, touching all system nodes and database tables |
»
Understand system architecture »
Manually walkthrough the
scenarios and watch traffic on different nodes and database tables »
Detail analysis of application
logs »
Understand load balancer
strategy |
Identification
and testing of failover scenario |
»
Test the failover scenario
separately during load condition |
Third
party interactions |
»
Simulate using stubs |
Monitoring
of large number of disparate systems |
»
Use diagnostic tools like
AppDynamics, DynaTrace, HP Diagnostic, Glassbox |
Result
collation and analysis |
»
Automatic result collection
and collation »
Collection of built-in anti
patterns for quick analysis »
Knowledge base on historical
failures or bottlenecks |
Comments
Post a Comment