
Cloud bills creep. A test environment stays up after a demo, a database gets resized for a traffic spike and never shrinks, logs pile up in storage nobody reads. In the FinOps Foundation's State of FinOps 2025 report, practitioners ranked workload optimisation and waste reduction as their top priority. You don't need a new architecture to act on it.
These are the changes we make first when a client asks us to look at their bill.
1. See where the money goes
You can't cut what you can't attribute. We tag every resource with at least project, environment and owner, then turn on the provider's cost reports grouped by those tags. Untagged resources get listed and assigned an owner. Most teams find at least one thing nobody remembers creating.
2. Turn off what nobody uses at night
Development and staging environments often run 24 hours a day for a team that works 9 hours. A scheduler that stops them outside working hours and at weekends cuts their cost by more than half. Developers can start them on demand if they work late.
3. Right-size from real data
Instances get sized for the launch week and never revisited. After a few weeks of real traffic, we check CPU and memory graphs. A server that never goes above 20% CPU can drop a size. The same goes for managed databases, which are often the single biggest line on the bill.
Make one change at a time and watch response times for a few days before the next.
4. Commit to the baseline
Once you know the capacity you use all the time, reserved instances or savings plans can take a large percentage off that portion of the bill. Only commit to the floor of your usage. Pay on demand for the peaks.
5. Storage and logs
- Set lifecycle rules so old objects move to cheaper storage classes or expire.
- Set a retention period on log groups. Keeping debug logs forever is expensive and rarely useful.
- Delete unattached disks and old snapshots. They survive long after the servers they belonged to.
6. Watch data transfer
Traffic between availability zones, regions and out to the internet costs money. A chatty service calling another in a different zone thousands of times a minute can cost more than both servers. Put a CDN in front of static files and images, and keep services that talk a lot in the same zone.
7. Set alerts before you need them
Budget alerts at 50%, 80% and 100% of the expected monthly spend catch runaway costs within days instead of at month end. We also alert on sudden jumps in daily spend, which catches a misconfigured job or a leaked key being used to mine crypto.
What to expect
On an account that nobody has reviewed in a year, these steps usually find meaningful savings without touching application code. Keep the tagging and alerts in place afterwards, because the bill will creep again.


