How to reduce AWS costs

This article will detail how Back4App reduced the AWS bill from $55,492/month to $20,074/month and achieved more than $500k in annualized savings. We will provide practical guidelines based on our own experience handling AWS costs and share some tips that worked well for us.

AWS continues to innovate and dominate the cloud market. It’s grown so much that it has become a key component of Amazon’s strategy. I’m an enthusiastic AWS user, but my concerns about its complexity and cost have led me to explore ways to optimize cloud usage. While it offers an increasingly sophisticated array of services for many kinds of development requirements, it’s not always the most straightforward, fastest, or most affordable option. Ideally, you need to design your architecture to optimize costs as soon as you move to the cloud. This guide will help you to speed up your AWS cost optimization with real lessons learned during our cloud cost savings journey.

Here is a summary of what you will find reading this article:

Ask for AWS credits and get up to $100,000;

Move data transfer to Cloud Front and save up to 75%;

Use private IP (not Elastic IP) and stop paying inter AZ data transfer;

Reduce data transfer costs with GraphQL API implementation;

Save up to 90% with using Spot Instances;

Save up to 75% purchasing reserved instances on AWS Marketplace;

Purchase reserved Elastic Cache nodes and save up to 77%;

Backup your data in S3 and not EBS and save 75%;

Implement Auto-scaling for idle resources;

Go for North Virginia region and move away from Sao Paulo;

Upgrade to new generation families and save up to 20%;

Place an S3 endpoint in your VPC and enable Enhanced Network on EC2.

Delete idle Load Balancers.

Use new AWS Savings Plan and save up to 72%.

Here is how we reduced our cloud costs…

That’s is how our AWS bill looked like in January 2019. A total cloud cost of $55,492.

AWS Bill Jan-2019

That’s is how our AWS bill looked like in May 2019. The total cost was $20,074.

AWS Bill May-2019

These are the 10 Ways to Reduce your AWS Costs

Ten Ways to Reduce AWS Costs

Don’t move on before confirming your company is entitled to AWS Credits.

1. AWS Credits

First things, first! Before you do any other activities, please see if your company is entitled to AWS credits! That is how you can get AWS credits.

Ask AWS for Credits

That was our case! We were in 2016 and scaling up the company pretty quickly. Our AWS bill was starting to ramp up, and we had no clue or time to optimize the AWS costs. The company had no funding yet and we would either get AWS credits or die. We prepared a business case to our account manager showing how much we were growing and the benefits of AWS keeping our account. We showed him that we had no funding and would have to move to Google Cloud (they had offered us $100,000 in credits to migrate out of AWS) unless we got the credits. The response took around one week, and AWS provided us $100,000 in credits to be used for 12 months. That was a pretty good deal to AWS too! Since the credits are expired, we spent more than $750k with them.

Credits for Testing & POC Implementation

If you are going to test a new AWS service or instance type, ask for credits to your AWS account manager. The number of credits will vary depending on your monthly spending and total effort to implement the POC. These credits usually last only for three months, and you need to make sure to expedite the POC. In our case, we were able to get $3,000 in credits to test it out the i3 instance family.

Credits for Startups

If you are starting your company or have a startup, this is a great way to move forward. The credits amount range from $1,000 to $100,000 depending on how you present your request to AWS. There a couple of ways you can get these credits.

Accelerators

One of the main benefits of a Startup Accelerator is the perks they provide. As part of the perks are cloud providers credits. The amount you can get here will vary depending on the Accelerator you are approved. Top ones like YC, Alchemist, Wayra and 500 Startups will offer you $100,000 in AWS credits. In our case, we were accepted at Alchemist Accelerator and were entitled to $100,000 in credits. Unfortunately, we were not able to use the credits because we had previously used other credits. AWS does not allow you to sum up credits. For example, if you are accepted on two accelerator programs and get $100,000 credits on each, you will not be able to use the $200,000, but only $100,000.

VC Funds & Angel Groups

Some VC / Angel Groups will provide cloud credits as part of the perks package. In our case, we were able to get $10,000 promotional credits valid for two years from one of our investors. Unfortunately, we were not able to use the credits. Companies are not eligible for AWS Promotional Credits if they previously received a similar or higher amount of credit.

