This article was updated on December 20, 2017 and May 8, 2017 to reflect the latest AWS pricing and policies
We recently wrote about how to choose between AWS instance types for cost savings. That article discussed Amazon Web Services´ (AWS) Spot Instances and Auto Scaling options for Elastic Compute Cloud (EC2) instances, but today we want to focus on just AWS Reserved Instances — an option that allows you to get the same compute power as On-Demand instances, but with different payment structures and pricing.
Difference Between On Demand and Reserved Instances
As far as actual compute options and configuration, there is no functional difference between On-Demand and Reserved Instances – it’s all in the billing. A Reserved Instance (RI) is an instance you can rent for a fixed duration at a lower per-hour (or per-second) cost than AWS’s basic On- Demand instance offerings. Basically, in exchange for a commitment of usage, you get a lower hourly rate, which automatically applies in your billing to instances that you run to meet your purchased RI attributes.
While this article focuses on EC2 reserved instances, many of the same benefits and caveats apply to Amazon RDS Reserved Instances.
All of the same families, OS types, tenancies and instance sizes are available with RIs that are available for On-Demand, although your ability to change between these options once purchasing depends on the type of RI you choose.
To that end, within the RI family, there are several purchasing options:
- Standard RIs – Recommended for steady-state usage, and provide the most savings.
- Convertible RIs – a smaller discount from On-Demand instances, but in return provide flexibility to change families, OS types, and tenancies.
- Scheduled RIs – similar to Standard RIs, but only apply to instances launched within the time windows you select, which can recur on a daily, weekly, or monthly schedule.
In this analysis, we’re going to focus on the Standard RIs, with the understanding that Convertible and Scheduled RIs will save you less when compared to On-Demand. However, see our thoughts on Scheduled RIs as well. As these are inflexible, we don’t typically recommend them.
Reserved Instances: Violating the Cloud Philosophy?
RI pricing is structured based upon how much you wish to pay up front, with three options:
- No upfront (pay monthly)
- Partial upfront (pay a fixed fee upfront and the rest monthly)
- All upfront.
When we wrote the original version of this article, AWS did not offer a no-upfront purchasing option for its three-year Reserved Instances. It seems that AWS listened to customer demand on this issue because as of May 2017, there is now a no upfront payment option for three-year Standard RIs. With this move, AWS obviously hopes to attract more long-term purchases – which is no surprise, as its most recent revenue report showed a boost in deferred revenue, supported mainly by Reserved Instances.
A key consideration here for some organizations is that the RI model can make some cloud costs a CapEx (one-time expense) rather than an OpEx (monthly recurring expense). If your organization has the cash, (or can stagger RI purchase over a rolling sequence of months), the cloud cost can be amortized over the term of the RI, similar to buying hardware for a private datacenter.
So the question is, which should you choose: a Reserved Instance or On-Demand? A Reserved Instance, because it’s cheaper. Right? Well, that’s what AWS would like you to think.
What’s the Price Difference, Really?
To get a better idea of the difference in the amount you’ll end up paying with each purchasing option, let’s take a look at some pricing scenarios for the general purpose m4.large instance.
One-Year Term – Pay Upfront
If you choose a m4.large RI and pay all upfront – the lowest total cost of the three RI payment options – you will pay $507. The same instance using On-Demand pricing for one year will cost $876.
In this scenario, AWS says that choosing RI delivers a 42% savings. Therefore, you would need to use your Reserved Instance for just over seven months of the year for it to realize an annual cost benefit.
However, this assumes fully utilized instances and that AWS will maintain the same On-Demand pricing for the entire year, which history tells us is not likely. Keep in mind that when AWS drops prices for On-Demand or Reserved Instances, you must continue to pay for previously purchased RIs at the rate from the date of your purchase, even if you’re paying monthly.
For the sake of comparison, what if AWS were to drop m4 instance prices by 30% a few months after your RI contract starts? They dropped them by 30% in March 2014, for example, by 25% for some instance types/regions in November 2016, and as much as 17% in May 2017. Let’s take that 30% as an example. Assuming this, the On-Demand price for one m4.large instance could go as low as $657. In that situation, your annual savings would only be 23%, not the 42% you thought you would get.
One-Year Term – Nothing Upfront
Let’s look at another possibility: what if you chose the RI but paid nothing upfront?
Using our m4.large example, you would pay $45.26 monthly, which provides a 38% savings over on-demand at the current prices.
However, if AWS were to drop the on-demand prices by an average of 30% in the third month of your contract, your savings compared to the new On-Demand price would be decimated to 17% for that year, since AWS will lock you into the old monthly pricing.
While further price reductions are not guaranteed, the increasing commoditization of cloud computing and aggressive attempts by other cloud service providers to take market share from AWS are likely to continue to drive prices lower. We doubt that we’ll see price drops as steep as 30% per year, but 5%-10% reductions per year are likely.
Three-Year Term – Pay Upfront
Let’s look at the three-year term for the same instance type. If you were to choose a three-year term for an RI, upfront, you would pay $968. In contrast, the On-Demand cost over three years, assuming the current pricing, would be $2,628. In this case, AWS says you should save 63% by choosing an RI.
However, let’s assume that the price of On-Demand drops by an average of 7% at the beginning of March each year, as we assumed above. If this were the case, the total cost of a single m4.large instance paid On-Demand for three years would be $2,333. If you had paid the $968 upfront, your effective savings would be reduced from 63% to about 59%. Not bad, but not what you expected.
Three-Year Term – Nothing Upfront
In contrast, if you paid nothing upfront and then monthly, your savings would only be 51% versus the 57% that AWS predicts.
Note that none of this analysis factors in the cost-of-capital, which might improve your savings, but only slightly (an additional 1-2% in today’s dollars), depending on your organization’s cost-of-capital.
Reserved Instances are Frequently Underutilized
As mentioned above, these pricing comparisons were made under the assumption that, if you purchase a Reserved Instance, you will use it to its full capacity. However, in many cases, this is not actually what happens. Due to oversight, obscurity in the RI application and billing process, or simply changes in internal development needs, many AWS customers end up with RI contracts that they are not actually using – whether they are aware of it or not.
In fact, unused RIs are such a prevalent problem that AWS provides an entire marketplace for users to buy and sell RIs from each other (as you are not allowed to cancel with AWS once you have a Reserved Instance contract).
Convertible RIs help mitigate at least part of this by allowing you to shift instance types as needs change. Convertible instances were recently enhanced to support splitting a larger RI into multiple smaller RIs, or merging smaller RIs into a single larger RI. This allows you to take older underutilized RIs and convert them into something more useful.
To mitigate waste of RI resources, AWS recently announced the ability to monitor and receive alerts when EC2 or RDS RI utilization falls below configured thresholds. If your RI usage varies at all over time, this is a great tool to make sure you are getting the most bang for your RI buck.
Consolidated billing can also help mitigate this RI waste under very specific circumstances:
- If your RI is not running 24/7, and
- you use consolidated billing, and
- multiple accounts are running an instance that matches the terms of the Reserved Instance, the pricing benefit will apply to one of those instances at a time.
In other words, if one account purchased the RI, but is not using it, an instance in any of your other accounts that 100% matches the RI terms (Region/AZ/family/size) will get the benefit of the RI pricing. If your different accounts typically use different regions, this will not result in much savings, but it certainly helps.
These problems are complex – check out our Reserved Instances optimization solution to help maximize your use of this option.
Should You Buy Reserved Instances?
AWS recently announced changes to their Cost Explorer that will review your EC2 usage and make cost saving recommendations, including recommending specific reserved instance configurations. The Cost Explorer certainly should be checked when looking to optimize costs, as it can see across the member accounts in your entire organization. It also allows you to adjust recommendation parameters, including the types of RIs to recommend, and how many days of usage data to examine, up to 60 days.
Now, obviously, AWS would love to get your money upfront, but do consider whether this makes the most sense for you before purchasing. For production workloads that run 24×7, the answer is “yes”. For non-production workloads (dev, test, QA, training, etc.), the answer is “probably not”. As mentioned above, many RI’s are underutilized, so you may find better value by:
- Choosing smaller instance sizes.
- Using Spot Instances and Autoscaling when appropriate.
- Scheduling on/off times for On-Demand instances.
That last point is where parking comes in. With parking, you can automate scheduling for your non-production On-Demand EC2 instances to turn off when you’re not using them, such as nights and weekends.
By running those instances only when you need them, you can take advantage of AWS price cuts immediately, and maximize your compute value per dollar.
Let’s revisit the 1-year and 3-year graphs and include savings from parking, using a schedule which is OFF during the night, 12-hours per day during the week and OFF on weekends.
In the 1-year case, the instance cost for the year with parking is $312, representing more than 64% savings. If AWS reduces its prices, then the cost for the year would be $235, effectively riding the price curve downward.
In the 3-year case, the instance cost is $936, still representing more than 64% savings. That price is reduced to $833 if there is a price reduction. With RI’s, to get even close to that savings, you have to commit for 3-years and pay everything upfront.
In BOTH cases, a reasonable parking schedule results in better cost savings than a Reserved Instance. Further, parking an instance provides more flexibility benefits than Convertible
- Complete flexibility to change instance family/type at any time
- Complete flexibility to switch use to a different availability zone and region at any time
- Ability to eliminate the instance altogether at any time
The moral of the story: Always optimize your AWS Reserved Instances. If you can park instances, don’t bother with RI’s for non-production environments. You get better savings by parking, without the long-term commitments.
At ParkMyCloud, parking cloud resources to save money is what we do. Get started with a free trial of ParkMyCloud to try for yourself!