Amazon Reserved Instances: Always Read The Label
By Craig Balding
Put simply, these are virtual machine instances that you can pay to have reserved for you to use anytime you want. The benefit should be assured availability and lower cost for machines with heavy uptime requirements. You still only pay for what you use, in addition to a one-time non-refundable payment to make the reservation.
When I first read about this I got quite excited. I was already thinking of the potential use cases from a security perspective, particularly around business continuance/disaster recovery.
In fact, this is something fellow AWS customers have been asking for:
Also, quite a few customers actually told us something even more interesting: they were interested in using EC2 but needed to make sure that we would have a substantial number of instances available to them at any time in order for them to use EC2 in a DR (Disaster Recovery) scenario. In a scenario like this, you can’t simply hope that your facility has sufficient capacity to accommodate your spot needs; you need to secure a firm resource commitment ahead of time.
This is where it gets interesting. What does ‘firm resource commitment ahead of time’ mean?
Always Read The Label
I surfed over to the AWS Customer Agreement to read the small print:
8.3. Reserved Instance Pricing. You may designate EC2 instances as subject to the reserved pricing and payment terms (“Reserved Instance Pricing”) set forth on the EC2 detail page on the AWS Website (each designated instance, a “Reserved Instance”). You may designate instances as Reserved Instances solely by calling to the Purchasing API (the “API Call”). In the API Call you must designate an availability zone, instance type and quantity for the applicable Reserved Instances. The Reserved Instances may only be used in the designated availability zone. We may change Reserved Instance Pricing at any time but price changes will not apply to previously designated Reserved Instances. We may terminate the Reserved Instance Pricing program at any time. Notwithstanding anything to the contrary herein, Reserved Instances are nontransferable and all amounts paid in connection with the Reserved Instances are nonrefundable, except that if we terminate this Agreement pursuant to Section 3.3 or terminate the Reserved Instance Pricing program we will refund you a pro rata portion of any up-front fee paid in connection with any previously designated Reserved Instances. In addition to being subject to Reserved Instance Pricing, Reserved Instances are subject to all data transfer and other fees applicable under this Agreement.
Hmm, suddenly I lost that warm, fuzzy feeling.
Obviously, a provider has to protect themselves and have a way to drop features/services should there be insufficient demand. From the above, it seems there are two ‘outs’ for Amazon. The first is contained in Section 3.3 and the other is if they simply terminate the program. Let’s look at Section 3.3:
3.3.2. Paid Services (other than Amazon FPS and Amazon DevPay). We may suspend your right and license to use any or all Paid Services (and any associated Amazon Properties) other than Amazon FPS and Amazon DevPay, or terminate this Agreement in its entirety (and, accordingly, cease providing all Services to you), for any reason or for no reason, at our discretion at any time by providing you sixty (60) days’ advance notice in accordance with the notice provisions set forth in Section 15 below.
If you want to use AWS for Disaster Recovery, you better have a plan B as Amazon will only give you 60 days’ notice if they decide to drop Reserved Instances. And there was I, thinking DR was a plan B… For some businesses, this may be enough of a commitment, but the more enterprise ’skin’ we put in the Cloud, the more we need firmer commitments from providers. I hope Amazon revises this decision and extends their commitment closer to that of traditional DR providers.
Potential Cost Savings
To give an idea of the cost savings, Geva Perry put together a useful online calculator where you can plug in the compute hours you need and understand the financial savings you’ll see. You can opt for the 1-year or 3-year reservation periods:
Geva goes on to highlight some common scenarios:
The default number I put in the hours column, 8760, is 24×365. So if, for example, you run a Large AMI for the entire year non-stop, you will save $1,153 by using reserved instances.
If you are curious to know the break-even point, it is 4,643 hours annually for the 1-Year fee and 2,381 hours annually for the 3-Year fee. In other words, if you expect to run an instance for more than 4,643 hours during the coming 12 months (works out to an average of 12 hours a day), you’re better off with Reserved, otherwise, stick to On-Demand.
This brings AWS pricing down to that of many traditional hosting providers, for those willing to commit upfront.
You might be thinking “what’s the benefit?” over just paying a traditional non-Cloud provider. In the next post, I’ll cover some security use cases where lower costs and elasticity come into play.
Oh, and if anyone from the AWS team thinks I’ve misinterpreted their Customer Agreement feel free to clarify in the comments and I’ll update the post.