All major cloud players provide credits for startups

All major cloud players will offer credits to startups. At AWS/Google the amount of the credits will go up to $100,000, and at Azure, you may get $360,000 to be used for three years.

2. Implement an AWS cost-saving routine

The easy part is over and now let’s go for the hard work! There is no magic pill, and to reduce your AWS cost, you will need to work hard and have a regular cost monitoring routine! Reducing cloud cost has to be a part of your daily routine! Imagine how much you can save after 365 days! The amount of time you invest depends on the size of your organization and your AWS spending. I invest around 30 min/day to monitor the account and prioritize the cost reduction actions. On top of that of Back4App’s engineers spend at least 1 hour/day to implement cost reduction initiatives.

The first action we implemented was to create a simple excel spreadsheet (download below) and prioritize cost savings initiatives.

Download your AWS Cost Optimization Template

The main variables we used to determine the savings were:

Cost Saving Potential — Maximum gains for a cost-saving action

Complexity — How hard it is to implement the work and effort required

Owner — Who will perform the action

In our case, the majority of savings related to the Elastic Compute Cloud usage, and that was the first item we started to tackle.

3. EC2 — Elastic Compute Cloud

Here are some guidelines on how to optimize EC2 spending.

Shutdown unused instances

The first thing you need to do when reducing EC2 spending is to shut down unused instances. There is no rocket science here, and most of the work is pretty straightforward. All you need to do is to list all your instances, download free excel sample, and categorize each one. In our case, we categorized our instances in 3 major categories:

Download your AWS Cost Reduction Spreadsheet

Instances that need to stay active

Instances that can be stopped

Instances that can be terminated

Don’t stop, but terminate instances

Terminate unused instances whenever is possible! If you only stop it, you will keep the EBS costs running!

Reduce oversized resources

This action is a little complex, and it’s essential to assess the instance size correctly. Please make sure you evaluate at least one week of data to increase the likelihood of correctly sizing the instance. The way we controlled it was categorizing instances in 3 main categories (download excel below)

Correct Size

Reduce Instance Size

Increase Instance Size

AWS Bill Reduction Template

The way to check the instance historical data is super simple, and on your AWS Panel, you need to go to Services, EC2, Instances, Running Instances, select instance, monitoring. An example of metrics that you can check is CPU Utilization.

Reduce instance size incrementally

Reduce instance size step by step. For example, don’t reduce the size from a t2.xlarge size to t2.medium. Firstly reduce it from t2.2xlarge to t2.xlarge. Monitor for one week, check how much of the resources are being used and implement the reduction cycle again. Doing this way, you will decrease the likely hood of having any downtime or making mistakes.

Use Reserved Instances

Reserving an instance may get you savings up to 70%. Please note that when you reserve an instance, you will pay 24/7 utilization during the entire reserved period. You will pay regardless you use or not the resources.

There are two types of reserved instances offering classes:

Standard — You can sell on AWS Marketplace, cannot convert to another instance type, its cheaper than convertible instances.

Convertible — Cannot sell on AWS Marketplace, can convert to another instance type, more expensive than Standard instances.

Convertible instances can be tricky

Convertible instances are very tricky! Every time you convert an instance, you can only upgrade the usage. For example, let’s consider the following situation.

You acquired a t3.medium convertible reserved instance.

You decided to convert the t3.medium instance to an m5.large instance.

You will be able to do that! After using the m5.large instance for a while, you want to go back to the original t3.medium instance.

That’s no longer possible!

You cannot downgrade a convertible instance, but only increase the amount you spend with it. So, please make sure you start with small convertible instances and increase it during the time. Don’t start with a large instance because you cannot downgrade it or sell it in the AWS Marketplace. If you make a mistake with convertible reserved instances, you are committed to a monthly payment for 12 or 36 months. At Back4App, the way we handle convertible instances is always acquiring t2.nano and upgrading it when necessary.

I prefer Standard Reserved instances to Convertible Reserved Instances. The reasons are:

They are cheaper

They have liquidity — It’s possible to sell on the AWS Marketplace at any given time

