A needle in the haystack: optimizing cloud configurations for price-performance
How to find best cloud configurations to minimize cost and maximize performance using automated load testing and AI.
The cloud offers an unprecedented possibility in selecting the best infrastructure services for your applications. However, navigating the complexity of cloud services and selecting the right options to achieve maximum performance at the right cost is problematic.
As of 2019, AWS has 175 EC2 instance types, each one offering a different mix of CPU and memory size, CPU model and speed, not to mention the various flavors of EBS block storage available. What is best: high-memory or high-cpu instances? Few high-speed Intel CPUs or more lower-power AMD or ARM processors? What about EBS storage options offering guaranteed IOPS, are they worth their price?
We present the results of a study where we tackled the problem using automated performance tests and AI to smartly navigate the sheer number of cloud configurations. The goal was to achieve maximum application performance with minimum cloud costs.
The findings are interesting: price-performance savings of 40% to 70% are possible. We found some unusual and counter-intuitive configurations that can provide higher performance or lower cost than popular or AWS suggested choices. We review current practices used in cloud rightsizing and show why they might not yield optimal configurations.
Stefano is a passionate manager based in Italy who leads the Akamas vision for performance optimization powered by machine learning. Prior to his role at Akamas, Stefano led the Research & Development business unit at Moviri, focusing on creating innovative IT performance optimization products. Before that, He delivered dozens of successful capacity and performance management consulting projects at Moviri for major national and international enterprises. He has presented several talks at the Computer Measurement Group international conference and in 2015, He won the Best Paper award for his contributions to capacity planning and performance optimization of Java applications.