Cloud cost governance is the practice of attaching a named owner, a budget and a review date to every category of cloud spend. It's a different job from cost optimisation. Optimisation is a technical exercise you run once. Governance is what stops you having to run it again next year.

Most overspend conversations start as a technical problem and end as an org chart problem. Finance shows a chart going up, engineering explains that the workload grew, both are right, and nothing changes, because nobody in the room owns the number.

Here's the position I'll defend: the first deliverable of a FinOps effort isn't a savings report. It's a name against every line of spend.

4 tags

owner, environment, cost centre and product, enforced at provision time

95%

tag coverage measured as a share of spend, never of resource count

up to 24 hours

AWS's own stated lag before an anomaly is detected

Why does the cloud bill grow back after every cleanup?

Cloud bills grow back after a cleanup because the cleanup removes waste without changing who produces it. Rightsizing, deleting idle instances and pruning storage are one-time actions taken against a continuous process. When provisioning behaviour stays the same, new waste accumulates at the previous rate, and total spend returns to its trend line within two or three billing cycles.

On a multi-year cost graph it's a sawtooth: the sprint drops the line, then it climbs at the same gradient as before. That gradient is made of people. Self-service provisioning without ownership means the cost of a decision lands on somebody other than the person making it. An engineer starts a large instance on Thursday to benchmark something, gets pulled onto an incident, and never comes back.

It's worse after a rushed migration that copies on-premise sizing straight into cloud instances, which is why capacity ownership belongs in the cloud migration checklist rather than a cleanup two quarters later. Published waste estimates come almost entirely from vendors selling the cleanup, so treat them as advertising and measure your own.

What tags does every cloud resource need, and when do you enforce them?

Four tags carry most of cloud cost governance: owner (a named individual), environment (production, staging, development, sandbox), cost centre (the budget the spend lands in), and product (what the resource serves). Enforce them at provision time through policy, so untagged resources fail to create, rather than auditing untagged resources afterwards.

The owner tag should hold a person, not a team alias: a resource owned by eight people is owned by nobody. Enforce it at creation, because a check that fails the plan beats a quarterly audit. Retroactive tagging is archaeology. You end up asking Slack who created a NAT gateway in 2024, and the answer is that they left in 2025.

Measure coverage as a percentage of spend, never of resource count. Ninety-nine percent of resources can be tagged while the one untagged database cluster carries a fifth of the invoice. Cost centre and product tags let you say what a feature costs to run, the discipline that makes a software build estimate mean something.

Showback or chargeback: which one actually changes behaviour?

Showback reports each team's cloud spend without moving money between budgets. Chargeback bills that spend to the team's own budget, where it competes with everything else they want to fund. Showback produces awareness. Chargeback produces trade-offs. Running neither leaves cloud cost as a central line item nobody outside finance can influence.

Showback or chargeback: which one actually changes behaviour?
Nothing (central bill)ShowbackChargeback
How it worksOne bill, one central budgetSpend allocated per team and reported, money doesn't moveAllocated spend charged to the team's own budget
Who sees itFinance and one infra leadEvery team lead, monthlyTeam leads and whoever approves their budget
What changesNothing. Cost is someone else's categoryTeams spot outliers and clean up the embarrassing onesCloud spend competes with hiring and tooling, so teams make real choices
EffortNoneModerate: needs trustworthy taggingHigh: needs defensible allocation and finance buy-in
Where it breaksOverspend surfaces at renewalAwareness fades by month fourBad allocation data kills trust; teams argue about the split

Start with showback, and move to chargeback only once your allocation survives being disputed. Charge a team for spend that wasn't theirs and you've lost the programme. The hard part is shared cost: networking, logging, the cluster everyone runs on. Perfect allocation of that is an infinite meeting, so publish one simple rule, keep an explicit "unallocated" bucket, and date its shrinking.

Where does the wasted spend usually hide?

