Here at Flood we aim to provide a flexible, scalable, and secure platform to enable our customers to perform their load tests successfully and with a high degree of accuracy.
A load test is only as good as the platform it's being run on and we'd like to show you how our platform works from a Network Topology perspective.
This article will focus on describing and expanding on the diagram below:
The Single Page Application developed using Ember JS and forms the main User Interface for the customer for the creation of Grids, running and configuring Floods, analysis of Flood metrics via the execution dashboard, amongst other functionality.
The SPA and the Flood API are both load balanced using Elastic Load Balancing (ELB) which provides scalability and availability to support our customers at peak usage periods.
The core application stack consists of Application Servers, Worker Servers, database and Cache server which play a major role in the scalability and flexibility of the platform.
Each of these components play an important part:-
i. Application Servers house all of the content and functionality of the Flood Web application (SPA) visible via the user interface to our users via a load balanced ELB. ii. Worker Servers are in charge of the coordination of Grid nodes used to run Floods. iii. Database Servers house all the data for the SPA as well as all possible metric data for each Flood. It has a connection to the InfluxCloud specifically for managing important Time Series Data. iv. Cache Servers are used for caching of non-dynamic content for the SPA in order to provide a fast user experience to end users.
The InfluxCloud service provides a production-ready platform that includes InfluxDB Enterprise, Chronograf, and Kapacitor Enterprise on Amazon Web Services EC2 infrastructure. Flood uses InfluxCloud as a backing store for the large amounts of timestamped data generated for each load test.
The Grid Nodes are the workhorses of the Flood platform - they do the heavy lifting of generating load against a customer's target endpoint. Load testing-related metrics such as throughput, user concurrency and response time data are fed back to our Worker Servers which process this data in a readable format for our execution dashboard.
Vault is a tool for securely accessing secrets. A secret is anything that you want to tightly control access to, such as API keys, passwords, or certificates. Vault provides a unified interface to any secret, while providing tight access control and recording a detailed audit log.
The Amazon AWS S3 service is used for storage of all Test Assets. This includes, archived results for every Flood, your associated test plan configuration, and actual test scripts/folders/add-ins that are uploaded onto the platform to be used in a Flood.
Amazon Simple Notification Service (SNS) is a flexible, fully managed pub/sub messaging and mobile notifications service for coordinating the delivery of messages to subscribing endpoints and clients.
Flood uses SNS for all aspects of Test Control and this includes:
Test Start/Stop for every Grid node
restarting and shutdown of Grids
realtime alerts sent to the user and displayed on the dashboard
The platform described above essentially allows the generation of load via the open Internet using HTTPS against a publicly available endpoint such as a website or a publicly accessible API.