Designing High-Availability Systems

Most of the time when a software is developed, the system is designed to withstand an specific amount of users. However, usually the platform will be required to handle unexpected amount of traffic. For instance, if a company make a new campaign, the peak load could change from 100 hundred concurrent users to thousands of users. If the system does not serve correctly the new load, you could lose thousand of dollars on campaign money, on new and former users.

When designing and implementing robust software, architects require tools to objectively analyse quality attributes. Quality attributes such as resilience, responsiveness and scalability need to be tested. Load Testing allows us to analyse the system during normal and peak conditions. There are several Load Test strategies that must be done in order to analyse a system correctly and optimised for the expected an unexpected user load.

Cloud computing infrastructure has born to allow us to face these issues effectively. However, it requires to be correctly used, so you spend your money wisely, applying the appropriate clustering strategies. Clustering challenges range from finding the appropriate resources assign to each machine to maintaining data consistency. Each of this challenges  can be analyse by using Load Testing before putting the system into production.

Load Testing allow us to fully understand the challenges arise during high loads and clustering the system. The main goal of Load Testing is to simulate an specific numbers of clients using the system concurrently and measure how the system will respond to it. Is important that we use the testing to optimize the system and plan contingencies when the load is higher than expected. The challenges when load testing a system start by simulating multiple human users at the same time, and finalize  by analysing the data produced by the test to take inform decisions.

In general is a good idea to design a software having many of the high-availability key features in mind. Load Testing during the complete development process from design up to putting the system into production. This will give you peace of mind that your system will behave correctly no matter how many clients will use your system.

If you need consultant services designing High-Availability Systems and/or load testing please contact us at