AWS offers a Compute Optimizer tool that uses machine learning to analyze your historical utilization metrics and then recommend optimal AWS resources to help you reduce costs and improve performance. And it is free, you just need to opt in to the service in the AWS Compute Optimizer Console.
Sounds great, right? Well, yes and no. It is a useful little tool, but if you do not understand its pros and cons, you will not be as optimized as you may think. Here is a breakdown.
Pro #1: It is free and easy to use
As previously mentioned, Compute Optimizer is a free tool that is included with all AWS accounts. It is easy to set up and use, giving you some self-service optimization capabilities. The tool provides descriptions of possible findings with inline help, and you can open the EC2 console to apply the change.
Pro #2: It provides multiple recommendations
Compute Optimizer provides you with up to three recommendations for any given resource. Additionally, it shows timeline-based charts for the recommendations and provide an estimate of performance risk.
Pro #3: It rightsizes several resource types
The tool provides recommendations and resource details for the following types of AWS resources
- Amazon Elastic Compute Cloud (EC2) instances
- EC2 Auto Scaling groups (ASG)
- Amazon Elastic Block Store (EBS) volumes
- AWS Lambda functions
Con #1: It is limited
As you might expect with any free tool, AWS Cloud Optimizer is narrow in scope and functionality. As mentioned above, Compute Optimizer supports four different resource types, but is limited in how you can customize recommendations. It does not provide Graviton or -n (network-optimized) recommendations. It is important to note that AWS Compute Optimizer is not aimed at analyzing costs, but is purely an optimizer for EC2, RDS, ASW, and Lambda functions—it shows potential savings, but that is all. The dashboard is basic and presents information only in terms of under-provisioned, optimized, or over-provisioned instances, and there are no graphical charts or savings summaries. Furthermore, recommendations are displayed in long rows that require you to scroll horizontally. This is a peeve of mine, as it impedes usability. While there are filtering capabilities, they are limited to regions. Finally, the tool is AWS-specific. That is not a knock—you would not expect AWS to provide a tool for non-AWS clouds—but if you are managing a multi-cloud environment, you will need different tools for those providers.
Con #2: It is short-sighted
The tool’s definition of “historical” is just two weeks, which cannot be altered or configured. This means you could end up making long-term decisions based on short-term data. If your workloads have seasonality that falls outside of the 14-day window, the recommendations will not take critical min/max information into account. Nor are any historical reports available.
Con #3: It does not take other factors into account
The short time frame aside, the tool provides an “all other factors being equal” approach to recommendations. If you, however, have a lot of complexity to manage, then all others factors are not, in fact, equal. For example, you may have certain applications which are memory- or I/O-bound, but there is no way to reflect this in the tool.
Con #4: What-if analysis is not forward-looking
You can only evaluate the recommended options based on your current (within the last two weeks) conditions. The tool’s what-if scenario shows you how the compute resource would have performed—past tense—on the recommended instance type. What you cannot do, however, is see how the resource might perform in the future as conditions shift. In other words, you cannot see “what if” you select this instance and X, Y, and/or Z happens. Two or more of the options presented may look very similar based on the right-now scenario but could end up being very different depending on anticipated changes. Without this critical information, you could make a poor selection for your needs for the long run.
The bottom line
The AWS Compute Optimizer is a handy quick-start tool to get a couple of recommendations for best-fit instance type based on performance and cost as long as you are fully aware of what it can and cannot do. The limited scope and lack of configurability mean that you cannot match recommendations to seasonality, workload type, app- or tag-specific policies, or other criteria that are important to your business. Nor does it provide a full picture for maximum optimization (i.e., the all-around best performance at the lowest cost based on your organization’s specific constraints and risk tolerances): To do that, you need to be able to:
- Have full visibility into your cloud spend
- Alert on unexpected changes
- Group, sort, and filter by business units
- Forecast spend by business unit
- Identify idle or abandoned resources
- Get recommendations for programmatic discounts
And, you need to be able to do all of these things in a unified way across all of your public cloud providers.
Scale Smarter with Virtana Optimize
With Virtana Optimize, you can increase your advantage by optimizing your capacity and cost in real time on an ongoing basis. With our powerful analysis and recommendations tools, you can:
- Automatically optimize Amazon EC2 and Azure VM instances with our rightsizing recommendations
- Tune sizing based on your organization’s risk tolerance with what-if analysis that includes CPU, memory, I/O, and ingress and egress charges
- Safely adjust over-allocated resources to save on your bill without risking production
- Avoid long-term programmatic discount commitment mistakes by finding the ideal resource settings before purchase
- Quickly adjust to changes in cloud service provider offerings to optimize cost structures
Product Manager, Virtana