AWS Cloud Financial Management
Optimize AWS costs without architectural changes or engineering overhead
In this economic climate, every dollar counts. This post will focus on how you can optimize your current AWS footprint with little to no architectural changes. These suggested modifications focus on improving price-to-performance without introducing engineering overhead, large planning cycles, and significant time investment. Many of these changes can save you between 10-20% overnight. The main areas of focus are:
- Modernizing your Amazon Elastic Block Store (Amazon EBS) volumes
- Swapping out underlying compute that is backing managed services such as Amazon Relational Database Service (Amazon RDS) and Amazon Aurora
- Exploring the benefits of moving your Linux-based workloads to capitalize on the significant price-to-performance that AWS Graviton-based Amazon Elastic Compute Cloud (Amazon EC2) instances can provide
Understanding the basics of your AWS environment
Before diving into these three specific areas, having a general understanding of your AWS environment’s efficiency will be immensely helpful. The first place you can look to understand our AWS costs is AWS Cost Explorer. Cost Explorer has an easy-to-use interface that lets you visualize, understand, and manage your AWS costs and usage over time. By using AWS Cost Explorer, you can create custom reports to visualize your spend on AWS to help identify areas of opportunity for cost optimization.
The second place you can look to better understand your overall AWS cost and usage efficiency is the ‘Rightsizing recommendations’ feature in Cost Explorer. Rightsizing recommendations help you identify cost-saving opportunities by downsizing or terminating instances in Amazon EC2. The recommendations analyze your Amazon EC2 resources and show you underutilized EC2 instances across member accounts in a single view, so you can identify potential savings on your overall AWS spend.
Lastly, AWS Trusted Advisor is another great tool you can use to find cost optimization opportunities. For example, highlighting underutilized Amazon EBS Volumes and idle Amazon RDS DB instances is just one of the many cost optimization checks Trusted Advisor can perform. Cost Explorer, Rightsizing recommendations, and Trusted Advisor are great places to start any cost optimization exercise, and worth viewing at least quarterly, to reduce or hinder waste within your AWS footprint.
Now, let’s walk through three specific cost optimization modifications that can potentially save you between 10-20% overnight.
Modernizing your Amazon Elastic Block Store (Amazon EBS) volumes
The easiest way to recognize up to 20% savings on your Amazon EBS spend is to upgrade your GP2 volumes to GP3 volumes. In addition to the cost benefits, GP3 volumes give you the ability to provision IOPS independently from the storage of the volume. This gives you another opportunity to rightsize your Amazon EBS volumes as some workloads running GP2 volumes need large volume sizes to meet IOPS requirements. This upgrade requires no downtime, since you can use Amazon EBS Elastic Volumes, which give you the ability to adjust your volume size, performance, and volume type without having to detach the volume or restart the instance. All current-generation instances support Amazon EBS Elastic Volumes. Using these Volumes also guarantees that your transitional volume performance will not fall below the source volume performance.
A brief example of what the savings would look like:
Assumptions: 150 individual 1 TB GP2 Volumes (3,000 IOPS)
Outcomes: Shows potential monthly and yearly savings by transitioning from GP2 volumes to GP3 volumes on a monthly basis.
Swapping out underlying compute that is backing managed services
After you’ve upgraded your Amazon EBS volumes, it’s time to optimize our Amazon RDS and Amazon Aurora footprints. The benefit of AWS managed services is that AWS offers partial or complete management of the cloud resources or infrastructure. Therefore AWS handles the performance, maintenance, and operability of the software.
AWS Graviton2-based database instances are available for Amazon Aurora PostgreSQL Compatible Edition and Amazon Aurora MySQL Compatible Edition. Graviton2 instances are also available for Amazon RDS for MySQL, Amazon RDS for PostgreSQL, and Amazon RDS for MariaDB. This is notable because Graviton2 instances provide up to a 20% performance improvement and up to 35% price-performance improvement for Aurora, depending on database size. Graviton2 instances provides up to 35% performance improvement and up to 52% price-performance improvement for RDS open source databases.
For implementation, upgrading an Aurora database instance to Graviton2 requires a simple instance type modification if you are on a supported database version. This allows your application to work as normal, requiring no porting of application code. For Amazon RDS, you will navigate to the Amazon RDS console, select your database, and click modify. You’ll then select the Gravtion2-based instance to meet your compute requirements. There is a short service interruption during this modification. By default the modification will be applied during your next scheduled maintenance window.
A brief example of what the savings would look like:
Assumptions: 25 Amazon Aurora db.r5.2xlarge instances and 25 Amazon RDS for MySQL db.r5.2xlarge instances
Outcomes: Shows potential monthly and yearly savings by backing your Aurora and RDS Databases with Graviton-based compute on a monthly basis.
Moving Linux-based workloads to Graviton-based Amazon EC2
The final place that we can look for cost savings is by analyzing any Amazon EC2 Linux-based workloads and the specific instance types being used. By leveraging the AWS Pricing Calculator, you can input your current compute requirements (Memory, vCPU, Networking, etc.) to identify better price performance-based instances.
Ideally, look to use Graviton2-based Amazon EC2 instances for your Linux-based workloads, particularly if you have no technical dependencies requiring a x86-based chip architecture. The graphic below shows the general categorization of effort required to port any application over to a 64-Bit Arm processor.
Amazon EC2 M6g, C6g, and R6g instances deliver up to 40% better price performance compared to current generation M5, C5, and R5 instances. Below is a brief example of what these savings could look like:
Assumptions:
25 x t3.large instances
25 x c5.xlarge instances
25 x r5.xlarge instances
25 x m5.2xlarge instances
Outcomes: Shows potential monthly and yearly savings by moving Linux-based workloads to Graviton-based Amazon EC2
Conclusion
These modifications can help you optimize your AWS costs without having to introduce any application re-architecture, system re-architecture, or engineering overhead.
To ensure cost proper prioritization, here are the proposed changes in order of required effort:
- Upgrading Amazon EBS Volumes from GP2 to GP3
- Swapping Amazon RDS/Amazon Aurora underlying compute to Graviton-based instances or latest generation instances depending on your DB engine
- Migrating existing Linux-based workloads to run on Graviton 64-Bit Arm-based Amazon EC2 instances.
🗺️Explore and get started: Key ways to start optimizing your AWS cloud costs