Cost with no owner is controlled by nobody
A cost that cannot be attributed to anyone is a cost nobody feels obliged to explain. That is why allocation is the point where FinOps turns from reporting into management: once each team sees its own cost, it starts making decisions about it.
Three sources of allocation
Account structure. The most robust approach: separate accounts, subscriptions or projects per application or environment. Everything that happens inside an account already has an owner, without depending on anyone.
Tags. Key-value pairs on each resource (application, team, environment, cost-centre). They are flexible, but they depend on discipline: an untagged resource does not allocate itself.
Spreading rules. For whatever cannot be attributed directly: support, shared networking, common platforms, untagged resources. It is spread using an explicit rule (proportional to consumption, in equal parts, by number of users) and the rule is written down.
A taxonomy before tags
The usual mistake is to start tagging without agreeing which tags exist. First you have to define:
- The mandatory keys, few and stable.
- The permitted values for each key, to stop
finance,Financeandfinbeing three different teams. - Who is responsible for every resource carrying them, and how that is enforced at deployment time (ideally: infrastructure as code does not allow a resource to be created without them).
What to do with untagged resources
At first there will be many, and that is fine. The practical rule:
- Measure it and show it. The percentage of unallocated cost is an indicator in its own right and it has to fall month on month.
- Do not hide it in 'other'. If it is spread, let it be with a visible rule; if not, let it appear as unallocated, with its amount.
- Fix it at source. Every untagged resource detected is a task for the team that created it, not an adjustment in the report.
Shared things have owners too
A common platform (a cluster, a network, an observability service) does have an owner: the team that operates it. Its cost is spread among those who use it using an agreed rule. What cannot happen is for it to float around with nobody answering for it.
How we apply it: FinOps Engineering.