Minimize Downtime in Production with Cloud-Based Distributed Load Testing
By Chris Churilo / Aug 29, 2019 / InfluxDB Cloud, Developer
We all know that downtime costs money potentially thousands of dollars per minute for large enterprises not to mention the impact on brand reputation and customer satisfaction. While often overlooked, load testing is one way to help mitigate downtime risk by ensuring that your application is ready for production before deployments.
What is load testing?
Load testing checks an application’s ability to perform under anticipated user loads before it goes live. This is done by using sets of data that act as instructions for performing tests on a given system to determine the system’s behavior under normal and anticipated peak load conditions. The more realistic the simulation, the more likely you’ll catch bottlenecks that lead to a bad user experience.
Simulating real-world workloads through load testing enables answering questions such as: How many simultaneous users or transactions can a website, application, or system handle? Where are the bottlenecks? What’s the breaking point?
Cloud load testing platform with new test-scaling capabilities
Cloud load testing collects valuable metrics about the performance of the application being tested. Common metrics collected by cloud load testing tools include concurrent users, response time, latency, network throughput, transaction rate, passed transactions and failed transactions. One company that has emerged as a leader in cloud load testing, with support for leading cloud providers, is Tricentis, which offers Tricentis Flood (which Tricentis acquired when it bought Melbourne, Australia-based Flood IO in 2017).
Tricentis Flood has brought a new approach to the traditional load testing space. It is a cloud-based distributed load testing platform that lets you run globally-distributed performance tests with popular open source tools (including JMeter, Gatling and Selenium) and allows scaling out flood load tests for maximum concurrency (millions of concurrent users) and maximum throughput at any given time. You can integrate with your own services using Flood’s API or share results from Flood’s reports with your team in real-time.
Unlike traditional load testing services, Flood allows you to run as many users and tests as you need, for as long as you like, while it handles the infrastructure and provides aggregated, real-time reporting. Flood’s platform collects and aggregates real-time data from the tests conducted by their customers in InfluxDB Cloud. Flood’s distributed grid infrastructure was built with a shared-nothing architecture that lets you scale horizontally beyond the capabilities of other load testing services on the market today.
The journey to building Flood’s platform began with recognizing the need for a purpose-built time-series database. In fact, choosing InfluxDB Cloud, the managed edition of InfluxDB time series platform, freed Flood to offer load testing with no limits on the number of tests or users and no test launch delays, plus providing real-time views into results as tests ran.
Why Tricentis Flood chose InfluxDB Cloud for its cloud load testing platform
The designers behind Flood wanted to provide a high-performance load testing service with real-time metrics and no test launch delays. With their existing architecture, it would take five to 20 minutes to start a 30-node grid. They wanted their design to be scalable to accommodate more users and larger tests. Since their launch, they had also been maintaining a single free grid node that lets everyone run short five-minute flood tests.
The single-node would get hammered daily beyond recognition due to a combination of free accounts running suspect-looking tests, or just normal wear and tear of a few hundred tests hitting it daily. Their support tickets started to feature shared-grid-type questions and issues more often, and they regularly found themselves replacing the shared grid with a fresh node.
The shared grid also added artificial delay to customers waiting for tests behind other customers.
Flood’s first-generation design used Elasticsearch. Each grid (the infrastructure that the tests run on) would operate in a cluster of 30 nodes. Each node ran Elasticsearch and they would pull that information from those grids. This early design presented several challenges:
- That design made it difficult to scale horizontally.
- Data from Elasticsearch clusters wasn't visible to users in real-time.
- Elasticsearch was not designed for ingesting and storing time-series data.
Enabling enterprises to release software in production with confidence
Tricentis Flood adopted InfluxDB Cloud for its high write throughput, low on-disk storage requirements, and low memory overhead. InfluxDB and its native stream processing engine Kapacitor work together in Flood’s platform to store, collect and aggregate time-series data in real-time.
The new design using InfluxDB Cloud helps Flood’s solution achieve its goals of being a distributed, loosely coupled, shared-nothing, load-test platform. The system processes their cue asynchronously without any delays and runs all the points up into InfluxDB Cloud, which processes around 60 write points/sec.
<figcaption> InfluxDB Cloud and Kapacitor power Tricentis Flood’s platform.</figcaption>
Like Flood’s previous solution, the current one has application servers sitting in a central location, but instead of worker servers pulling information from the grid nodes themselves, the grid nodes are actually pushing information up to a proxy service that the team called “Drain” and that was written in Go.
Cloud load testing for teams across the DevOps pipeline
Tricentis Flood is helping teams test, analyze and improve the way their applications scale with seamless integration across the DevOps pipeline. With Flood, performance and load testing are no longer restricted to experts. Flood’s straightforward and open approach allows the entire development team (spanning performance testers of all skill levels) to measure and improve performance.
<figcaption> Load testing platform enabling provisioning and new load-test infrastructure on-demand in as little as three minutes.</figcaption>
Two salient features that Flood brings to the load testing space are:
- Simple and flexible deployment without the complex overhead and high cost.
- Technology partnerships with the most popular open source frameworks, cloud providers and tools.
Powered by InfluxDB Cloud, Flood has proven solutions for load testing apps across various industries and provides solutions for testing even the most difficult of applications. Whether for load testing a single URL, simulating realistic browser behavior with Selenium, or executing large concurrency and volume with JMeter and Gatling, Flood provides a powerful and affordable platform for scaling load tests on demand. To date, more than 20,000 companies have used it to build applications that scale and to cultivate a culture of performance.
Learn more about Tricentis Flood’s solution and how it was built on InfluxDB Cloud.