Background
In the pursuit of cost optimization without sacrificing performance, I recently embarked on an initiative to reduce the AWS expenses. This journey led me to uncover a significant opportunity for savings by leveraging Amazon Aurora’s I/O-Optimized configuration. In this post, I’ll share how switching to Aurora I/O-Optimized reduced the database costs substantially.
Analyzing AWS Costs
Utilizing AWS Cost Explorer, I dived deep into the spending patterns to identify the primary cost drivers. As expected, database usage topped the list, with Amazon Aurora PostgreSQL being a significant contributor. It became evident that optimizing the database expenses could yield substantial cost savings.
Understanding Aurora Storage Configuration Options
Generally you will see a notification on RDS aws console about this accouncement “Introducing Aurora I/O-Optimized”
While assessing the costs and usage types, I discovered that Amazon Aurora offers two cluster storage configuration options:
- Aurora Standard (Default)
- Aurora I/O-Optimized
The choice between these configurations has a direct impact on price-performance. By reviewing the metrics, I realized that the application had high I/O usage, leading to significant Storage I/O Usage charges. Below is the last month (July 24) cost breakdown for Aurora database cluster.
Insights from AWS Release Notes
Delving deeper, I found AWS release notes highlighting the benefits of Aurora I/O-Optimized:
You can now choose between two configurations: Aurora Standard or Aurora I/O-Optimized. For applications with low-to-moderate I/Os, Aurora Standard is a cost-effective option. For applications with high I/Os, Aurora I/O-Optimized provides improved price performance, predictable pricing, and up to 40% cost savings. You can switch your cluster with a single click in the AWS Management Console or with a command through the AWS Command Line Interface. You can switch existing database clusters to Aurora I/O-Optimized once every 30 days and switch back to Aurora Standard at any time.
Aurora I/O-Optimized offers up to 40% cost savings for I/O-intensive applications where I/O charges exceed 25% of the total Aurora database spend.
This was particularly relevant for us since the I/O costs accounted for approximately around 30% of our total database spending.
Making the Switch to Aurora I/O-Optimized
Given the potential benefits and the flexibility to revert the change if necessary, I decided to switch our cluster storage configuration to Aurora I/O-Optimized. The process was straightforward and involved just a few clicks in the AWS Management Console.
The Results
Below stats compare the costing for last 2 months Jul & Aug 2024. Where we made changes in Aug 2024
After waiting for a month to assess the impact, I reviewed our billing and found impressive results:
- Significant Cost Reduction: The database spending decreased by approximately $700 per month. You could see the clear reduction in “Aurora:StorageIOUsage” & “InstanceUsage:db.r6g.xl” due to this change and its applicable pricing model.
- No Performance Degradation: The switch did not affect our application’s performance and no resoruces cutdown at all.
- No Instance Size Changes: We didn’t need to alter the size of our instances or make any other infrastructure changes.
This was a substantial win, especially considering the simplicity of the solution. By merely changing the cluster storage configuration, we achieved significant cost savings without compromising on performance.
Conclusion
For organizations running I/O-intensive applications on Amazon Aurora, especially when I/O charges exceed 25% of total database costs, switching to Aurora I/O-Optimized can lead to substantial savings. With the ease of switching back if needed, it’s a low-risk move that can positively impact your bottom line.
References
- Getting Started with Amazon Aurora I/O-Optimized – AWS Databases in 15
https://www.youtube.com/watch?v=OlFeaVd6Ll4&ab_channel=AWSDevelopers - RDS Instance Cost Explanation
https://developer-cost-guide.projects.macroscope.io/guides/guide-03-rds/#total-rds-instance-cost