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

Popular posts from this blog

Performance Test Run Report Template

Bugs Management in Agile Project

Understanding Blockchain