You can buy it on AWS Marketplace with discount

Use AWS Savings Plan

AWS released this new flexible pricing model on Nov, 6th, 2019 and looks like as a much simpler way to save on computing power.

Savings Plans are a flexible pricing model that offer low prices on EC2 and Fargate usage, in trade for a promise to a steady amount of usage (measured in $/hour) for a one or three year cycle. When you sign up for Savings Plans, you will be priced the discounted Savings Plans price for your usage up to your commitment. For example, if you commit to $100 of EC2 usage an hour, you will get the Savings Plans prices on that usage up to $100, and AWS will charge any usage exceeding the engagement as per On Demand rates.

Here is how the process works:

Go to the Billing Management Console

On the left-hand side look for Savings Plan and click on it.

The following page will open:

AWS Savings Plan

On the right-hand upper side click on Purchase a Savings Plan.

Now you need to choose between Compute and EC2 Savings Plan.

AWS Savings Plan — Compute Savings

For this purchase, I will choose Compute because it delivers more flexibility.

Next step is to choose the term commitment:

Two options: (I) 1 Year (II) 3 Years

For this purchase, I will choose 3 years commitment to get the best savings rates.

Now you have to choose the hourly commitment.

I will choose $0.01/hour commitment for 3 years.

It will implicate in a $262.80 upfront cost.

AWS Savings Plans — Purchase Example

Click on Add to cart.

A new will page will open with the purchase information.

AWS Savings Plan — Purchase Information

Click on Submit order.

AWS Savings Plan — Submit Order

Click on Submit order.

That’s it! You will start to capture the savings over all your computing power. No matter the region, instance type, instance sizer or tenancy. Pretty simple and effective!

Please refer to this article and know more about AWS Savings Plan.

How to calculate Savings Plan purchase amount?

Let’s consider you have an account that runs one m5.large Linux instance in the North Virginia region. The account will have the following on-demand computing cost:

Hourly Cost: $0.096

Daily Cost: $2.304

Yearly Cost: $840.96

Now, let’s consider you want to purchase computing savings plans to reduce your costs, and your computing usage will keep exactly the same for the entire year. I will assume you will purchase a 1-year, all upfront package.

How much in savings plans should you purchase?

Should you purchase $840.96? The answer is NO! That’s the full on-demand price! Doing that, you will over purchase, and a percentage of your savings plan will not be used. The way Savings Plan operates is different from reserved instances, and please be cautious in buying it.



Let’s do the math here. According to AWS’ Savings Plan pricing page, the Savings Plan for the m5.large Linux instance will have a 31% discount over the on-demand rate.

Savings Plan = On-Demand Price x (1-Discount Rate)

Savings Plan = $840.96 * (1–31%)

Savings Plan = $580.26

Be cautious with AWS Savings Plan

Please be aware that you cannot sell Savings Plan on the AWS Marketplace. As soon as you buy it, the commitment is for the entire period and you don’t have the option to revert the purchase. If you want to have the flexibility to sell instances on the AWS Marketplace, please purchase Standard Reserved Instances. Please read the paragraph below for more information about how to buy and sell on the AWS Marketplace.

Use AWS Marketplace for Reserved Instances

Reserved instances are great, but Reserved Instances purchased on AWS Marketplace are even better!

AWS Marketplace can be much cheaper

AWS Marketplace looks like a stock market! You can sometimes buy Standard Reserved Instances with pricing much more affordable in comparison to buying directly from AWS. The reason for that is simple; companies sometimes have superfluous instances that they are no longer being used and still paying for it. Reducing the list price is a great way to speed up the selling process.

I will give now a real example that happened with Back4App. I was looking for four r4.large reserved instances. I was able to find instances on the AWS Marketplace with effective rates with a 75% discount in comparison to on-demand pricing. AWS was selling the same reserved instance type with a 62% discount.

AWS Marketplace has flexible purchase terms

