How to Maximize Cost Savings with AWS Savings Plans

calendar December 11, 2020

Choosing Between Cost Savings & Allocating Costs in AWS

To allocate costs or maximize savings? That’s the question many AWS customers will have to answer when formulating their FinOps strategy relating to Savings Plans. If part of your daily routine is finding ways to cut cloud costs, then you know exactly what I’m talking about. Appropriate chargeback reporting is an undeniable necessity for any business, but in this world of uncontrolled rising cloud costs, so is capitalizing on any savings opportunities! But simply passing the costs off to the business area that is using the capacity is a way of passing the problem of savings off to others.

The pressing question: Is there a way of both allocating costs and simultaneously maximizing savings?

How Most FinOps Organizations Prioritize Their AWS Savings Plans Usage

AWS Savings Plans for compute usage were introduced in late 2019 and effectively replace Reserved Instances for Amazon EC2. Not only are Savings Plans simpler to purchase and manage than Reserved Instances, they typically yield greater cost savings as they are more flexible and efficient. This efficiency stems from how discounts offered by Savings Plans are applied to compute usage by favoring higher discount rates, first towards usage in the same account that purchased the savings plan, and subsequently to usage in other linked accounts.

The priority by which savings plan discounts are applied allows (or forces) AWS customers to choose between two common objectives when purchasing Savings Plans:

  1. Allocating costs for internal chargeback reporting
  2. Maximizing cost savings

The requirement for internal chargeback reporting often applies to organizations comprised of multiple departments or lines of business that each operate one or more linked accounts. Each department manages their own budgets and chooses how many Savings Plans they wish to purchase. To allocate costs for internal chargeback reporting, Savings Plans can be purchased in the corresponding AWS linked accounts to align the discounts with the targeted usage.

Alternatively, to maximize cost savings for the entire organization, Savings Plans can be purchased in an AWS master account that has little or no compute usage. This ensures that the savings plan discounts are prioritized to the compute usage with highest discount rates, regardless of the linked account where the compute usage is consumed. This strategy to maximize savings often applies to organizations with a centralized cloud financial management group (FinOps) that oversees and optimizes the overall cloud spend.

An Example Organization with Compute Costs & Savings Plans

To illustrate the tradeoffs between these two AWS purchasing strategies, consider an AWS customer with three AWS accounts: one master account and two linked accounts. The master account has the role of the payer account for the organization, and has zero compute usage. The linked accounts are operated by the Engineering and Finance departments, respectively. Each linked account runs the same mix of public Amazon Machine Image (AMI) M5 instances using the following OS (operating system) mix: Linux, Red Hat Enterprise Linux (RHEL), Windows, and Windows with SQL Server Enterprise. The hourly On-Demand usage costs are constant, as summarized in the following table:

Hourly, Public AMI On-Demand Usage Costs1 (USD per hour)
AWS Account NameM5 LinuxM5 RHELM5 WindowsM5 Windows with SQL Server EnterpriseTotal
Master Account$0$0$0$0$0
Finance Account$50$20$20$10$100
Engineering Account$50$20$20$10$100
Total$100$40$40$20$200
  1. Public On-Demand costs reflect the EC2 instance costs based on On-Demand rates with no Savings Plans or Reserved Instances

The following chart illustrates the hourly EC2 On-Demand costs for a typical 24-hour day:

Graph showing EC2 cost breakdown by platform over a 24-hour day
Hourly EC2 costs by department and OS platform

To compare the saving plan purchasing strategies, let’s assume the purchase of $60/hour of: 3-year, No Upfront Compute Savings Plans.

The OS platform-specific discount rates for M5 instances based on this type of savings plan are:

Remaining On-Demand and Savings Plan Effective Costs (USD per hour)
Public AMI OS TypeDiscount Rate
Linux54%
RHEL33%
Windows28%
Windows with SQL Server Enterprise6%

Allocating Costs for Internal Chargeback Reporting

In this scenario, the Finance department chooses to purchase Savings Plans to reduce their costs, whereas the Engineering department chooses not to purchase Savings Plans. To ensure the savings plan discounts are applied to Finance usage first, $60/hour of savings plan are purchased in the Finance AWS linked account. The savings plan discounts are applied by AWS to the Finance account compute usage based on the respective discount rates of the different platforms.

The following table shows how AWS would apply the savings plan discounts:

Remaining On-Demand and Savings Plan Effective Costs (USD per hour)
AWS Account NameM5 LinuxM5 RHELM5 WindowsM5 Windows with SQL Server EnterpriseTotal
Master Account$0$0$0$0$0
Finance Account$23$13.3$14.40$9.41$60.14
Engineering Account$50$20$20$10$100
Total$73$33.33$34.40$19.40$160.14

