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

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.

Source: FinOps Foundation, State of FinOps 2025.

← More in Cloud & DevOps