The other advantage of AWS Marketplace is that you can purchase instances with flexible period terms. AWS only provides 12 months / 36 months of options to acquire reserved instances. The AWS Marketplace is much more flexible! You can purchase, for example, reserved instances with a 15 months term for the same price of 36 months. Some companies acquire long term reservations (36 months), and before the reservation expires, they sell the instances on the AWS Marketplace. The new buyer will only use the instance for the remaining period. For example:

Total Reserved Period: 36 months

Original Byer: Uses the instance for 21 months

Second-time buyer: Buy at the Marketplace and use it for an additional 15 months.

The main challenge to buy on AWS Marketplace is to find instances available. An excellent way to increase the likelihood of finding instances is looking for instances in several availability zones and not only on the availability zone that your instances locate. As soon as you purchase, it’s possible to modify an instance, and allocate it to a different availability zone, or transform it in a regional instance. The way to do it is pretty simple, and please follow the steps below:

Step 1 — Go to Reserved Instances Dashboard

Step 2 — Click on Purchase Reserved Instances

Step 3 — On Offering Class select Standard

Step 4 — On the upper right side of the Pop-Up window, select “Only show offerings that reserve capacity.”

Step 5 — Click on Search

Step 6 — Purchase an Instance from Availability Zone 1b

Step 7 — Wait until the instance is active

Step 8 — Select the instance that was acquired

Step 9 — Click on the button Actions

Step 10 — Click on Modify Reserved Instances

Step 11 — Scope — Change AZ or select Region

Step 12 — Click on Continue

Step 13 — Click on Submit Modifications

Following these steps will allow you to purchase Standard Reserved Instances in any availability zone and modify it to your availability zone.

AWS Marketplace for non-US companies

Here is valuable guidance for users that do not have a US Legal entity. You will NOT be able to sell Standard Reserved Instances on the Marketplace unless you have a US Legal entity. If you run your company outside the US, you will be able only to buy instances on the Marketplace, but will not be able to sell it.

Use Spot Instances

I love Spot Instances! You can save up 90% using it and don’t require long-term commitment! The only disadvantage of Spot Instances is that AWS can terminate these instances with little to no warning (max of 2 minutes). So, this type of instance should be used only for fault tolerant or flexible workloads.

Use SpotInst to run Spot Instances

A safe way to run Spot Instances and minimize the downtime risk is to use the SpotInst platform. This service will connect to your AWS account and manage the Spot Instances allocation. In the event, AWS terminate an instance this service will replace the instance for an On Demand one and prevent downtime. The pricing is also pretty smart, and they charge 20% of the net savings (between on-demand and spot price).

An excellent use case for Spot Instances is to run secondary database servers and also to auto scale applications. Use SpotInst to manage spot allocation, and most likely, you will never face any downtime related to the use of this offering class.

How do save AWS costs with Spot Instaces

Auto-scale ( Idle Resources, Automate start/stop of EC2 instances)

AWS Auto Scaling monitors your applications and automatically adjusts the capacity to maintain steady, predictable performance at the lowest possible cost. You configure the auto scaling to automate the start and stop of EC2 instances. Auto-scaling groups take into consideration resource utilization like CPU, API Requests, or start/terminate times.

To fully minimize costs, you should use Autoscaling + Spot Instances + Reserved Instances. Let’s see this real situation we faced here at Back4App. The workloads on our application servers vary throughout the day. The quantity of requests we receive is not flat and has peaks of usage during specific times during the day. The way we tackle this problem is by allocating reserved instances for the baseline of usage (minimum level) and scaling up with spot instances. The image below is helpful to understand the configuration we use. Here is how much you can save:

How to optimize AWS autoscaling

Reserved Instances: At Back4App, we have a blend of 12 months / 36 months standard reserved instances. Our average saving is 50% in comparison to on-demand costs.

Autoscaling: We start/stop instances based on the total API requests each instance receives. We have three peak usage periods during the day, and the savings compared to keeping the idle resources running 24 hours on maximum workload is around 75%.

Spot Instances: We have a blend of two family types running on Spotinst to maximize the uptime. Our net saving is 55% in comparison to on-demand pricing. That’s our net saving and considers the entire amount we have to pay to SpotInst. Running the spot instances directly on AWS would lead us to an approximate 70% saving, but would increase the availability risk. We like to play safe and decided to give part of the savings to SpotInst.

