This work is licensed under CC BY 4.0 - Read how use or adaptation requires attribution

Playbook Details

  • Status: Graduated
  • Slack room: https://finopsfoundation.slack.com/archives/C029SCMA50B

Reducing Waste

This Project focuses on providing a collection of resources to help identify types of cloud cost waste by service provider, including links to additional tools. You can sort each card by cloud service provider or savings potential.

Filter by cloud provider:

Filter by saving potential:

EC2 - Idle Resources

Compute - Waste

AWS
$$$

Analyze CPU, memory, disk, and network utilization. Anything with 0 across all 4 metrics in the last 14 days we flag the resource as being idle.

Aurora

Database - Efficiency

AWS

Use global clusters for DR

Read the story

Dynamo DB Backups

Database - Waste

AWS
$$

Check how often you are running full DynamoDB backups; they could be running every 5 minutes with no retention policy. Over time these costs compound. Determine if the business requires this much backup data, if not one option is to switch to a solution of using point-in-time recovery for Dynamo.

Read the story Related material

RDS - Idle Resources

Database - Waste

AWS
$$$

Analyze CPU, memory, disk, and network utilization. Anything with 0 across all 4 metrics in the last 14 days we flag the resource as being idle.

Marketplace Licenses - Pay as you Go

Marketplace / Licensing - Waste / efficiency

AWS
$$$

Manually investigate the largest vendor spend. Create scripts that swaps out license sizing and the infrastructure underneath.

Read the story Code example

CloudWatch

Monitoring - Waste

AWS
$

To reduce ingestion costs, stop ingestion of unnecessary logs. To reduce storage costs, change the retention period for your log groups. To reduce ingested log data scanned for CloudWatch Logs Insights queries, run queries for a shorter duration.

Read the story Related material Code example

Load Balancers

Network - Waste

AWS
$

Identified through Trusted Advisor in the AWS console.

Unattached Elastic IPs

Network - Waste

AWS
$

Unattached EIP cost $0.005 an hour. Over time this can compound into a waste of money. Also if there is something causing these EIPs to be unattached this problem will grow.

Read the story Related material Code example

AMI Snapshots

Storage - Waste

AWS
$

Snapshots created from AMIs that are no longer available. These are no longer being used and so can be removed.

Read the story Code example

EBS - Abandoned Volumes

Storage - Waste

AWS
$$$

Scripts can be implemented to scan and terminate unattached EBS volumes. Consider taking snapshots in higher environments before terminating the volumes. Many scripts can be found in github or elsewhere on the Internet. (Noel's story)

Read the story Related material

EBS - Migrate to Newer Types

Storage - Efficiency

AWS
$$$

We saved 20% on some of our EBS costs by migrating from the gp2 to the gp3 EBS volume type.

Read the story Related material

S3 - Multipart Uploads

Storage - Waste

AWS
$$

AWS Storage Lens or your dedicated Technical Account Manager can identify MPU's in S3 buckets. Once you identity MPU's on specific buckets, you can configure a lifecycle rule for those S3 buckets to automatically abort 7-day old (or whatever time period you find appropriate) incomplete multipart uploads. I'd argue that lifecycle rules on S3 buckets should be the default, not the exception. A full description of the services and outline of this process can be found in the AWS blog post here.

Related material

Snapshot Lifecycle

Storage - Waste

AWS
$$

There are multiple ways to attack a lifecycle of snapshots in general. With EBS, you can use Amazon Data Lifecycle Manager to automate the retention of your snapshots. You can also use a myriad of 3rd party tools to help manage the data lifecycle of snapshots. I recommend first establishing a policy within your organization, communicate & collaborate on the policy, and enforce the policy with the ability to opt out.

Read the story Related material

Workspaces

Virtual Desktop - Waste

AWS
$

A script can identiy Workspaces that have 0 connections.

Code example

BigQuery Capacity Commitments

BigQuery - Waste

GCP
$$$

Failure to purchase org level capacity commitments for BigQuery can result in runaway costs due to on-demand query costs. Purchasing an org level capacity commitment and enabling idle capacity at the org level can ensure stable BigQuery costs across the organization. Consideration also needs to given be to whether the location supports multi-region commitments or if separate commitments will need to be purchased for each region or location where workloads are provisioned.

Read the story Related material

Database Optimization

BigQuery - Waste

GCP
$$$

Optimize the structure of queries and tables / databases to limit quantity of data scanned.

Read the story

GKE - Containers and Managing Capacity

Compute - Waste

GCP
$$

Provision to balance capacity and requests to prevent inadvertent auto scaling. Leverage [GKE metering](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-usage-metering) and dashboards to understand the profile of workloads and address under- or over-provisioning.

Read the story Related material

Object Storage Lifecycle

Storage - Waste

GCP
$$$

Manage object storage lifecycles to move data to nearlline or coldline when infequenlty accessed; remove obsolete versions / duplicates.

Read the story

Idle VMs

Compute - Waste

Azure
$$

Totally inactive compute; Azure Advisor can surface underutilised, look for those with shutdown recommendation and ask teams to validate.

Related material

Hybrid Use Benefits

Marketplace / Licensing - Waste

Azure
$$

Manually look in Azure by selecting a virtual machine and then reviewing its properties. See if the AHUB Azure hybrid use benefit box is checked or not.

Related material

Aged Snapshots

Storage - Waste

Azure
$

Manually look in Azure portal at a list of all snapshots across all subscriptions you have read access to.

Related material

Unattached Disks

Storage - Waste

Azure
$

Azure portal -> Disks -> Filter where Owner = “-” to list all unattached across all subscriptions you have read access to.

Related material

Kubernetes Control Plane

Compute - Efficiency

AWS
GCP
Azure
$

Reduce number of clusters (only GKE and EKS). Abandoned clusters cost $.10 per hour.

Kubernetes Nodes

Compute - Waste

AWS
GCP
Azure
$$$

Application packing places nodes into the "Idle" category, per cloud provider, requires understanding of daemon sets and other non-redistributable pods.

Azure SQL Database & SQL Managed Instance

Database - Waste

Azure
$$$

You can exchange your existing licenses for discounted rates on Azure SQL Database and Azure SQL Managed Instance. Save up to 30%. For new databases, during creation, select Configure database on the Basics tab and select the option to Save Money. For existing databases, select Compute + Storage in the Settings menu and select the option to Save Money.

Related material

Thank you to all of our Project contributors

We’re grateful for all of the work, time, and effort from the following FinOps practitioners:

  • Joe Daly
  • Noel Crowley
  • Mike Martin
  • Bhups Hirani
  • Eric Mulartrick
  • Dennis Chang
  • Pete Silva
  • Andy Foley
  • AJ Bothe
  • Steph Gooch
  • Noah Abrahams
  • Scott Lapish
  • Rich Hoyer

Get involved

If you’d like to add a waste or efficiency card, please feel free to suggest a contribution to this page using the link below or above.