Most cloud bills are not expensive because of one dramatic mistake. They are expensive because of twenty small decisions that were correct at the time and were never revisited. Nobody is at fault, and nobody has time to go looking.
The good news is that cost work has a natural order. Done in the right sequence, the early steps are almost free and make the later ones safe.
Start with visibility, not cuts
You cannot negotiate with a number you cannot break down. Before changing anything, get to the point where you can answer: which team, product or environment does this line item belong to?
- Apply a small, mandatory tag set — owner, environment, service. Three tags that are always present beat twelve that are usually missing.
- Turn on cost allocation for those tags and give it a full billing cycle to populate.
- Build one view per environment. Production spend and non-production spend behave differently and deserve separate conversations.
Teams routinely discover at this stage that a third of their spend belongs to environments nobody is actively using.
Delete before you optimise
The cheapest resource is the one that no longer exists. Look for:
- Unattached storage volumes and old snapshots, which quietly accumulate for years.
- Load balancers and public IPs left behind by decommissioned services.
- Non-production environments running 24/7 for a team that works weekdays.
- Log data retained at premium tiers well past the point anyone would query it.
Scheduling development and test environments to shut down outside working hours is often the single largest percentage saving available, and it carries essentially no production risk.
Rightsize with evidence
Rightsizing has a bad reputation because it is usually done by guesswork and then reverted after an incident. Do it properly:
- Collect at least two weeks of CPU, memory and I/O metrics, including your monthly peak.
- Size to the peak plus headroom, not to the average.
- Change one workload at a time, and watch latency rather than just CPU.
- Record the before and after numbers so the saving is defensible.
Where a workload is genuinely spiky, autoscaling is a better answer than a smaller fixed instance.
Match storage to how data is actually read
Storage tiering is low risk and frequently overlooked. Object storage that has not been read in ninety days rarely needs to sit in a hot tier. Lifecycle rules that move data to infrequent-access or archive tiers can be applied gradually, with the caveat that retrieval from deep archive is slow and costs money — so it suits backups and compliance copies, not anything a customer might request.
Commit last, not first
Reserved instances and savings plans are the step everyone wants to take first, because it feels decisive. It is the wrong order. A commitment locks in whatever shape your workload currently has, including the waste.
Once you have deleted, scheduled and rightsized, your baseline is stable and worth committing to. Then:
- Cover the steady baseline only, not the peaks.
- Start with shorter terms and no upfront payment until you trust the baseline.
- Diarise a review before renewal, rather than letting it roll silently.
Make it stick
A one-off cleanup decays within two quarters. What keeps a bill flat is unglamorous:
- A monthly cost review with a named owner and fifteen minutes on the agenda.
- Budget alerts that go to the team that can act, not only to finance.
- A cost estimate attached to significant architecture changes before they ship.
- Untagged resources treated as a build failure rather than a nuisance.
The trade-off to keep in view
Cost work can quietly slow a team down. If every environment needs approval and every instance is sized to the millilitre, engineers lose hours to friction that is worth more than the savings. Aim for the changes that are invisible to delivery: deleting the unused, scheduling the idle, tiering the cold, and committing to the predictable.
If you would like a second pair of eyes on your AWS or Azure bill, we run a short, fixed-price review that ends with a prioritised list of savings and the effort each one takes. Book a 30-minute call and we will tell you whether it is worth doing at all.