Waste concentrates in a predictable set of places: idle and orphaned resources, oversized instances, unattached storage volumes and old snapshots, non-production environments running outside working hours, cross-zone and internet egress traffic, log retention nobody deliberately chose, and managed databases provisioned for load that never arrived.

  • Idle and orphaned resources. Load balancers with no targets, addresses attached to nothing, the staging cluster for a project that shipped in March.
  • Oversized instances. Sized for a launch and never resized. Check sustained utilisation over weeks, not a peak-hour screenshot.
  • Unattached volumes and snapshots. Storage outlives compute: delete the instance, keep paying for the disk and a snapshot chain with no expiry.
  • Dev and staging left running. Non-production doesn't need to exist at 3am on Sunday, and scheduled shutdown is one afternoon of work.
  • Cross-zone and egress traffic. Metered per GB and invisible in architecture diagrams, generated by chatty services split across zones for a resilience requirement nobody wrote down. AWS meters it on both sides: its cost-report documentation states that for a given resource you're charged for both inbound and outbound traffic in a data transfer within a Region, so one chatty call across a zone boundary lands on the bill twice.
  • Log retention nobody chose. Ingestion charges per GB, storage charges monthly, and debug logging from an incident stays on.
  • Over-provisioned managed databases. An instance class chosen for a projection, plus a multi-zone replica on a development database.

AI tooling belongs here too, since it lands on the same invoice and grows the same way, which we covered in what AI coding tools actually cost past the trial. Observability is the line to watch, since ingestion and retention charges scale with traffic and with every metric anyone has ever added, and no single person owns the total.

When do reserved instances and savings plans become a trap?

Reserved capacity and savings plans exchange a one- or three-year usage commitment for a lower rate. They pay off when the committed workload is stable and predictable. They become a trap when the commitment locks in the current architecture, because the discount applies to the infrastructure shape you agreed to keep running, not to whatever you migrate to next.

The classic version: a three-year commitment on virtual machines, signed one quarter before the team starts moving to containers. Now an architecture decision gets settled by a purchase.

So commit to the floor, never to the plan. Cover the baseline you'd still be running if every initiative were cancelled, buy the rest on demand, and ladder the expiry dates. Track coverage and utilisation separately, because high coverage with low utilisation is the same waste in a smarter costume.

Who should receive a budget alert?

A budget alert should reach the person who can change the spend, plus one person accountable for the budget. Alerts routed to a shared finance mailbox or a channel with 200 members get muted. Set thresholds against forecast as well as actual, so the warning arrives while there's enough of the month left to act on it.

An alert with no named recipient is a log line. Resolve the owner tag to a person, send it to their team's channel, and name the resource, the budget and the amount in the body. Two thresholds work: forecast-to-exceed near 80%, actual at 100%. Then enforce the rule everyone skips. If an alert fires three months running and nothing changes, either fix the spend or change the budget. Alert fatigue is a governance failure.

What should the monthly cloud cost review actually decide?

A monthly cloud cost review exists to make decisions, not to present a report. A working agenda covers variance against budget by owner, the three largest increases with a named explanation each, open actions from last month, and commitment coverage. Attendees: engineering leads who own budgets, someone from finance, and one person who chairs it.

Forty-five minutes, with numbers circulated two days ahead so nobody reads a chart aloud. Every increase gets a name and one of three verdicts: expected, because usage grew as planned; accepted, because the trade-off was deliberate; or fix, with an owner and a date. Ban "we'll look into it," which is how a cost review decays into a status meeting.

Evidence, owner, dated action, checked next month. That closed loop is the rhythm we run on IT consulting engagements, and it's closer to what a CMMI Level 5 appraisal examines than any tooling choice.

How do you catch a runaway job before the invoice does?

Anomaly detection compares current spend against a learned baseline and flags unusual increases, typically at daily granularity. It catches retry storms, misconfigured autoscaling and runaway batch jobs earlier than a monthly review does. Detection still lags the spend, so pair it with hard guardrails: service quotas, autoscaling ceilings, and automated actions that throttle or stop a resource.

