Calculating hourly commitment when replacing a savings plan
This post provides a step-by-step guide to help you calculate the optimal hourly commitment rate when replacing Savings Plans.
Dominic
Amazon Employee
Published Jan 24, 2024
Last Modified Feb 23, 2024
AWS Savings Plans is a flexible pricing model enabling you to save up to 72% on Amazon EC2, AWS Fargate, and AWS Lambda in exchange for making a commitment to a consistent amount of compute usage measured in dollars per hour (for example $10/hour) for a fixed period of time. Savings Plans is the easiest way to save money on compute usage while providing you the flexibility to use the compute options that best fits your needs as they change.
When buying your first or additional Savings Plans, Cost Explorer’s Savings Plans recommendation feature is an invaluable tool, providing the usage and recommendations you need to choose the optimal plan and immediately start saving on your AWS costs. However, when Savings Plans near expiration, you may face challenges determining the ideal hourly commitment rate for renewals, particularly if you want to alter the commitment length or payment option. Cost Explorer's recommendations overlook expiring Savings Plans with divergent rates, so they do not account for how renewing existing Savings Plans at new rates impacts overall costs.
This post provides a step-by-step guide to help you calculate the optimal hourly commitment rate when replacing Savings Plans. By analyzing recent usage patterns and expiring plan details, you can determine the right commitment level to meet your needs and prevent over or under commitment of compute power. This ensures workloads continue to have access to the necessary resources in a cost-effective manner.
Before committing to a longer term, you may want to optimize and modernize your infrastructure to further reduce costs and avoid overcommitting. This includes rightsizing instances, upgrading to the latest generation or even migrating to Graviton. Taking these steps will ensure your infrastructure is efficient and cost-effective as you scale usage over time.
When modernizing your instances, note that these actions will likely reduce your on-demand costs and affect savings plan commitment calculations. Therefore, after modernizing instances, wait 1-2 weeks to analyze new usage data before continuing commitment calculations. This allows time to observe how changes impact on-demand usage prior to making savings plan commitments.
To determine your total on-demand consumption, you'll need to add up two key numbers: the on-demand equivalent amount from any expiring Savings Plans you currently utilize, and your actual on-demand expenditures not covered by Savings Plans. Adding these two figures provides your current baseline on-demand spend assuming you had no existing Savings Plans in place. This total on-demand consumption amount serves as a reference point for calculating potential cost savings from additional Savings Plans purchases.
Log into AWS Cost Explorer for your payer account and create a new report using the following parameters:
Granularity: "Hourly" (this will automatically set the date range to the last 14 days)
Dimension: "Charge Type"
Services: Include "EC2-Instances", "Fargate" and "Lambda"
Charge type: Include "Savings Plan Covered Usage" and "Usage"
Dimension: "Charge Type"
Services: Include "EC2-Instances", "Fargate" and "Lambda"
Charge type: Include "Savings Plan Covered Usage" and "Usage"
The hourly view is critical when using Savings Plans as they require an hourly commitment. Since your workloads' usage might fluctuate throughout the day, a daily or monthly breakdown fails to reveal these hourly variations and could result in overcommitting.
Using the above parameters, you will likely see a chart similar to this:
When purchasing Savings Plans, review your existing AWS commitments and agreements. For Enterprise Support and Private Pricing Agreement customers, ensure your Savings Plan term aligns with expirations. Also, if you have EC2 Reserved Instances expiring during your Savings Plan term, factor those workloads into your Savings Plans purchase to maximize coverage and savings across your AWS environment.
The charts above showcase an on-demand coverage of approximately $47/hour from current Savings Plans along with extra, fluctuating on-demand utilization. As Savings Plans operate hourly, we want to avoid over-committing. Sometimes, workloads with sporadic dips still benefit from higher commitments despite wasted coverage during very short periods. Often though, as depicted, usage forms a identifiable baseline; here, hourly costs persist above roughly $64/hour.
When determining the amount of your Savings Plan commitment, it's wise to leave some buffer if you expect your usage to decrease. In the example above, covering the full $64/hour spend would maximize savings if usage remains steady. However, upcoming projects like cost optimization may reduce usage. To retain flexibility, you could target 80% coverage and commit to a $51/hour Savings Plan. This leaves headroom to downscale workloads without losing savings plan discounts. As Savings Plans are stackable, you can purchase additional commitments later. Leaving a 20% buffer zone builds in capacity to cost-optimize while optimizing savings on your current baselines.
Now that we now how much usage we want to cover, how can we calculate the hourly rate we need to commit to? In the next step I'll demonstrate how to estimate the cost-effectiveness of our Savings Plans.
This section focuses on Amazon EC2, but the same method can be applied to AWS Fargate and AWS Lambda.
I will not go into the details of how savings plans are applied, you can read more about that here. In short, since discounts vary across instance types and regions, applying first to your workloads with the highest potential savings, it is challenging to estimate your effective discount rate.
By tweaking the dimension in our report from "Charge Type" to "Instance Type", we can gain additional insights into our costs. The visualization remains the same, but now shows spending divided by EC2 instance family rather than charge type:
The most-used instance types often have strong coverage during off-peak hours since they comprise a large portion of overall usage. Focusing on the top used types can simplify our estimate calculation, even if higher discounts may be available for lesser used instances. Alternatively, since we already have an expiring savings plan, we could exclude “Usage” from our “Charge Type” filter and reveal which instances currently are covered by our existing savings plan, as those would likely be the ones covered by the new one as well.
In this example, I will limit our shortlist to c6a.2xlarge, m5.4xlarge, c6a.4xlarge, m6a.2xlarge and c5.4xlarge, all running in the EUC-1 region. Using the AWS Compute Savings Plans calculator we can see the Savings Plan discount over on-demand for each instance type. We are considering a 3 year commitment with a partial upfront payment.
Next, let’s create a simple table with an overview of the selected instances, their savings percentage and our current hourly usage spend on these instances during peak time. Using a simple formula, e.g. =B2*C2 in Excel, we can calculate the discount.
Finally, to find the total discount percentage, simply divide the total discount amount by the original total price and multiply by 100:
$29.60 / $60.39 x 100 = 49%.
By considering the individual discount rate and usage weight of the most popular EC2 instance types, this method enabled us to calculate an average discount rate of 49%.
Calculating the Hourly Commitment Rate With the target hourly spend of $51 and an average discount rate of 49%, we can now calculate the hourly commitment. This is done by taking the hourly Spend to Cover of $51 and multiplying it by one minus the discount rate:
$51 x (1 - 0.49) = $26.01
Having analyzed our hourly usage spend, we created a suitable hourly commitment estimate for a 3-year, partial upfront Compute Savings Plan to replace our expiring plan with a new one at an hourly commitment of $26. By queuing this new savings plan to begin just as the current one expires, we can achieve continuous coverage and maximize savings on our compute usage.
One of my customers utilized this savings plan commitment modeling method and found the estimated coverage matched real-world usage remarkably well. After calculating an hourly commitment for 60% expected coverage during off-peak hours, we reviewed the savings plan coverage in AWS Cost Explorer two weeks post-purchase. Consistently, the actual coverage was right on target at 62% - confirming this method's accuracy for projecting committed usage and maximizing Savings Plan cost efficiency.
Any opinions in this post are those of the individual author and may not reflect the opinions of AWS.