Optimize AWS costs without architectural changes or engineering overhead

7 minute read
Content level: Intermediate
3

Recommendations to recognize cost savings on AWS

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:

  1. Modernizing your Amazon Elastic Block Store (Amazon EBS) volumes
  2. Swapping out underlying compute that is backing managed services such as Amazon Relational Database Service (Amazon RDS) and Amazon Aurora
  3. 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.

Figure 1. Sample cost and usage graph in AWS Cost Explorer

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.

Figure 2. View of rightsizing recommendations in AWS Cost Explorer

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:

Figure 3. View of potential monthly and yearly savings by transitioning from GP2 to GP3 volumes on a monthly basis

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:

Figure 4. View of potential monthly and yearly savings by backing your Aurora and RDS databases with Graviton-based compute on a monthly basis

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.

Figure 5. Sample view of configuring Amazon EC2 instances in the AWS Pricing Calculator

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.

Figure 6. Chart that categorizes effort level of AWS Graviton adoption by workload

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:

Figure 7. View of potential monthly and yearly savings by moving Linux-based workloads to Graviton-based Amazon EC2

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
profile pictureAWS
EXPERT
rdoty
published 10 months ago5647 views