Ways to optimize AWS costs

Since its inception in 2006, Amazon Web Services has grown to dominate the cloud market. AWS offers a variety of services that enables companies, governments and individuals to build complex and scalable applications.

It is important to take control of your AWS bill to plan for future projects and capacity requirements. There are multiple ways of optimizing your cloud costs. You may want to manage your AWS cost to gear up for future spending, or perhaps your customers are depending more on your services, increasing your AWS usage. You don’t want to pay for services you no longer need, or have long running applications that you don’t use anymore. This article will help you learn about ways to optimize your usage depending on your amount of work and consumption rate.

  1. Monitor your costs every day. If you watch them every day, you can stay on top of any surprises that occur. Identifying resources that are low or idle utilization will allow you to delete them before they start incurring extra cost. This may sound like a lot of work. But all you’re doing is glancing at the last day’s usage, making sure that it’s within your expected daily budget. This quick look at your bill will allow you to quickly see if there is an unexpected rise in costs, compared to the last few days.

  2. The AWS trusted advisor is a tool that runs configuration checks to find and prompt you for resources that aren’t being utilized to full capacity. I don’t always find the trusted advisor notifications useful. However, the underutilization alerts for idle hosts and unused disk volumes are the more useful checks. You can quickly scan the list of idle hosts and decide whether you want to delete them or keep them. This is a great way to make sure you’re not paying for unused resources.

  3. Spot instances help lower AWS billing. These permit AWS to assign their unused capacity to users at lower rates, depending on continued availability. Sometimes these resources are available at up to 90% discounted rates than regular prices. Spot instances can be used for fault tolerant or flexible workloads. Be aware that these can be terminated by AWS within just two minutes of a notification. Use them appropriately.

  4. It’s important to regularly clean up resources to optimize cost. This will help to shut down unused instances, especially in development environments around the end of a working day and weekends. It could be every day, or at least every week depending on the kind of business and workload you have. We have a recurring task for our devops team to go through and clean up unused resources. This task gets assigned to a new engineer every sprint, to spread the boring task of following up with potential owners of each resource. It’s time consuming, but effective at keeping your resource usage efficient.

  5. Subscribe to an AWS bill monitoring service. Some of these are: Billgist, Metricly and Yotascale. These services let you keep an eye on your AWS billing expenses. A Reddit user received a bill of $670 just by spending half an hour extra in the database running a few queries. Don’t wait for a surprise in the email, pick a monitoring service to avoid extra charges.

Some of these services are complex and feature rich. Others are fairly simple. Yotascale, for example, seems to be focused on best practices for cost optimization. While Metricly is focused more on EC2 instance cost optimization.

Billgist is based on our own, relatively simpler needs: send an email into the inbox showing us daily spending and how it's trending this month.

We also want the ability to have this report pushed to anyone on the team (e.g. accountant, CFO, someone with financial responsibility) without them needing to know how to sign into the AWS console.

If you manage client's AWS accounts (like our teams at Foretheta do), we want to be able to monitor multiple AWS accounts, without paying per seat pricing.

AWS bills keep on soaring if you lose track of your usage. You end up paying for applications running in the background long after you were done using them. Monitoring utilization every day and enabling a trusted adviser will help keep your AWS usage in check. Using a spot instance, periodically cleaning up resources and pushing AWS billing reports to your inbox will ensure you’re keeping up with the AWS costs that are being incurred.

Setting up push AWS billing reports to your inbox is an easy way to monitor your AWS cost on a daily basis.