This article was updated on May 11, 2017 to reflect the latest AWS pricing options.
I 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 I 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 major 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 cost than AWS’s basic On Demand instance offerings. Basically, in exchange for a commitment of usage, you get a lower hourly rate, which is automatically applied in your billing to instances you run that meet your purchased RI attributes.
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 – the regular sort, which provide the most savings. Recommended for steady-state usage.
- 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), or all upfront. One-year contracts are available for all three payment options.
When I 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 has listened to customer demand on this issue – 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.
What bothers me is that RIs seem to violate the philosophy of cloud, which is that you pay as you go. The new RI model makes cloud a CapEx (onetime expense) rather than an OpEx (monthly recurring expense). The beauty of On-Demand is that you truly do pay as you go. The problem is that On-Demand instances get quite expensive compared to RI.
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, and by 25% for some instance types/regions in November 2016. 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. I 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 briefly 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). The new Convertible RIs help mitigate at least part of this by allowing you to shift in instance types as needs change, but of course, those provide a smaller discount off of On Demand instances than Standard RIs.
Should You Buy Reserved Instances?
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 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 $314, 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 $938, 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.
The moral of the story: 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!