Overview
Distributed Load Testing on AWS automates software applications testing at scale and at load to help you identify potential performance issues before application release. This AWS Solution creates and simulates thousands of connected users, generating transactional records at a consistent pace without the need to provision servers. This solution also allows you to run tests across multiple AWS Regions.
Benefits
Test the load capabilities of your software using independent Amazon Elastic Container Service (Amazon ECS) on AWS Fargate containers.
Customize your application tests by creating custom JMeter scripts.
Schedule load tests to automatically begin either at a specified date or on recurring dates.
View live data for a running test using this solution's web console.
Technical details
You can automatically deploy this architecture using the implementation guide and the accompanying AWS CloudFormation template for AWS Regions.
Step 1
An Amazon API Gateway API invokes the solution's microservices (AWS Lambda functions).
Step 2
The microservices provide the business logic to manage test data and run the tests.
Step 3
These microservices interact with Amazon Simple Storage Service (Amazon S3), Amazon DynamoDB, and AWS Step Functions to run test scenarios and provide storage for the test scenario details.
Step 4
An Amazon Virtual Private Cloud (Amazon VPC) network topology contains the solution's Amazon Elastic Container Service (Amazon ECS) containers running on AWS Fargate.
Step 5
The containers include a Taurus load testing Open Container Initiative (OCI)-compliant container image which is used to generate load for testing your application’s performance. Taurus is an open-source test automation framework. The container image is hosted by AWS in an Amazon Elastic Container Registry (Amazon ECR) public repository.
Step 6
A web console powered by AWS Amplify is deployed into an S3 bucket configured for static web hosting.
Step 7
Amazon CloudFront provides secure, public access to the solution’s website bucket contents.
Step 8
During initial configuration, the solution also creates a default solution administrator role and sends an access invite to a customer-specified user email address.
Step 9
An Amazon Cognito user pool manages user access to the console and the API Gateway API.
Step 10
After you deploy this solution, you can use the web console to create a test scenario that defines a series of tasks.
Step 11
The microservices use this test scenario to run Amazon ECS on Fargate tasks in the AWS Regions specified.
Step 12
In addition to storing the results in Amazon S3 and DynamoDB, the output is logged in Amazon CloudWatch once the test is complete.
Step 13
If you select the live data option, the solution sends the CloudWatch logs for the Fargate tasks to a Lambda function during the test, for each Region in which the test was run.
Step 14
The Lambda function then publishes the data to the corresponding topic in AWS IoT Core in the Region where the main stack was deployed. The web console subscribes to the topic, and you can see the data while the test runs in the web console.
- Publish Date
"At Calabrio, our mission is to help contact centers work smarter, faster and better. We needed to design a new, high-performing feature for a major customer -- fast. We used Distributed Load Testing on AWS to test our system’s performance at scale, without the need for costly enterprise testing licenses or writing custom orchestration code for open-source tools. With this AWS Solution, we designed and executed tests at six times the expected traffic volume and launched the new feature successfully and ahead of schedule."
Related content
Whether you’re a private enterprise or a public sector service, you need confidence that your application can scale with increased user loads. Distributed Load Testing on AWS allows you to automate application testing, understand how it will perform at scale, and fix bottlenecks before releasing your application.