Amazon Web Services offers customers a scalable, distributed, and serverless architecture to deliver a load testing tool for web application performance testing. This solution automatically launches and configures containers running on Amazon Fargate to help you easily create and simulate thousands of virtual users generating specific number of requests payload per second without having to provision servers. This solution aiming to evaluate system potential performance bottleneck and infrastructure capacity are correctly planned ahead of application official release.
You don't need to manage and operate cloud compute resources. According to the number of concurrent requests that you configured on the UI dashboard, the Amazon ECS Fargate will allocate, schedule and scale necessary resources.
Distributed Load Testing Platform includes an Amazon CloudWatch dashboard that displays the output of all tasks that are part of your automated test in near real time.
Open Source & Customization
All modules including load engine, test framework, test schedule logic and test dashboard are open-sourced, which means you can easily integrate, customize the solution based on your specific needs.
The Total Cost of Ownership (TCO) of the solution is lower than SaaS products of the same kind. You only pay for the used cloud resources on demand.
The diagram below presents the architecture you can automatically deploy using the solution's implementation guide and accompanying Amazon CloudFormation template.
The solution uses Amazon CloudFormation to deploy the distributed load testing platform. This solution is consist of the following modules:
- A test scheduling module based on Amazon API Gateway, Amazon Step Functions, and Amazon Lambda. The module leverages Amazon Step Functions to orchestrate the test process and uses Amazon Lambda to trigger Amazon Elastic Container Service(Amazon ECS) Fargate to start the container cluster to execute the test scripts in parallel.
- A load engine module based on Amazon ECS Fargate. The Amazon ECS Fargate is responsible for creating, scaling, and deconstructing the container cluster resources. After a task of a cluster is completed, the test results will be stored in Amazon S3 in .xml format for further processing.
- A web console module based on Amazon Amplify, Amazon S3, and Amazon CloudFront.
- A storage module for storing test data, based on Amazon DynamoDB and Amazon S3. After all the specified tasks are completed, the test results will be aggregated and stored in Amazon DynamoDB. Amazon CloudWatch will be used to display the corresponding metrics.
Note that when launching Amazon CloudFormation, you need to enter your own registered domain name (CNAME) to associate with Amazon CloudFront. After the solution is deployed, you can access the web console through the CNAME to create test cases, monitor the test process and view test results, etc.
In addition, the solution creates an Amazon Virtual Private Cloud (Amazon VPC). The VPC provides a safe, reliable, flexible, and configurable virtual network for Amazon ECS Fargate container clusters.
The solution is based on an open-source test automation framework called “Taurus”. Taurus is used to generate load to test the performance of your applications. During the deployment, the solution will pull a Docker image that contains Taurus and its dependencies (https://gallery.ecr.aws/p9r6s5p7/dlt) from Amazon ECR Public Gallery. In consideration of security and network performance, you can also pull and store images into your own Amazon Elastic Container Registry(Amazon ECR).