What alternatives exist? First of all let's look at why k6 + AWS Timestream could be a good solution.
There's a good (although written by k6!) comparison of k6 against other load testing tools here.
The three key points for me are:
- It's performant. As load tests get bigger they require more computing resources. This is expensive to orchestrate, costly, and environmentally unfriendly.
- I can use existing Javascript libraries. There's a broad ecosystem of Javascript libraries and they allow us to reproduce browser behaviour accurately - for big tests they're typically end 2 end acting as browsers would do.
- It's supported by Grafana.
A lot of businesses use AWS heavily. For good reason: it provides good tooling, it's well understood and supported, and allows huge scaling.
Whilst Timestream is not as mature as other AWS products (e.g. DynamoDB) Timestream is dedicated to storing Timeseries data. This means the burden of spinning up and maintaining the huge, but short lived infrastructure required for load testing is passed to AWS - and to a service designed to gather metrics from large numbers of users (or virtual users).
Consider alternative solutions if:
- You have support to push to another k6 output.
- You have an existing load testing solution.
- You have teams that prefer to use another language or a UI.
Artillery has many of the same benefits as k6, and I do particularly like:
- Support for running on lambda. However it's currently not possible to add plugins when running on Lambda.
Locust looks to be a great solution for teams comfortable with Python or where there are Python libraries useful for a load test. It comes with a UI and is quite easy to get started running distributed tests - including an open source Terraform module.
Jmeter has a large number of performance testing experts who are comfortable with its use. It was first released in 1998 so is battle-hardened and well understood. Since scripts are generally built using a UI, it can be more suited to teams who do not necessarily write code.
InfluxDB has solutions that go from running it yourself, to running it as a pay-as-you-go serverless solution. It has multiple integrations and allows you to run SQL against your results.
TimescaleDB looks to be very performant, cost effective and easy-to-use but does not currently have a serverless solution. They published some interesting results in Dec 2020 showing much better performance results that suggests it would be a better choice for larger scale tests.
With Javascript and AWS being so popular, using k6 and Timestream should be a great starting point for many teams.