The runaway job turns a manageable overspend into a board conversation. A recursive trigger, where a function writes to the bucket that invokes it. A pipeline that lost its date filter and reprocesses all history nightly. Each is an ordinary bug that happens to be metered, so latency matters more than cleverness, and a weekend is two days long. AWS is explicit about its own lag: Cost Anomaly Detection runs roughly three times a day on Cost Explorer data that trails by up to 24 hours, so by its documentation it can take up to 24 hours to detect an anomaly after the usage occurs. Set ceilings you'd rather hit than exceed: node counts on autoscaling groups, deliberately low service quotas, and sandbox accounts that expire on a date rather than a reminder.

The FinOps accountability checklist

Work down this in order. The first four are the foundation, and skipping them makes everything below unreliable.

  1. Publish a tagging standard: owner, environment, cost centre, product.
  2. Put a named person in the owner tag, the team in a separate one, and reassignment into offboarding.
  3. Enforce tags at provision time, so untagged creation fails.
  4. Report tag coverage as a percentage of spend, monthly, until it clears 95%.
  5. Map every cost centre to a budget with a named owner who accepts it in writing.
  6. Publish a monthly showback report per team, with an explicit unallocated bucket.
  7. Write down one shared-cost allocation rule, then stop relitigating it.
  8. Move to chargeback only once allocation survives being challenged.
  9. Set two thresholds per budget, forecast at 80% and actual at 100%, routed to a named person.
  10. Shut down non-production environments outside working hours.
  11. Set deliberate retention policies on logs, snapshots and backups.
  12. Commit only to your baseline, ladder the expiry dates, track coverage and utilisation separately.
  13. Diarise every commitment renewal 90 days out, with a named owner.
  14. Turn on anomaly detection, backed by quotas and autoscaling ceilings.
  15. Run a 45-minute monthly review where every variance gets a name and a dated verdict.

The short version

Rightsizing gives you a number to celebrate this quarter. Ownership gives you one that stays put. Tag at provision time, put a person in the owner field, and make every variance produce a dated decision.

If your bill is climbing and you can't say who owns which part of it, book a 30-minute call and bring last month's invoice.

Frequently Asked Questions

What's the difference between FinOps and cloud cost optimisation?

Optimisation is the technical work of making the same workload cheaper. FinOps decides who owns which spend and how increases get approved. Optimisation without FinOps has a short shelf life.

Do we need a dedicated FinOps person?

Not below a certain spend, and the threshold depends on your business rather than a rule of thumb. Start with a named part-time owner who chairs the review and keeps the tagging standard current.

How much can governance realistically save?

Any percentage you read is somebody's marketing, including anything I could put here. Measure your own baseline instead: a month of tagged spend before, the same month after, is the only version of this number that survives a finance review. A first cleanup usually finds plenty. Governance decides whether it's still there a year later.

Should engineers see the actual cloud bill?

Yes, filtered to what they own and refreshed more often than monthly. Engineers make cost decisions daily whether or not they can see prices. Give them their team's number, not a company-wide dashboard.

Do we need a third-party FinOps tool?

Not to start. Native tooling handles budgets, tag allocation and anomaly detection well enough to run this checklist. Buy a platform when you're genuinely multi-cloud, or when chargeback mechanics start eating engineering hours.

What if most of our spend sits on one shared Kubernetes cluster?

Then allocation is your whole problem. Use namespace and label-based splitting, accept that idle cluster headroom is a shared cost, and publish how you split it. A cluster with no allocation is one enormous untagged resource.

Have a project in mind? Let's scope it together.

You get a named team, written estimates, full code and IP ownership, and 48-hour response times. CMMI Level 5 certified. 700+ projects delivered across the UK, US, UAE, and Australia.

Written by
Rishabh Jain
Founder & CEO, Shanti Infosoft LLP
700+ Projects DeliveredCMMI Level 54.9★ on Clutch80+ EngineersUK / US / UAE / AU