Rightsizing for AWS cost optimization can be the most effective way to reduce cloud spend. However, it can be difficult and overwhelming for organizations to identify which resources are running, in which families, and by which owners, in order to rightsize their environment—a challenge that worsens as they increase cloud usage and services, or adopt a multi-cloud strategy.
In this article, we’ll discuss some of the challenges with managing resource efficiency, how to approach rightsizing for AWS cost optimization, and tools to help manage rightsizing your cloud environment at scale.
The challenge with managing resource efficiency
When you operate in the cloud, it’s important to know that the concept of “paying only for what you use,” is a bit misleading. In most cases, you pay for what you provision. For example, if you deploy an AWS EC2 instance with 16 vCPUs and 64 GiB of memory, that’s what you’ll pay for, regardless of how much of the instance’s capacity is actually utilized.
Overprovisioning is a common source of wasted spend in cloud computing, and it's not necessarily attributable to miscalculations or laziness (e.g. selecting an instance size that worked before). When workloads are first “lifted and shifted” from on-premises data centers to the AWS cloud, the usual approach is to overprovision to ensure performance, and rightsize after the migration is complete. Even when workloads are born in the cloud, they’re often overprovisioned out of an abundance of caution.
For these reasons, monitoring the utilization of instances deployed in the AWS cloud should be ongoing. And to do this, it's necessary to have total visibility, with continuous monitoring of your AWS environment.
Obtaining total visibility of your AWS environment
Most organizations operating in the AWS cloud use Amazon CloudWatch to monitor resources and collect metrics on utilization. The CloudWatch service is adequate for monitoring the utilization of most AWS services, and the option exists to attach a unified agent in order to collect metrics below the level of abstraction and from on-premises servers. Furthermore, you can create alarms when resources are under- or over-utilized so they can be rightsized.
However, although the Amazon CloudWatch service supports cross-account and cross-region functionality, it only provides visibility into accounts and regions you know about. If shadow IT environments exist in your organization (and the likelihood is they do), AWS rightsizing for cost optimization will only reduce cloud waste for sanctioned resources. Any unsanctioned resources being used will continue to create cloud waste, performance issues, and security risks.
To resolve this issue, it’s recommended you implement a cloud management platform such as CloudHealth that will conduct a discovery of your cloud inventory and provide visibility into all the resources being used by your organization, including those hosted with other cloud providers such as Microsoft Azure and Google Cloud. The CloudHealth platform will monitor your resources for under- or over-utilization, provide you with granular metrics in a single pane, and alert you when a resource suitable for rightsizing is identified.
Auto scaling groups with multiple instance types
It’s a common assumption that rightsizing for AWS cost optimization involves identifying instances that are operating at less than 50% capacity so you can move workloads down a size. Although this is the most obvious way to rightsize AWS instances, it’s not the only way. It’s not even the best way, since AWS introduced auto scaling groups with multiple instance types and purchase options in November 2018.
With the auto scaling groups service, it’s possible to create auto scaling groups that combine the most economical combination of instance types and pricing models. Therefore, you could create a group consisting of (for example) general purpose, compute optimized, and burstable instances, and pay for the compute usage with a mix of AWS Savings Plans, or Reserved Instances, On Demand pricing, and Spot pricing, depending on the nature of the workload.
For example, instead of an organization waiting for CloudWatch to alert it of an instance with less than 40% CPU AND memory utilization before rightsizing it, you can create an auto scaling group with multiple instance types, and once utilization falls below 85% CPU OR memory utilization, it will automatically be replaced with a more appropriate instance in that autoscaling group.
The benefit of granular metrics
The auto scaling groups you create are optimized for cost each time a scale-out or scale-in event takes place, provided they meet the requirements of your configuration. To understand how best to configure the auto scaling group, you need granular metrics from your infrastructure, such as those provided by the CloudHealth platform. These not only tell you the what, where, and how of instance utilization, but also when instances consume capacity so you can take maximum advantage of burstable instances.
With total visibility of your cloud infrastructure, you can approach rightsizing for cost optimization holistically. This gives you the opportunity to make better-informed decisions about rightsizing AWS resources, and to create auto scaling groups in context with cost allocations, budgets, and your cloud financial management goals. In addition, you can use the same granular metrics and total visibility to optimize other areas of your AWS cloud for cost savings.
You can find out more about optimizing your AWS Cloud in our blog “10 AWS Cost Optimization Best Practices” or by downloading our guide to accelerating your AWS cloud journey to reach cloud maturity here.
Alternatively, you’re invited to get in touch with our team of cloud experts, who will guide you through creating auto scaling groups with multiple instance types and explain how the granular metrics provided by the CloudHealth platform can help you configure optimized auto scaling groups.