Tune your scaling

Tune Your Scaling with Vertical / Horizontal Scaling (Cloudformation)

Select the correct AWS Region to minimize costs

Cost varies by region! Choose the wrong one, and you will end up paying a lot more.

Cheapest regions are: North Virginia, Ohio and Oregon

Most expensive regions: Sao Paulo, Sidney, and Hong Kong

Take the following example:

4 x t3.medium instances

30GB EBS allocated for each instance

1TB total data transfer

This configuration will cost 102% more in Sao Paulo in comparison to North Virginia.

$221.65/month cost in North Virginia

$449.05/month cost in Sao Paulo

Comparing instances is a time-consuming process using AWS Pricing Calculator or the AWS Pricing API. Please checkout the EC2 Pricing Comparison Tool for a simplified comparison.

Centralizing your operation in a single Region has additional benefits.

Will be much easier to manage your reserved instances allocation

You will not incur in regional data transfer.

We at Back4App were not able to centralize all the services in North Virginia because of the scale of our operation and due to clients requirements. We decided to create regional clusters in the USA, Europe, and Asia. We centralize operations under these clusters and scale each region as much as we can.

Upgrade previous generation resources

AWS launches new instances types from time to time. The new generation instances are more affordable and have more processing power.

Old Generation Instance

c4.large

2 CPUs

3.75 GiB Memory

$0.100/hour

New Generation Instance

c5.large

2 CPUs

4 GiB Memory

$0.085/hour

The new generation instance is 15% less expensive and has 6% more processing power!

Enable enhanced network

Enable enhanced network for better instance performance!

Select the correct Instance Family

AWS provides several instance families that are optimized to meet multiple use cases.

General Purpose

Storage Optimized

Compute Optimized

Memory Optimized

Accelerated Computing

Choosing the family type wisely will make you have the best usage of resources according to your application requirements. Let’s consider that your app is a compute-intensive application, for example, a multiplayer game. In this hypothetical scenario processing power will be more important in comparison to other variables like memory or network. So, acquiring a Compute Optimized instance will allow you to achieve the best price per compute unit.

You can compare the pro and cons of each instance family using this EC2 Pricing Comparison tool.

Delete Idle Elastic Load Balancers

Load balancer charges are a function of requests processed and hours running. So, if you have idle load balancers make sure you delete it. Otherwise you will still pay $0.025 per hour (Classic LB in North Virginia). Please see pricing details here.

4. EBS — Elastic Block Store

EBS delivers persistent block storage volumes for use with EC2 instances in the AWS Cloud. Each Amazon EBS volume is replicated within its Availability Zone to protect you from component failure, offering high availability and durability. The cost for each GB stored depends on the type of volume you are going to store data. The most commonly used volumes are General Purpose SSD and Magnetic.

General Purpose SSD

$0.10/GB-month

Magnetic

$0.05/GB-month

EBS Type — SSD x Magnetic

Start mapping your EC2 instances and download this spreadsheet to help you. For each instance, determine if the volume is Magnetic or SSD.

Choose Magnetic over SSD whenever is possible.

Replace SSD volumes whenever is possible.

EBS Size — Reduce Oversized Volumes

The second action to save EBS costs is to determine the size of each attached volume. It’s common to have oversized volumes and unused capacity. Download this spreadsheet to know more.

EBS Cost Reduction Template

Terminate Instances — Stop will keep EBS Costs

Stopping an instance will not prevent you from having EBS costs! Your volume will continue to be stored, and the bill will come! If you don’t need the instance and the data anymore, terminate the instance! This action will stop both EC2 and EBS costs.

AWS will incrementally allow increasing EBS sizes, but will not allow you to decrease it. So, generally speaking, it’s better to have smaller volumes rather than large ones and only use EBS volumes when you need to.

Let’s simulate how costly this can be. Let’s assume you run 10 x t3.small instances and each instance has a 50GB SSD EBS storage. The monthly price will be as follows:

EC2 Monthly Cost = 10 x $15.23 = $152.30

EBS Total Size: 10 x 50GB = 500GB

Cost/GB: $0.10-month

