How to Best Optimize Usage, Allocate Costs, and Maximize ROI
For all of AWS' strengths, there is also a bit of complexity around Reserved Instances (RI) and Consolidated Billing. We, at CloudCheckr, often hear questions about how to effectively employ RI across consolidated accounts and, equally importantly, how to ensure that costs are properly tracked and allocated.
Before beginning the discussion, the ‘big' ideas to keep in mind are as follows:
- RI and billing complexity should not be a roadblock to usage.
- AWS users should always attempt to employ RI - they can reduce operating costs by 50%.
- Cost reporting and the ability to parse accounts and blending type are essential attributes to successfully tracking ROI and allocating costs.
With that background, the following 5 concepts help simplify this issue:
Concept #1: RI are
essentially coupons that, when sitting idle during a specific hour, are
automatically applied to matching resources during the same hour.
When evaluating RI purchases, it is probably best to start with the basics of using RI within a single account. RI function like coupons. For an upfront fee, the purchaser obtains compute access at discount for the term of the RI. This ‘coupon' is not assigned to a specific resource. Instead, it is applicable to specific type of resource (defined by class, size, AZ, and platform). The constraint is one of time - a coupon can only be used once during any given hour.
Concept #2: AWS applies RI
across linked accounts - this makes it far easier to ensure RI are not wasted.
Although many users (and some tools in the marketplace) evaluate RI recommendations on an instance by instance basis, users should actually look at concurrently used instances. This means that the time that any individual instance runs is not determinative, i.e., 3 individual instances that each run 6 hours per day may mean you should buy 0 RI or may mean that you should purchase 1 RI. The determining factor is when the instances run - if they all run from 4 am to 10 pm, the correct purchase amount is 0. If they run sequentially from 4am -10 am, 10 am- 4 pm, and 4 pm - 10 pm, then you should purchase 1. This is because AWS will apply the RI 1x for 6 hours in the first scenario but can be applied 3x totaling 18 hours in the second.
With a Consolidated Billing account, AWS expands the pool of instances eligible to use an idle coupon. Rather than simply looking for matching resources with an individual account, AWS automatically applies coupons to matching resources across all linked accounts. This is fantastic for users - it makes it far easier to benefit from using RI. Of course, as with a single account, with consolidated billing, users need to look at concurrent usage (across accounts) to determine the optimal purchasing strategy.
Concept #3: Sharing RI
promotes efficiency, but also creates ‘blended’ bills. Accurate allocation and
ROI calculations demand ‘unblended’ and normalized bills.
The downside of the application across linked accounts is that it complicates billing for AWS channel partners. For example, AWS averages all usage EC2 pricing across accounts to create a ‘blended’ pricing rate. This is then applied to all instances irrespective of actual RI ownership. Choosing an ‘unblended’ bill removes this average pricing, but still does not resolve the problem.
For example, imagine a user with just 2 linked accounts – A and B. Account A’s RI will be applied to account B’s resources if the RI is sitting idle within account A. This results in an account creating a resource, expecting to pay On-Demand pricing, but receiving a discounted rate by benefiting from their neighbor’s RI. AWS calls this ‘unblended billing’. For a single organization, with even 2 accounts, this creates both cost allocation and ROI issues. Now, just imagine the complexity if you are running 100+ accounts as the largest CloudCheckr customers are.
To create an accurate ROI and tracking, the organization needs to parse out the true costs from the applied RI. They need the ‘unblended’ costs and then need to normalize unowned RI discounts to list prices. Unfortunately, AWS does not create separate blended and unblended invoices. Rather, the consolidated bill is presented with details contained with 5+ million field .CSV file which must then be processed to decipher the unblended costs. After taking this step, some unblended costs will then need to be normalized to list prices.
Concept #4: Larger
customers with multiple accounts benefit more from cross account RI application
- but this also makes tracking and allocation more complex.
The ability to use RI across accounts means that although an RI may inefficient for any individual account, consecutive usage between accounts may mean it is efficient for the group. Individual users may also decline to purchase RI based upon their internal considerations - lack of capital for upfront fees and/or variable expected usage are two obvious reasons. However, for large users with multiple accounts, these concerns may diminish. As the overall deployment grows larger, the individual variances in usage become less significant (a larger group diminishes the usage importance of each member). In fact, for the largest users, economies of scale suggest that they benefit the greatest from buying RI and ‘sharing' capacity.
Concept #5: To simplify
tracking, keep only your S3 Detailed Billing in your Paying account and
create a separate Family account to house RI capacity intended for ‘sharing'.
Properly architecting your purchases can simplify tracking and managing RI purchases that are going to be applied across consolidated accounts. CloudCheckr recommends keeping only the detailed billing file within the AWS Paying consolidated billing account (with other resources housed within its Family accounts). We also recommend that users purchase their RI capacity intended for sharing in another segregated family account.
CloudCheckr makes both of these recommendations because they simplify the resource reporting. Segregating the S3 detailed billing bucket allows user a ‘clean’ resource and cost view of both the Paying and Family accounts. By segregating out the RI, users can efficiently track their total quantity, total, cost, and normalize unblended bills to calculate their total ROI for RI purchases.
To maximize the benefits of RI usage, AWS users should employ an across account analysis of their utilization. To properly allocate costs and calculate ROI, AWS user should architect their accounts where they segregate the Paying account and a RI sharing account from the rest of their resources. They should also carefully track both blended and unblended costs.
These steps and calculations can, of course, be done manually. Utilization data can be collected, correlated, and processed. Algorithms can be built and to calculate optimal purchasing. Scripts can be created and updated. List pricing can be tracked and manually entered. In short, time better spent on building your product can be devoted.
Or, users can employ automated solutions. CloudCheckr and other tools (with pricing ranging from 0.5% to 2.5% of monthly AWS spend) automate the process - saving time, ensuring efficiency, and saving money.