Public cloud bills can add up quickly. As you develop more cloud native applications and migrate additional legacy workloads to cloud, the complexity of managing the costs of your overall cloud environment increases exponentially. Need help with where to start identifying potential savings opportunities? In this ongoing blog series, we’ll explore best practices designed to help lower your Amazon Web Services (AWS) spend. We’ll provide you with tips and best practices to optimize your cloud environment.
Using current-gen instance types
This is Part 1 of a two-part best practices guide covering the advantages of using current generation AWS instance types to ensure you’re not paying more money for lower performance. Part 1 focuses on the performance and cost savings advantages of current generation instances, while Part 2 walks through an example of how AWS Config can be used to automatically find and report on which instances are running on outdated types.
AWS has many families of EC2 instance types, with each family optimized for specific workload performance targets. Instance families provide optimization for processor intensive applications, applications that require large amounts of memory, applications that require GPU processing like machine learning, or those that have heavy I/O requirements. Within each family, there are many different instance types varying in amount of CPU, memory, I/O capacity, and so on.
As technology evolves, AWS continually makes improvements to the underlying infrastructure powering its cloud and introduces new, more efficient instance types optimized for various workloads. For example, m1.large instance types are replaced by m3.large, then m4.large, m5.large, and so on. In many cases, the CPU and memory provided by the updated instance type remains the same. Even so, performance of the newer instance type can be much greater than the old one it replaces as underlying hardware and software at AWS is optimized. In many cases the newer instance type also costs less!
This means that if applications continue to run on old instance types, you’re paying more money for less performance!
The concept of paying more for less can have additional meaning if your workload is orchestrated in a way that instances are started, processing occurs, then the instances are shut back down or terminated. By moving to newer instance types with better performance, the processing activity could also take a shorter amount of time. That means that the underlying cost of the instance per unit of time can be less, the amount of time the instance needs to be running is less (again reducing cost), and the application processing time to deliver results is faster – so three different advantages gained by simply moving to the latest generation instance!
Many small and static applications that have been deployed in AWS by enterprises can stay up and running with little attention paid to their accrued cost over time, similar to how small machines previously stayed up for long periods of time, often forgotten, in on-premise datacenters. However, by being diligent in looking for instances using old instance types, and moving those instances to the latest generation, significant savings can be realized. With hundreds or thousands of instances running, the savings can quickly add up. While the process for moving instances to new types is outside the scope of this article, there are many methods to accomplish that whether the instance is EBS-volume backed or not. In addition, if instances are deployed via automation processes associated with CI/CD, it’s often even easier as the configuration management scripting can be simply updated as testing cycles occur.
Part two of this Best Practice guide will show how a simple AWS Config rule can be built to automate the process of finding instances that are running on previous generation instance types.
Take Control of Your Cloud
It’s important to remember that these best practices are not meant to be one-time activities, but ongoing processes. Because of the dynamic and ever-changing nature of the cloud, cost optimization activities should ideally take place continuously. Learn more about how LeanCloud can help you automate the continuous optimization of your cloud environment.