EBS Monthly Cost: $50.00

Total Cost: $182.30

This simple example shows EBS can cost up to 32% of EC2 charges and plays a signification role on your AWS bill. This a typical hidden cost and has to be controlled and monitored.

Evaluate ephemeral storage

Evaluate also the pros/cons of ephemeral storage. On the pro side, you will not face EBS hidden costs, will get lower latency and will be able to get reserved instances discounts. On the downside, you may not use all internal storage available (and still pay for it), and the implementation of spot instances will be more complicated.

Delete Unattached Volumes

Another action that will save you money is merely deleting unattached and unused volumes.

Use S3 to backup data

EBS is at least twice as expensive as S3! Generally speaking, you should preferably backup data on S3 and not on EBS. Please make sure your backups also run incrementally and are deleted periodically.

Software development company? Join our Partner Program now!

5. Elastic Cache — Reserved Nodes

What very few people know is that you can purchase reserved instances for Elastic Cache. The savings are pretty good and detailed below:

1 Year Reservation — 65% discount

3 Years Reservation — 77% discount

The process is similar to acquiring EC2 reserved instances. To obtain a reserved node, you need to follow the steps below:

Go to Elastic Cache (not to EC2 reserved instances)

Go to Reserved Nodes

Click on Blue Button Purchase Reserved Node on the top right-hand side

Select Redis or Memcached

Select Node Type

Select Term (1 or 3 years)

Offering Type (Light, Medium, Heavy)

Click on Next

The other cost reduction actions regarding Elastic Cache are pretty much the same as EC2. You need to shut down unused nodes and reduce the oversized node.

There is no AWS Marketplace for Elastic Cache

Please note there is no Marketplace for Reserved Nodes! Before purchasing, make sure you will use the node for at least one year.

6. Data Transfer

This cost variable can get out of control pretty quickly! It’s very complex to manage and hard to discover from where to where the data is flowing. On top of that, there are several types of data transfer. For example, data transfer out, transfer between regions, transfer between AZs, S3 data transfer, etc.

I will detail how Back4App reduced data transfer costs and also how to monitor it.

How to reduce AWS data transfer costs?

Here are some practical procedures that will help you to reduce transfer costs.

AWS Data Transfer Cost Reduction Template

Connect your S3 endpoints to Cloudflare or other CDN service.

This simple action can reduce your S3 data transfer costs in 5x depending on how much cache you have.

Elastic IPs — Choose Private IP whenever possible

That’s a good one! AWS pricing calculator says data transfer-in is free to EC2 instances, but it also has an input box for “Public IP/Elastic IP Data Transfer.”If you choose to communicate using your Public or Elastic IP address or Elastic Load Balancer inside of the Amazon EC2 network, you will pay Intra-Region Data Transfer rates even if the instances are in the same Availability Zone. For data transfer within the same Availability Zone, you can easily avoid this charge (and get better network performance) by using your private IP whenever possible.

Use single AZ — Availability Zones

Use single AZ instead of multi-AZ for another significant saving. Avoid or stop data transfer between regions.

Inter Region Data Transfer

Here are some ways that will let you reduce Inter-Region Data Transfer:

Store your files locally on S3. Storing in another region will make you incur in regional data transfer.

Backup your data in the same AWS region.

Implement GraphQL APIs

One of the significant benefits of GraphQL is reducing over fetching and consequently, data transfer out. Replacing REST may be a challenging task depending on how your app is structured, and it’s essential to estimate the cost reduction potential before proceeding. Other alternative is to implement GraphQL incrementally for new projects or features. Please read the tutorial below for details of how to implement GraphQL APIs.

Data transfer volume discount

That’s pretty hard, and the volume you need it’s incredibly high. This action may only apply to enterprises or large accounts.

Use CloudFront!

You can get huge savings implementing this action! This action will also improve the performance of your application and reduce overall latency. That’s a win-win implementation. Please refer to the Cloudfront topic to read more details about it.

How to monitor data transfer costs?

There are two simple ways to monitor data transfer costs.

Cost Explorer

Bills

The way both reports consolidate data is different, and looking at both statements will provide a better overview of how you are spending money on data transfer.

