In a previous blog series, I discussed the basics of EC2 Reserved Instances, the importance of purchasing them, and how to maximize your return on investment. If you are using Amazon’s Relational Database Service (RDS) to operate and scale a relational database such as MySQL or Oracle in the cloud, it’s highly advisable that you purchase reserved instances. Not only will you minimize your costs, but you also guarantee your ability to launch RDS instances when you need them. If AWS runs out of available RDS instances in a specific region, those with reserved instances have guaranteed capacity while the ones running On-Demand do not.
What is RDS?
Amazon RDS makes it easy to configure, run, and scale a relational database in the cloud. It provides cost-efficient and resizable capacity while managing time-consuming database administration tasks that save your team precious time. With Amazon RDS you can choose from six different database engines, including Amazon Aurora, Oracle, Microsoft SQL Server, PostgreSQL, MySQL, and MariaDB.
Currently the average user spends about 6% of their total AWS bill on RDS. It has become a critical building block for cloud applications. Surprisingly, however, even though RDS reserved instances can save 60%+ on the compute costs of operating an RDS instance, on average only 14% of RDS instances actually run under a reservation.
Why Reserve? (Pricing)
Not unlike EC2 Reservations, RDS Reserved Instances can be purchased for either a 1-year or 3-year term. This results in a significant discount (somewhere between 20-60%) compared to the On-Demand Instance hourly pricing. In addition, it has the added perk of guaranteeing your ability to launch the instances you reserved when you need them.
You can choose between three payment options when you purchase a Reserved Instance:
Pay for the entire term with one upfront payment.
Receive up to a 63% discount off of On-Demand pricing.
The payback period is typically around 9 months.
Pay a low upfront payment and receive a discounted hourly rate for the instance for the duration of the Reserved Instance term.
Receive up to a 60% discount off of On-Demand pricing.
The payback period is typically between 5 and 7 months.
Pay nothing upfront.
Pay only a discounted hourly rate for the duration of the term. Savings are typically around 30% off of On-Demand pricing.
The payback period is immediate.
All Reserved Instance types are available for Aurora, MySQL, PostgreSQL, Oracle, and SQL Server (except for SQL Server as the license is included) database engines.
How Do I Know What I Should Reserve?
Step 1: What’s my usage?
Analyze your On-Demand usage by choosing a time period such as the previous month, week or even day. You should look to reserve the running instances in a time period that is most reflective of the usage you expect in the future. For more static environments I recommend a longer period of time.
Eliminate any groups or instances that won’t run more than 65% of the time. You can calculate this by the total number of hours the instance ran in a one-month period. See the image below.
Also eliminate any that you don’t expect to be running 6 months from now.
Step 2: Run across multiple Availability Zones?
Your current instance usage will dictate the regions (e.g. us-east-1 or us-west-1) in which you should reserve. However, you’ll still need to decide if you want the reservation to run across multiple Availability Zones (multi-AZ) within a region.
One of the most compelling RDS features is the ability to have a fully managed high availability deployment. But, keep in mind that since multi-AZ support requires an instance running in two different zones, the average compute cost will be doubled.
Step 3: Choose a term: 1-year vs. 3-year?
Most AWS customers gravitate toward the 1-year term for reservations as a hedge against the potential for new instance types being made available during the course of the reservation term. However, since 3-year reservations provide the highest discount rate, think twice before ruling out this option.
Step 4: Evaluate the reservation type – All Upfront, Partial or None?
Sometimes the increased savings you reap from All Upfront reservations are not enough to justify their initial upfront fee. The table below shows how purchasing an All Upfront db.t2.micro reservation will cost $51 more in advance and only offer 2% more in monthly savings. Obviously the number of reservations will affect the dollar amount savings. Just be sure to do the math.
Step 5: In which account should I make a purchase?
If you have more than one account linked to a consolidated bill, you can either purchase in the consolidated account or in each individual linked account.
As reservations can float between linked accounts under a consolidated bill, other accounts can still benefit from the associated discount if a valid instance isn’t running in the purchasing account.
If your goal is to simplify the purchase and management of your reservations and you are indifferent to capacity reservation, you should purchase in your consolidated account. However, if you want to ensure that you’re guaranteed the ability to launch the instances you are reserving whenever you need them, you will want to purchase in each individual linked account.
Running relational databases in the cloud? RDS is a simple and cost effective option that takes the database management out of the equation. Utilizing RDS reservations will allow you to take advantage of cost savings that optimize your cloud investment while guaranteeing capacity.
The ability to easily manage RDS usage and reservations and maximize cloud efficiency is at your fingertips with CloudHealth. Try a free 14 day trial to see how you can model, optimize and plan your most cost optimal purchase in seconds.
A 30%+ coupon always softens the blow of an expensive purchase. Unfortunately, when you read the fine print, the items you really want are the same ones that are typically excluded. Fortunately, with Amazon’s RIs, Murphy’s Law is often the exception, not the rule.
You can take your reservation discount with you, *almost* anywhere you go, provided you have the insight to do so. This ability is perhaps one of the best benefits of Amazon’s Reserved Instances as it provides insurance for those hesitant to commit to 1 or 3 year reservation terms.
This way, when your usage needs change, you simply switch your reservations to carry your cost reduction and capacity reservation wherever your usage leads you.
Let’s imagine you’ve prepaid 2 Linux m3.medium reservations in us-east-1d but your usage has shifted almost entirely to Linux m3.large instances in us-east-1e. You can make an equal exchange of 2 m3.medium instance reservations for 1 m3.large (equal in the sense that the footprint is the same) and swap the AZ to match your current On-Demand usage. This will help to close the gap between number of reservations available versus number of instances in use.
By doing so, you ensure that that you receive the On-Demand pricing percentage discount you’re entitled to. Otherwise, you’re missing out on the significant hourly discount and not chipping away at the amortized upfront amount you originally made to Amazon for the reservation.
While there are some cases where reservations cannot be modified (e.g.if terminating hours do not match as well as licensing restrictions on Windows boxes, etc.), the majority of them can easily be modified in the following ways:
Availability Zones within the same region (us-east-1a –>us-east-1c)
EC2-VPC and EC2-Classic
Different instance type within the same instance family (2 m3.med for 1 m3.large)
As your needs change, you needn’t be held prisoner to your reservations, or write them off at a loss; however, RI modification does need to be an integral part of your RI management processes in order to maximize your return on investment. If not, you’re just leaving money on the cloud table.
Modifications can be submitted through the AWS console, the API or automatically via a cloud management platform like CloudHealth®. How often do you check for modifications?
Do Reserved Instances make you anxious? They shouldn’t.
A lot of people get caught up in all the different possible reservations you can purchase and wait months before making their first purchase.
Don’t do that.
Below is all you need to start saving money and take advantage of Amazon’s capacity guarantee today.
Step 1: Arrange Your Instances by Their Purpose
How do you group your infrastructure? By project, environment or application? Great. Put them all together and separate by OS and move on to step 2. If you mix Windows and Linux instances, it will complicate the entire process because of licensing and pricing differences.
Step 2: Figure Out the Cost
Once you’ve organized your instances into groups by their purpose, figure out what your current on-demand costs are and arrange your groups in descending order.
Step 3: Find Out Who Makes the Cut
Eliminate any groups or instances that won’t be running more than 65% of the time. Also eliminate any that you don’t expect to be running 1 year from now.
Step 4: Figure Out Where Your Reservations Will Reside
Once you’ve figured out the region (e.g. us-east-1 or us-west-1), you’ll need to specifically choose the availability zone where you currently have the most on-demand usage (e.g. 1a or 1b).
You’ll also have to choose whether they will reside within a VPC or in classic EC2 mode. For most newer customers your infrastructure will most likely already be in a VPC.
Step 5: Decide How Much You’re Going to Give AWS Upfront
Sometimes the increased savings you reap from all upfront reservations are not enough to justify their initial upfront fee. The table below shows how purchasing an all upfront m3.large reservation will cost $308 ($751-$443) more and only offer 2% more in monthly savings. Obviously the number of reservations will affect the dollar amount savings, so make sure to do the math regardless.
Step 6: Determine the Purchasing Account
Do you have more than one account linked to a consolidated bill?
a) Purchase in the consolidated account if you don’t care about the capacity reservation. This option simplifies the purchase and management of reservations, but you’re not guaranteed to be able to launch an instance based on a reservation in a linked account if the reservation was made in another account.
b) Purchase in the linked accounts if you want to receive the cost and capacity reservation of the RI, although the planning process will be significantly more complex. Note: Other accounts can still benefit from the associated discount if a valid instance isn’t running in the purchasing account.
Based on experience, the best advice I can give is to purchase reservations on an account-by-account basis.
Keeping costs under control as your cloud infrastructure scales is no easy feat. To balance the two challenges, Reserved Instances provide substantial cost and capacity benefits. Their pricing discounts can even “float” across accounts that are linked to the consolidated bill to get the most of our your investment.
Afraid of Commitment? Don’t Be.
Although many fear overcommitting to Reserved Instances, a 1-year term reservation will almost always break even after 6 months. This is the point at which you can stop using that instance and still benefit from the reservation’s pricing discount. For a 3-year reservation, this break-even point typically occurs around 9 months.
With that said, if you’re worried about your usage needs changing down the road, it’s easy to determine whether reservations can still be more cost-effective than on-demand pricing. If all that concerns you is the instance type or availability zone, AWS makes it simple to modify reservations. In the worst case scenario, you could always sell them on the Reserved Instance Marketplace, provided you have a US bank account.
Pay Attention to the Payback Period
Taking this into consideration, the cost benefits become very apparent to organizations with infrastructure that is always-on. Using the effective rate formula we can easily calculate the exact number of months at 100% usage we need before we receive a price benefit. We call this the payback period. This metric is invaluable for mitigating the risks of reservations by identifying how long you must actually use them before they break even. It’s calculated by comparing the cash outlay for on-demand usage and the proposed offering over each month in a term, and then identifying the month at which the cost for the on-demand instance usage exceeds the cost for the reserved offering. There is no payback period for a no-upfront reservation, since they are less expensive than on-demand immediately.
Let’s take a look at just how cost-effective reservations can be over time. With a 1-year upfront reservation for an m3.large instance in the us-east-1a region you can expect to save 37% per month!
effective rate = upfront payment / reservation term / interval + recurring usage charges for interval
While the effective cost per month savings are certainly significant, let’s take a look at one of the more confusing behaviors of RI’s – their ability to “float” across accounts.
What Happens When My Reservations “Float”?
By default, reservations have a tendency to satisfy the needs of the account in which they were purchased. However, if there is no instance usage in a given hour in the purchasing account, the reservations can “float” to a linked account to take advantage of the reservation.
While the price reduction benefits of RIs “float”, it’s important to note that the capacity reservation does not. Therefore, if you have an available reservation in account A but want to launch an equivalent instance in account B, you have no guarantee that sufficient capacity will be available.
Stay tuned for the next post on the best practices of RI management – from modeling purchases to modifying them and beyond.
Everyone talks about them, many reserve them but there’s still quite a bit of mystery surrounding how they actually work. As long as the bill is paid and your application isn’t down, many don’t think twice about them. But, in order to maximize your ROI, there’s a few important concepts to be conscious of in your cloud strategy.
What Are They?
AWS Reserved Instances (RIs) allow you to make a time and cost commitment to AWS to use specific instance types in return for a discount on the on-demand cost. The other, sometimes overlooked, major benefit is, of course, the capacity reservation. While spot instances can and will be terminated at the drop of a hat, on-demand instances provide an hourly capacity guarantee but reserved instances ensure that your workloads will run uninterrupted for the length of your 1 or 3 year reservations.
How Do They Differ from On-Demand Instances?
It is a common misconception that RIs are directly connected to specific launched instances. They are not. Instead, they are a simply pricing discount applied to any instance usage of a specific type (e.g. m3.large in us-east-1a running Linux). In other words, all usage is always billed at the on-demand rate. If you launch an instance that matches the example instance type, region, availability zone and operating system, at the end of the month you will be billed within the discounted percentage shown above, rather than the base on-demand amount. That’s it.
How Do They Reduce My Cost?
Think back to a time before landline phone plans included unlimited long distance minutes. Imagine a telephone service that charges $.05 per minute of usage, but $0.02 per minute to certain locations, provided that you subscribe to a particular plan. Once you’ve prepaid for a reservation, your hourly charges (think phone minutes) will be billed at a reduced rate, but only for calls within a certain region. Call one (think: launch an instance) that is outside of your subscription area (read: instance type, region, AZ and OS) and you won’t receive the discount that you signed up for. Because of this, it is critical to understand your instance usage by several factors, in order to maximize your return on investment.
Which Instance Gets The Discount?
Since multiple different reservation types (upfront amount and reservation term) and instance usage can match, the selection of a reservation gives preference toward applying the lowest hourly rate first. It’s also worth noting that reservations have an affinity toward the account in which they were purchased, although they can “float”. Assuming that you have more on-demand hours of usage for a different instance type of the same family, or even in a different AZ, reservations can be “modified” so that you receive the optimal cost benefit (more about this in a future post).
This randomized approach of RIs is both a powerful feature and a source of constant confusion. What I hear most from customers is that they purchased RIs for a specific environment or department, only to find out come bill time that its cost benefit has been applied elsewhere.
Keep your eye out for my next post on how reservations work with a consolidated bill and what it means when they “float”.
In the meantime, do you leverage RIs? If so, how are you managing them?