[originally posted on https://www.cloudhealthtech.com/blog/modeling-rds-reservations]
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:
- All Upfront
- 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.
- Partial Upfront
- 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.
- No Upfront
- 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.