To access the Cost Explorer report, you have to go to My Billing Dashboard and Click on Cost Explorer. Select the report Spend by Service View and a new window will open. A pre-built report with the last six months will open and let’s start with it. Please note that on the Service Colum there are NO data transfer costs! These costs hide inside the filters, and you need to dig deeper to discover it.

How to minimize AWS data transfer using AWS Cost Explorer

To find data transfer costs, you have to filter as follows:

Click on More Filters and the filters will expand

Select Usage Type Group

Now data transfer start to appear

Select Data Transfer — Inter AZ

Select Data Transfer — Internet Out

Select Data Transfer — Region to Region Out

Select S3 Data Transfer Out

Click on Apply Filters

After filtering the new report will look like this one:

Reduce AWS data transfer with cost explorer

Now you have the cost breakdown for data transfer, and you can determine where the data is coming out, either from S3 or EC2. If you wish you can implement a similar process and further breakdown the costs for each region and AZ.

Another way to visualize the data transfer costs via the billing report. Please go to My Billing Dashboard and click on Bills on the left-hand side.

The report will look like this:

Reduce AWS data transfer using Bill Report

Please note this already has a pre-built breakdown showing EC2 data transfer costs. Clicking on Data Transfer, you will have an analysis by region.

Optimize AWS Data Transfer via Region Breakdown

Selecting the Region, you will have a bandwidth breakdown by data transfer type (transfer out, inter AZ, inter-region).

AWS Data Transfer Optimization

7. Cloud Front

On-demand costs for Cloudfront are reduced pretty quickly as soon as you increase your volume. Let’s consider a 100TB data transfer. It will cost $0.060/GB, which is around 15% lower in comparison to the same volume on ELB data transfer.

Cloud Front Private Contract & Volume Pricing

Here is the best way to reduce data transfer costs! AWS is willing to leverage its CloudFront service, and depending on your volume, you can minimize CloudFront transfer out to a $0.02/GB rate. That will most likely demand a two years commitment, and if you plan to use AWS for a while is a great path to follow. To move forward, you have to contact your account manager and ask for a CloudFront Private Contract.

Amazon CloudFront SSL-Cert-Custom

Check if you are using this certificate. It costs $20/day, and you can get the same certificate with Cloudflare for $25/month. With the Private & Volume Pricing contract, you will not be allowed to connect to other CDN services, and this action will not be possible.

8. S3 — Simple Storage Service

Here some useful guidelines to reduce S3 costs.

S3 VPC endpoint

An excellent cost-saving initiative that most people fail to use is the S3 VPC endpoint. Placing an S3 endpoint in your VPC gives any traffic to S3 its internal route and AWS won’t charge you like public traffic. Depending on your volume, it’s possible to have reductions in the thousands of dollars per month range with this one method.

Use the correct storage model and appropriate storage class

There are five fives of storage models:

S3 Standard

$0.023/GB

Characteristics

Redundancy across AZs

Low latency and high throughput performance

Resilient against events that impact an entire Availability Zone

S3 Infrequent Access

$0.0125/GB

Characteristics

Ideal for long-term storage, backups, and as a data store for disaster recovery files.

Redundancy across AZs

Less frequent Access

S3 One-Zone Infrequent Access

$0.010/GB

Characteristics

Single-AZ

Less frequent Access

An excellent choice for storing secondary backup copies

S3 Glacier

$0.004/GB

Characteristics

A secure, durable, and low-cost storage class for data archiving

Redundancy across AZs

Retrieval options that range from a few minutes to hours

S3 Glacier Deep Archive

$0.00099/GB

Characteristics

Lowest-cost storage class and supports long-term retention and digital preservation for data that may be accessed once or twice in a year.

Retrieval time within 12 hours

Redundancy across AZs

S3 API costs can be tricky

