Cutting a cloud bill ~40% without giving up capacity
An audit found the waste. Governance is what stopped it coming back — including a centralized cost application reporting across 100+ projects, so spend became someone's visible responsibility instead of a monthly surprise.
The situation
The cloud bill had been climbing for months with no FinOps owner. Engineering was being asked to cut spend without slowing delivery — the request that usually produces a round of panicked downsizing, followed by an incident, followed by everything being sized back up again.
The estate spanned 100+ projects. Nobody could answer "what is this costing us, and who owns it" for any given workload without a half-day of clicking.
Audit before action
A full account audit came first, because cutting before measuring is how you take an outage. What it surfaced was ordinary and substantial: resources nobody owned, environments provisioned for a launch that had since passed, instances sized for a load profile that no longer matched reality, and reserved-capacity coverage well below what a steady baseline justified.
Untagged resources were the root difficulty. Without ownership metadata, "is this safe to delete" has no answer, so nothing gets deleted and waste compounds.
What I changed
- Rightsizing across the estate, driven by observed utilization rather than the size someone picked at provisioning time.
- A commitment strategy — modelling the right mix of reserved capacity for predictable baseline load and spot capacity for interruption-tolerant work, instead of paying on-demand rates for everything.
- A tagging and governance policy that made ownership a provisioning requirement, so future resources arrive attributable.
- Scheduled cleanup automation for the categories that reliably accumulate — non-production environments running outside working hours, orphaned disks and addresses, stale snapshots.
- A centralized cost application with reporting across 100+ projects, exporting to the spreadsheet format the finance and delivery teams already worked in. Adoption beats elegance.
- Lifecycle under Terraform, so resource creation and destruction became reviewable rather than ad hoc.
The outcome
A ~40% reduction, with no capacity removed and no measurable hit to delivery velocity. The number that matters more: spend is still ~33% below the original baseline today, while platform workload has grown considerably since.
That gap between the two figures is the whole point. A one-time cut decays — teams provision, nobody notices, and within a year you are back where you started. The governance layer, the automation and the reporting are what convert a cut into a sustained position.
What I'd do differently
I would put the cost reporting in front of engineers earlier. It was built for finance and delivery visibility first, and it worked — but the fastest behavioural change came once the teams provisioning resources could see the cost of their own decisions. Feedback loops beat policy documents.
I would also set an explicit budget alert threshold per project at the same time as the tagging policy rather than after it. Tagging makes attribution possible; alerts make it someone's problem this week instead of at the next review.