One of the most important steps in optimizing cloud costs is making sure we understand them. This means we need to know where the money is spent and to be able to attribute costs to projects, departments, people or otherwise defined cost centers. In this part of our FinOps series we will cover some basic tools and strategies that help with resource naming & tagging.
As Phil Karlton once said, “There are only two hard things in Computer Science: cache invalidation and naming things.”
Having a concise, understandable, and stable naming convention can save you a lot of time and pain. It can make the cloud environment easier to understand for newcomers and manageable. Apart from some basic restrictions, there are no strict rules for naming Azure resources. Microsoft provides a handy recommendation (1). Taking this into account, it is also important also to make sure it corresponds with your existing IT naming rules, if you have any standards.
The “naming” part can easily be extended to include tagging, as tags are very similar to names, being simply human-readable descriptions. Tagging may also seem like a trivial tool, but it is very powerful and absolutely necessary if you want to maintain control over your Azure spending. Tags can be useful not only for cost tracking, recurring spend reporting, and post-implementation optimizations, but also for ROI calculations, budgeting, alerts, and accounting support. To make your tagging efforts a success, you need two ingredients: have a well-thought-out tag structure and to make tags obligatory.
Tagging structure is a difficult choice and you can have multiple intersecting tag sets aligning more with IT or the business aspect of your systems. Examples of tagging categories include: functional (e.g. app, data, environment), classification (public, private), accounting (department, project, region), partnership (owner, stakeholder, power user), and purpose (business process, criticality) (3).
Tagging can be easily enforced and automated using tagging policies. Azure Policy is a tool used for setting common rules for your Azure deployments. Azure Policy provides a set of rules that govern resource tagging. There are policies that make tags required and policies that automatically assign tags in a bunch of ways, e.g. by inheriting them from resource groups or subscriptions, providing at least a minimum set of tags for every entity, be it a resource or RG.