Please be aware every time you move objects from one storage class to another, you will be charged based on the number of requests. That can be very tricky! I will share a situation that happened at Back4App. One of our customers’ stores millions of small objects, and the data is rarely retrieved. We initially stored these objects on the S3 standard and decided to move them to S3 Glacier to reduce costs. So far, so good! What we did not realize was that AWS charges $0.05 for each 1,000 Glacier requests! In this situation the number of objects was huge and the size of each object quite small. So, the upfront cost we faced did not pay off! Before moving objects between storage classes, it’s essential to take into consideration the costs related to S3 requests and conduct payback analyses.

Delete unused S3 data

The most simple and effective way to save costs on S3 is simply deleting old and unused data. Look for old backups and unused S3 buckets. Make the analyses and delete data if possible.

Software development company? Join our Partner Program now!

9. Choose AWS Support Type Wisely

There are four types of support levels:

Basic — Free

Developer — $29/mo or 3% of monthly bill

Business — $100/mo or 10%-3% of the monthly bill depending on the volume

Enterprise →$15,000

We tried Business support, and we were not happy with the results. In our perspective, it cost too much for the guidance and level of assistance it provides. I cannot comment on Enterprise support because we never tried it.

Use your AWS regional account manager

Use your regional account manager and solutions architect as much as you can! They are segregated from the central support team and will be able to provide much more personalized service. The AWS team is very skilled and helpful! The guidance they provided to us in terms of advanced security settings and GDPR implementation was best in class! I was impressed with the technical knowledge and commitment from the team to help us to achieve better results. This type of support makes me think twice before moving to other cloud providers.

10. Monitor & Control

It is of the absolute importance to keep a strict billing regimen and know your daily spends. You need to provide yourself with detailed monitoring of your costs and spend time looking at it every day. Imagine the volume of savings you can achieve after 365 days!

Daily monitoring will help you to identify suspicious uptrends and take action as soon as possible. Best practices related to Monitor & Control are detailed below:

Regular Monitoring.

Some useful reports are:

Billing & Cost Management Dashboard

Monthly Bills

Cost Explorer — Monthly Spending by Service View

Cost Explorer — RI Utilization

Cost Explorer — RI Coverage

Tag Everything

Measure The Baseline, Monitor, Alert On Exceptions

Establish A Responsibility Model

Use Cloudwatch and Trusted Advisor to monitor costs

Consolidate your billings and get volume discounts

11. Architecture Redesign

Architecture redesign is commonly the most time-consuming step to implement. It may take weeks or months, depending on how large/complex your infrastructure is.

Our experience at Back4app shows there are several more straightforward steps to perform before this one. Generally speaking, incremental improvements will provide you short term substantial savings. Cash in these savings first and gain experience to implement a best in class architecture redesign.

12. Conclusion

There is no magic pill to reduce AWS costs! You need to establish a regular routine to monitor your expenses, determine your cost savings priorities, and work like crazy to meet your AWS savings goals.

Here is a review of the actions that helped us to decrease our AWS bill.

Terminate unused EC2 instances

Reduce oversized AWS instances

Move data transfer flow to CloudFront

Upgrade to new generation instances

Implement best practices like enhanced network

Backup data on S3

Reserve instances on AWS Marketplace & Reserve Elastic Cache Nodes

Have a right blend of Spot, Reserved and On-Demand Instances

Automate autoscaling options

Mix storage between S3 Standard and Glacier

13. Contribute to this article

So, what do you think about the results we achieved? Has it helped you figure out how to reduce AWS costs?

If you would like to contribute to this article, please email me at george@back4app.com , and I will be happy to include your addition.

Your comments are also welcome!

Would you like to know more about reducing AWS costs? Please read these other articles:

Ten things you can do today to reduce AWS costs

Reducing your AWS monthly bill by 30%

How to Optimize AWS Costs

14. Contributions made to the article by readers

Maxim Melamedov from Cloudvisor.

Reserved Instances in RDS and Redshift

You can benefit from reserved instances discounts for your managed databases as well.

However, those RIs cannot be purchased/sold on Reserved Instances Marketplace.

Cleanup your account

Periodically delete unused or unattached assets like IP addresses and EBS volumes.

Those items accumulate over time and lead to unnecessary cloud spend.

15. Other articles

Here is some other topics you may be interested:

How to make an app?

What is a backend as a service?

What is GraphQL

Firebase Alternatives