3 ms·
Building systems that can scale efficiently requires careful design and implementation. I have seen teams relax the efficiency requirement and manage to handle
by vinay_ys 4y ago
Building systems that can scale efficiently requires careful design and implementation. I have seen teams relax the efficiency requirement and manage to handle high load by pre-scaling-up the provisioned capacity of their systems many hours in advance of an anticipated traffic load. This is obviously very wasteful of resources, but also it makes your system brittle, non-resilient. An unanticipated spike in load that stresses the system beyond its provisioned capacity will cause the system to overload and crash/jam-up.
So, rather than testing if your system can handle high load when your system is pre-scaled, testing if your system can continue to provide good throughput even when under heavy load is a better test. Then, if your system is designed to auto-scale in an elastic cloud, testing fast auto-scaling of your systems to see if it increases the good throughput dynamically is a better strategy.
Load testing should be about ascertaining the resiliency, scalability and efficiency characteristics of your system architecture and deployment setup.
Some definitions:
1. A system is said to be resilient if it can sustain the good throughput even when under load excess relative to available system resources.
2. A system is said to be scalable if it can quickly respond to increasing load by scaling up its provisioned resources and scale-up its good throughput.
3. Good throughput is the throughput (request/sec, concurrent user sessions etc) of useful work done with acceptable performance characteristics – ie., latency curve at different percentiles is acceptable.
4. Efficiency of scalability is the ratio of increase in good throughput to increase in provisioned resources.
5. Efficiency in general is the concurrent user sessions or requests/sec per node of the provisioned system.