When it comes to cost saving steps, discounts are one of the first tools people look for—and while they are a great way to save on your cloud resource consumption, they come at a cost: the commitment to purchasing a certain amount of resources over a certain period of time. This caveat poses its own unique challenge of maximizing the value of your discount commitments to ensure they aren’t wasted.
In this article, we’ll do a quick overview of cloud saving concepts, followed by our list of the top 8 best practices for cloud cost savings focused on AWS as an example. This article is great for FinOps practitioners looking to avoid (or mitigate) any wasteful cloud-purchasing mistakes that can occur while chasing cost optimization through discounts.
There are four main approaches to negotiate a cloud resource discount:
All cloud providers offer discounts in exchange for your commitment to using a specific type of service over one or three years. For example, AWS discounts up to 72% in exchange for commitments in the form of a reservation contract or a savings plan contract (which is newer and offers more flexibility in the service configuration).
The offered discounts can increase when you are willing to agree to a more specific resource commitment, such as a specific:
AWS also negotiates Private Pricing Agreements (PPA) to obtain discounts in exchange for a commitment to transferring a certain amount of data between regions or to the internet each month over the course of a year.
In lieu of committing to a time and volume, AWS customers can get up to 90% in discounts by purchasing EC2s on the AWS spot market. Spot instances are reserved capacity by other customers but unused at the moment. However, they can be taken away with a 2-minute notice and go to a higher bidder.
Finally, cloud providers offer discounts in exchange for a commitment to a dollar-value in annual spending known as the Enterprise Discount Program (EDP). This is the simplest form of discount typically offered to customers who spend at least hundreds of thousands of dollars each year.
Below is our list of the top 8 recommended FinOps best practices for purchasing discounts without being exposed to financial risks that would cost you more than you save:
A typical cloud environment contains both unused and underutilized resources. If gone unchecked, these resources accumulate over weeks and months. For example, your engineering team may have oversized EC2s (in terms of CPU, memory, or I/O usage), unattached and unused storage systems, or simply resources that were not terminated when a certain project ended.
FinOps practitioners should task engineering teams with creating a list of over-provisioned and idle resources, at least six months before purchasing either reservation or savings plan contracts. Only after the excess capacity waste has been eliminated is the inventory ready for a proper analysis of annual purchase commitment needs.
Reservation coverage is a measurement calculated by determining what percentage of resources across your entire cloud environment are benefitting from discounts. And with up to 72% discounts on the table, it’s tempting to try and push that metric to 100%. After all, any remaining “uncovered” resources would be charged on-demand, based on the cloud provider’s standard retail pricing. However, such a high rate of coverage (especially early on) can backfire if business needs dramatically change or existing resource consumption is poorly understood.
Instead, aim for a reservation coverage of 60% to 80% to give you enough flexibility to address any future changes or revelations regarding your application infrastructure and cloud resource portfolio.
We have dedicated a chapter in this guide to AWS savings plans and how they compare to reserved instances (RIs). We recommend that you read it to understand the tradeoffs between the flexibility and discounts.
Savings plans were created to address customer complaints about the logistical complexity of exchanging Convertible Reserved Instances (RIs) across types, sizes, or regions. Convertible RIs require a person to invest time reconciling, planning and manually executing the RI exchange which is timing consuming and a major hindrance at scale. The conversion also incurs additional transaction costs which are not appreciated. Even though convertible RIs were a step in the right direction, they resulted in a step in the evolution of the AWS pricing model.
When it comes to balancing savings opportunities with flexibility, Savings Plans are the best choice—especially since application architectures are shifting rapidly from being EC2-based to being container-based (as offered by the AWS EKS service) and serverless (Lambda).
One to three years is a long time to be committed to a cloud provider, even with the flexibility of Savings Plans.
To protect against the unforeseen, stagger your purchasing commitments. For example, instead of committing to 80% of your inventory at one time, purchase 25% each quarter. This allows you to respond to changes as they arise by adjusting your commitments more frequently instead of having to wait an entire year to course-correct.
This portfolio strategy is not new. In fact, this strategy is used in finance for purchasing government or corporate bonds. The diagram below shows the concept of bond laddering, where bonds with different maturity durations are purchased over time to protect against an unforeseen change in interest rates.
Committing to a usage volume is not the only way to obtain cloud cost saving; the spot instances offer excess reservations by other clients at discounts up to 90%. In 2018, AWS introduced more stable spot pricing thereby avoiding the extreme price fluctuations that occurred occasionally in prior years. The only major remaining downside being that your instance may be terminated after a 2-minute notice. Even though AWS offers various strategies to counter this risk, including an extended interruption notification period when possible, spot instances should be avoided for mission-critical applications. Instead, use them for your development or testing environments so you can save big without taking on any risk of disrupting production applications and services. Once you gain experience with spot instances and learn to avoid the element of surprise, you may find use for them in production environments.
The term Reserved Instance (or RI for short) is almost always used when referring to an EC2 instance. However, reservations are also available as a purchasing method for relational databases RDS, Elasticache (an in-memory store that helps accelerate application performance), Redshift (a data warehouse service), and DynamoDB (a popular NoSQL database service).
In a typical application architecture the compute resources are the lion’s share of spending (which is why they get most of the attention). However, the other services mentioned above together can add up to significant spending in your environment.
To gain a better understanding of their collective cost, you should review your last month’s cloud bill, grouped by service, to gauge whether pursuing an enhanced purchasing method for those services makes sense for your organization.
Data transfer costs are incurred when data leaves one availability zone and is sent to another zone, region, or the internet. End-users may drive high data transfers by accessing data-intensive content in your application (such as images, videos, or simply a very high volume of text or numerical data). Another common driver of data transfer is data replication across databases to protect against system outages or disasters that may wipe out a data center.
Data transfer charges are not as straightforward as some of the other line items in your cloud billing statement. This is because data transfer charges are not a high-level line item; instead they get buried in sub-categories associated with various cloud services like EC2, RDS, or DynamoDB.
For most environments, data transfer charges often make up a significant percentage of spend—taking the time to fully understand their costs is worth the extra effort. To get started, ask your engineering team to isolate and add up your total data transfer costs by region. Then meet with your cloud account manager to discuss saving against an annual commitment to a usage level.
Although AWS offers Private Pricing Agreements (PPA) for data transfer that are negotiated on a case-by-case basis, you won’t find much information about them on the internet due to how customized they are for each cloud customer. The PPAs are the best source of cost savings for data transfers.
As with other cloud providers, AWS offers an Enterprise Discount Program (EDP) which offers a negotiated discount typically in the range of 5-10% in exchange for committing to an aggregate level of annual spending starting in the hundreds of thousands.
This cost saving technique is best saved for last, after successfully implementing all other tools in this list—otherwise, you could end up playing to your cloud provider’s advantage. This is because each of the other seven purchase planning best practices in this article forces you and your colleagues to identify waste in your existing spend. Without going through such an exercise, you could wind up committing to an EDP you simply don’t need or cannot fully utilize. EDP plays an important role in an overall discount strategy, but it should not be used as an easy way to save.
There are many ways to capture cloud cost savings, however it is important to pursue discounts strategically. Identifying existing waste should always be the first step, followed by implementing a staggered commitment purchasing cadence to ensure future flexibility. After that, look beyond your compute services and analyze spending for database services, transfer costs, etc. Where possible, use spot instances.. Finally, when it makes sense, sit down with your cloud account manager to see if you can get some extra enterprise discounts by committing to a well-planned spend level.