Cloud Cost Management
Where the money actually goes, why nobody notices until the invoice, and the levers that move it.
An Engineering Metric, Not A Finance Problem
Two properties make cloud spend drift upward on its own. It is invisible by default — nothing in a pull request shows that this change adds £4,000 a month — and it is easy to add and awkward to remove, because nobody is sure what still uses that cluster.
Visibility & Tagging
You cannot manage what you cannot attribute. A bill of one enormous number tells you nothing; a bill split by team, service and environment tells you where to look.
| Practice | Effect |
|---|---|
| Mandatory tags — owner, service, environment | Every line item has a name attached |
| Tag policy enforced at creation | Retro-tagging thousands of resources never happens |
| Separate accounts per environment | The hardest boundary to get wrong |
| Showback to teams | The people who can act see the number |
| Anomaly alerts | Catch the runaway job in hours, not on the invoice |
The Levers That Move It
| Lever | Typical saving | Risk |
|---|---|---|
| Rightsizing over-provisioned instances | Large — most are sized by guess | Low, if you measure first |
| Turning off non-production overnight | Up to two thirds of dev spend | Low |
| Committed use discounts | 30–60% on steady baseline | Lock-in if usage drops |
| Spot capacity for interruptible work | Up to 90% | Instances vanish with notice |
| Storage lifecycle tiering | Large on old data | Retrieval cost and latency |
| Deleting orphans | Free money | None, once ownership is clear |
Start with waste, not with negotiation. Unattached volumes, idle load balancers, old snapshots, forgotten NAT gateways and a staging cluster nobody has opened since March are pure loss — and removing them requires no trade-off at all.
Making It Stick
One-off cleanups regress within two quarters. What holds is putting cost where engineers already look.
| Habit | Why it works |
|---|---|
| Cost estimate in infrastructure pull requests | The decision and its price arrive together |
| Unit economics — cost per request or per tenant | Growing spend is only a problem if the ratio worsens |
| A budget per team, with alerts | Ownership sits with the people who can act |
| Autoscaling with sane floors | Capacity follows demand rather than the peak |
| A regular waste review | Orphans accumulate continuously |
Interview Questions
Why does cloud spend drift upward?
It is invisible by default — no pull request shows the monthly cost of a change — and resources are easy to create but awkward to delete when nobody is sure what uses them.
What is the first thing to fix?
Attribution. Mandatory tags for owner, service and environment, enforced at creation, so every line item has a name and waste has somewhere to be reported.
Where do the easiest savings come from?
Waste with no trade-off: unattached volumes, idle load balancers, old snapshots, forgotten NAT gateways and non-production environments running overnight.
When are commitments and spot appropriate?
Commitments for a steady baseline you are confident about — they lock you in. Spot for interruptible work like batch and CI, where a few minutes of notice is enough.
Why does egress catch people out?
Moving data out of a cloud or across zones and regions is charged far above storage, so a chatty cross-zone architecture can cost more in transfer than in compute.
What makes cost control durable?
Unit economics and ownership: cost per request or per tenant reviewed like any other metric, budgets per team, and estimates in infrastructure pull requests.