Essential AWS Cost-Saving Tips
As easy as it is to provision resources like servers, load balancers, etc in Cloud it also comes at a cost. Recent studies show that $10 billion is the annual waste across AWS, GCP, Azure. Since AWS is the largest of the three it also accounts for $6.4 billion, according to RightScale.
Few reasons why companies waste a lot of money is due to :
- The ease with which resources can be provisioned.
- Lack of visibility of provisioned resources.
- Unaware of how much you’re spending on a resource until you get the bill at the end of the month.
Top 10 Tips for AWS Cloud Cost Optimization
Here are our top tips to save money on AWS :
1. EC2 Spend
Possibly the biggest place where people tend to lose money is on their AWS EC2 instances. This is one of the biggest sunk costs when it comes to overspending and requires a post dedicated just for EC2 cost optimization.
2. Deleting old AMIs and Snapshots
An Amazon Machine Image (AMI) is a master image for the creation of virtual servers (known as EC2 instances) in the Amazon Web Services (AWS) environment. The machine images are like templates that are configured with an operating system and other software, which determine the user’s operating environment.
If you create an AMI from an existing instance, once the AMI is created, AWS creates a snapshot of the root storage as well as all the EBS volumes that are attached to the instance. When you deregister the AMI, it is simply deleted. However, all the snapshots that were attached to the AMI remain and need to be deleted manually.
Most often people forget to delete the associated snapshots even if they delete the AMI.
Creating an AMI does not have any cost associated with it but you are charged for the snapshot of the AMI, and if it is S3-backed you will be charged for the S3 Storage costs as applicable.
3. AWS Elastic IPs
Elastic IPs are free, as long as they are being used by an instance. However, Amazon will charge you $0.01/hr for each EIP that you reserve and do not use. Say you have terminated an EC2 instance but have forgotten to release the elastic ip that was associated with it then you will be charged nearly $7.2. Small costs like this add up to big month up bills.
4. Unused AWS EBS Volumes
An Amazon EBS volume is a durable, block-level storage device that you can attach to a single EC2 instance. You can use EBS volumes as primary storage for data that requires frequent updates, such as the system drive for an instance or storage for a database application.
EBS Volumes that are not being used, ie, the instances they were associated with are terminated are present in the ‘available’ state. These volumes, if not required, should be deleted. EBS volumes have various prices according to the volume type used. To know more about EBS pricing.
5. Unused Load Balancers
Load Balancers can be quite expensive, AWS has three types: Elastic, Application, Network load balancers. They all have varying prices and cost a lot when detached from instances. A detached load balancer has an hourly cost of about $0.0225 that can come around $16 per month if left without deleting them.
6. VPCs should have S3 endpoints for reduced Data Transfer Costs
By configuring S3 endpoints to the VPCs data transfer charges won’t be applicable while accessing S3 objects from the private subnets of VPC. These endpoints are easy to configure and provide a secure connection to S3 via AWS internal infrastructure for routing network traffic that does not require a gateway or NAT instances. This can reduce Data Transfer charges significantly where much of the infrastructure is hosted in private subnets and use a lot of data from S3 e.g. Hadoop or Analytics workloads
7. EC2 Instances with a public IP address incur higher Data Transfer costs
EC2 instances with a public IP address incur data transfer charges at a different rate as compared instances that do not have a public IP address. Not understanding the costs of Data Transfer can lead to a significant increase in costs over time.
8. Underutilized IOPs volumes
Of all the volume types IOPs optimized volumes are by far the most expensive. Most consumers assume that their application requires high throughput and hence choose this volume type over something cheaper, but most often the volumes that are provisioned are usually underutilized if a thorough analysis does not happen before provisioning them. By using CloudWatch metrics you will be able to figure out the actual utilization of your volumes.
9. Select the correct S3 storage class
S3 has various storage classes that correspond to various usage patterns. It is important to figure out how frequently or infrequently your stored data is going to be used before choosing a storage class. To know more about S3 storage classes and uses click here.( Link back to our S3 storage class article).
10. Design for Elasticity
As interesting as it might sound, the above guidance helps manage waste of existing applications. However, given that most of the applications on the cloud are ‘Lift and Shift’ from on-premise, they are not designed to scale automatically in response to varying demand. Designing the applications to be stateless and making them cloud-native (e.g. 12 factor apps ) will ensure applications can better utilize the on-demand nature cloud. We will cover common application patterns and how these can be adapted to cloud in a separate article.
As nice as all this sounds it’s harder said than done to apply all these tips across all your AWS regions, and accounts, so let us do it for you! We at Insisiv provide you with a clear overview of all your idle and underutilized resources across all your AWS regions, and we also give you the option of taking actions on them right from our dashboard.