The first steps in the optimization process involve setting the organization up for success – ensuring that the right configurations are in place and the right data is available when the team is ready to start focusing on costs.
To start off, if you’re not using AWS Organizations and consolidated billing, consider implementing these tools. AWS Organizations enables teams to automate account creation, create groups of accounts to reflect business needs, and apply policies for these groups for governance. The consolidated billing feature within AWS Organizations lets teams consolidate payments for multiple AWS accounts. These steps will help you stay organized and consistent.
Second, consider creating different AWS accounts for production and development. AWS will recommend going even further by creating separate accounts for each environment, segmented by feature or product. While that practice can simplify understanding of cloud spend, it can be challenging to manage at scale. As a general rule, separate out production workloads from development at a minimum. Based on organizational requirements, teams may decide to segment further
Next, focus on establishing a company tagging policy. Tagging will enable teams to identify, organize, filter, and search for resources within AWS. Tagging works best when there’s a company policy that sets expectations for engineering teams. There are many ways to make this process less manual by incorporating standard tags into your Terraform or CloudFormation templates.
Once the team has started tagging its infrastructure, activate important tags with cost allocation tagging, so they can be used with AWS Cost Explorer or cost management vendors. For example, enabling “AWS-Generated Cost Allocation Tags” creates a useful tag called “aws:CreatedBy” that shows which IAM roles are creating resources.
Finally, create an hourly AWS Cost & Usage Report (CUR). Even if your organization is not planning to think about cost optimization for another six months, the majority of the cost vendors need to ingest CUR data. AWS doesn’t back-populate this data—so having it ready is helpful and doesn’t cost much. When creating an hourly CUR, check the “Include resource IDs” checkbox and leave the rest as defaults.
For the level of granularity that many cost management vendors (like CloudZero) need, you may want to turn your setting to:
For most organizations, tagging is a critical component of managing their cloud spend. If only it were easy to enforce! The first step to creating a tagging policy is to start setting expectations for engineering teams. The three most common tags on which to standardize are:
Most development teams leverage some CI/CD and/or infrastructure-as-code tools, which are great ways to tag newly created resources. Unfortunately, there’s usually a manual process involved in tagging existing resources (starting with the most expensive ones). Throughout this process, don’t forget to tag supporting resources (such as EBS volumes or snapshots associated with EC2 instances). For teams looking for help to maximize existing tags, there are tools like CloudZero that can help boost existing tag coverage.
There are many useful features within AWS Cost Explorer for visualizing costs. For example:
CloudZero delivers relevant cloud cost data about products and features to the engineers responsible for building them. Using machine learning, CloudZero automates manual cost management work, detects cost anomalies, and boosts AWS tagging coverage. With CloudZero, innovative companies can proactively reduce cloud costs, control their margins, and eliminate billing surprises.Cloud spending starts with engineering. Controlling it starts with CloudZero.