The M5 Linux usage cost is reduced from $50/hour to $23/hour based on its 54% discount. Similarly, the M5 RHEL, Windows, and Windows SQL usage costs are reduced by their respective discount rates. With the savings plan purchased in the Finance account, the AWS bill reflects internal chargeback for the Finance account is $60.14/hr. With no savings plan purchased in the Engineering account, the internal chargeback for the Engineering account remains at $100/hr. The total cost for the organization based on this purchasing strategy is $160.14/hour for a savings of $39.86 or 20%.

Maximizing Cost Savings Organization-Wide

Next, consider the case where the same savings plan ($60/hr) is purchased in the Master account which has zero compute usage costs. By purchasing the savings plan in the Master account, AWS automatically applies the discounts to favor usage with the highest discount rates in both linked accounts.

The following table shows how AWS would apply the savings plan discounts with the savings plan purchase in the Master account.

Hourly, Public AMI On-Demand Usage Costs (USD per hour)
AWS Account NameM5 LinuxM5 RHELM5 WindowsM5 Windows with SQL Server EnterpriseTotal
Master Account$0$0$0$0$0
Finance Account$23$16.50$20$10$69.50
Engineering Account$23$16.50$20$10$69.50
Total$46$33$40$20$139

Since the Linux usage has the highest discount rate at 54%, the first $46/hour of the Savings Plans are applied to the $100/hour of the M5 Linux On-Demand costs in the 2 linked accounts. Since the RHEL usage has the next highest discount rate at 33% discount, the remaining $14/hour of the savings plan are applied to $21/hour (out of $40/hr) of the M5 RHEL On-Demand costs. The total cost of the M5 RHEL usage is $33/hour based on the remaining On-Demand usage of $19/hour and $14/hour of savings plan costs. No savings plan discounts are applied to the M5 Windows and Windows with SQL Server Enterprise usage. The total costs for the organization based on this purchasing strategy is $139/hour for a savings of $61/hour or 30.5%.

Tradeoffs between Allocating Costs for Chargeback & Maximizing Savings

The following chart compares the hourly EC2 costs for the three scenarios in the above example:

No savings plan
$200 total cost per hour
Purchase savings plan to allocate costs for chargeback
$160.14 total cost per hour
Purchase savings plan to maximize savings
$139 total cost per hour
Graph showing comparison of hourly EC2 costs by Savings Plan strategy
Hourly EC2 costs by department and OS platform with and without AWS Savings Plans applied

In this example, purchasing Savings Plans in the Master account to maximize savings yields greater cost savings (30.5% versus 20%) than purchasing to allocate costs for chargeback. This additional cost savings of $21/hour translates to more than $185K/year. However, purchasing the Savings Plans in the Master account makes internal chargeback reporting challenging because there is a need to allocate costs and savings to specific groups in the organization.

How to use Savings Plans to Maximize AWS Savings while Allocating Costs for Chargeback

So, the advantage of centralizing savings is clearly worth while, but back to the original question: Can we achieve both maximized savings and accurately allocated costs for internal chargeback? The answer is that, with the right process steps and analytics we can! AWS customers can follow this process:

  1. Purchase Savings Plans in an AWS account with no compute usage to maximize savings
  2. Define a mapping of the desired portions of the Savings Plans in USD per hour to the appropriate AWS accounts to align the Savings Plans discounts with compute usage. From the earlier example, the desired mapping would assign $60/hour of the savings plan purchased in the Master account to the Finance account.
  3. Reassign the savings plan discounts to the compute usage in corresponding AWS accounts based on:
    1. The Savings Plans to AWS account mapping defined in step 2
    2. AWS Costs and Usage Report with hourly time granularity
    3. AWS Price List for compute usage
    4. AWS rules for applying Savings Plans to compute usage
  4. Generate the internal chargeback report per AWS account based on the reassigned compute costs from step 3.

This process is illustrated in the following flowchart:

Flowchart showing optimal purchase process for AWS Savings Plans
Optimal AWS Savings Plans purchasing process to maximize cost savings and chargeback ability
  1. How AWS savings plans apply to usage https://docs.aws.amazon.com/savingsplans/latest/userguide/sp-applying.html

These steps may seem a bit daunting, especially in a more complex environment or more accounts. These steps can largely be automated with the right preparation and supporting analytics. If your organization is trying to maximize overall savings but ensure that each department carries their true costs, Densify can help you assess the potential before you embark on a solution.