Updated: Nov 19, 2020
Before we step into the AWS pricing game, it's essential to understand the playing field, why, and how AWS structured its compute cost model. How it changed and why optimal pricing schemes don't necessarily come directly from AWS.
It started when the AWS platform launched in July 2002. By late 2003, the AWS concept was publicly reformulated, describing a vision for Amazon's retail computing infrastructure that was wholly standardised and completely automated. Also, the AWS concept had the possibility of selling access to virtual servers as a service, proposing the company could generate revenue from the new infrastructure investment. Amazon Web Services was officially relaunched on March 14, 2006, combining the three initial service offerings of Amazon; S3 cloud storage, SQS, and EC2.
As we all know, this new type of Infrastructure as a Service (IaaS) had become a massive hit, forever changing the software industry.
When it started in 2002, AWS was a free service offered to companies as a way to incorporate Amazon techniques and tools, as AWS relaunched in 2006 it started selling its services, offering different pricing models that are service-specific. There are three fundamental drivers of cost with AWS: compute, storage, and outbound data transfer. For this article, we will focus on EC2— Elastic Compute Cloud. EC2, which is AWS's biggest income maker, is essentially a VMs leased to anyone who wants a running server.
EC2 costs are currently offered in five types of pricing options
On-Demand - You pay for computing capacity by the second with no long-term commitments or upfront payments.
Reserved - You pay for 1- or 3-years of 24/7 usage and get significant discounts, up to 75%. Reservations are set per instance by family and region.
Spot - You purchase spare computing capacity with no upfront commitment at discounted per second rates. Spot instances offer up to 90% discount.
Savings Plans - You pay and commit to using specific EC2 capacity for 1 or 3 years. Primarily Reserved pricing deconstructed from instance limitations.
Private Host - You pay for a physical EC2 server dedicated for your use. It can be purchased On-Demand or as a Reservation.
So, What's the Problem?
A brief review of AWS pricing information might suggest that AWS has thought this through and is already offering an excellent solution for cost optimization. While AWS is highly aware of cost optimization, the simple truth is, it's simply too complicated to apply general logic into specific use cases. Thus, a new professional role emerged in the IT space— FinOps. FinOps is the operating model for the cloud. FinOps' job is to increase an organization's ability to understand cloud costs and make tradeoffs. In the same way that DevOps revolutionized development by breaking down silos and increasing agility, FinOps raises the business value of cloud by bringing together technology, business, and finance professionals with a new set of processes.
You can read more in this excellent blog post by Wix's Dvir Mizrahi - Introducing the FinOps engineer
While AWS's biggest spenders like Netflix with $19 million in monthly spending, Twitch: $15 million and LinkedIn $13 million, obviously employ FinOps engineers to make sure their cloud costs are kept in check. Leaner operations like startups, SMBs, or small enterprises will usually blend FinOps into the DevOps or BizOps space.
Keep in mind, a mere 5% saving for the mentioned tech giants will result in about 10 million dollars annually. What about saving 50%? 60%? That would result in about 100 million a year, a similar sum to the revenue of scooter rental Unicorn and Bird, as of June 2019. Leading us into the "How?" of cloud compute savings and cost optimization.
Cost Optimization should start early while you migrate or scale in the cloud. Adopting cloud services is not just a technical evolution. It also requires changes in how organizations operate. As you move from IT treated as a capital investment—that happens periodically—to a world where pricing closely ties to efficient use of resources, it pays to understand what drives cloud pricing so you can build a strategy for optimizing it. When it comes to understanding pricing and optimizing your costs, it's never too early to start. It's easiest to put cost visibility and control mechanisms in place before the environment grows large and complex. Managing costs effectively from the start ensures that managing cloud investments doesn't become an obstruction as you grow and scale. Cost optimization is also an ongoing task; it never ends. As the organization develops and services become more complex, engineers need more resources. As customer base scales increase in count and geography, so does the cloud cost. Optimization should be considered with every step.
Getting Started - Optimizing Your Pricing Plan
AWS offers multiple pricing plans, as listed above. We will focus on the most common options On Demand Vs. Reserved Instances and Saving Plans Vs. Spot Instances
AWS default pricing option is "On-Demand," a revolutionary approach for cloud computing, as it allows anyone to create a running server within minutes while costing less than a dollar an hour. While this is the fastest and most risk-free option, it is also the costliest option and sounds useful for a super small scale or a POC, but anything more than that will have better pricing options.
Easy to use
No upfront payment
Hard to anticipate cost accumulation
Matching Use Cases:
Demo and test environment that requires stateful resources
Reserved Instances (RI) and Saving Plans
The 'obvious' cost-saving solution is to pay in advance for 1 or 3 years and get a discount over On-Demand pricing. These options are great for established, stable, and static organizations, where costs are mostly known in advance and can be easy to anticipate. From a cost perspective, this is a simple cost reduction tool. In larger deployments with cross-functional teams or surges or fluctuations in usage, this option is hard to manage, which leads to increased charges and increasing use of On-Demand pricing or alternatively idle resources that, in effect, reduce the overall discount percentage, as you pay for something unused. Also, I believe the most significant disadvantage of RIs is the constraints that are associated with the reservation. AWS changed these over the years. In essence, you commit to a machine type—family—region, and you might also commit to a specific availability zone or machine size.
Saving plans are a new addition to the commitment pricing option. Essentially, saving plans take away most of the restraints that exist with classic Reserved Instances. The premise here is straightforward: you commit to EC2 usage based on On-Demand pricing and get a discount, which is smaller compared to RIs. Pay sum X in advance and get X+Y in actual usage. This plan sounds simpler, and it is. While scaling and commitment is still a downside in larger deployments.
Easy to anticipate cost accumulation
Keeps the 'capital investment' state of mind inside the company
Requires upfront commitment
Hard to scale
Hard to use effectively
Cost accumulation is calculated after usage
Matching Use Cases:
Sustainable static workloads in core services
Legacy Applications—lift & shift
A Spot Instance is an unused EC2 instance that is available for a significant discount compared to On-Demand price (up to 90%). Because Spot Instances enable you to request remaining EC2 instances at steep discounts, you can lower your Amazon EC2 costs significantly. The hourly price for a Spot Instance is called a Spot price. The Spot price of each instance type in each Availability Zone is set by Amazon EC2 and adjusted gradually based on the long-term supply of and demand for Spot Instances. Your Spot Instance runs whenever capacity is available. Spot instances can be "taken" by AWS with up to 2 minutes warning and have zero commitment from the AWS side. Historically this was a bid-based mechanism. As of reinvent, 2017 Spot instance usage changed significantly, and bidding is no longer required—optional.
Spot Instances are a cost-effective choice if your applications can be interrupted. For example, Spot Instances are well-suited for data analysis, batch jobs, background processing, and primarily containerized environments.
Cheapest EC2 pricing plan (90% less compared to On-Demand)
Requires management of interruptions
Does not fit all use cases
Hard to use effectively
Matching use cases:
Containerized environment (K8s, ECS, and the like)
Load balanced environments
Dev, QA and staging stateful environments
What's Right for You?
The simple truth is, there is no simple answer. Optimization is use case dependent, and more importantly, it's forever changing as your organisation changes. Optimizing AWS costs is a full-time position—FinOps. It is highly dependent on how the organization's user base changes, what technologies are utilized as well as AWS updating pricing and adding pricing options. EC2 usage is usually a significant component in the overall infrastructure cost. It should be the first place to start optimizing costs.
You can read more about pricing options here:
EC2 Specific: https://aws.amazon.com/ec2/spot/?track=costop