How to cut a cloud bill without breaking anything
The order is the whole trick. Buying a savings plan first locks you into a year of the waste you were about to remove.
The short version
- Delete → rightsize → schedule → commit. Commitments last, because they price the usage you have after you have finished reducing it.
- The largest single line is rarely compute. It is usually storage nobody deleted, data transfer nobody measured, or a managed database provisioned for a launch that never came.
- Every change needs a way to notice it broke something. Cost work without monitoring is how a saving becomes an outage.
First, find out what you are actually paying for
Not the total. The breakdown, by service and then by resource, for the last three months so you can see the trend rather than one month's accident.
Two things to establish before touching anything: which line items are growing, and which resources have no owner. Untagged resources are where the money hides, because nobody feels responsible for deleting something they cannot identify. If tagging is a mess, fixing it is not a detour — it is the prerequisite for every conversation after this one.
The order of operations
- Delete what is not used. Free, instant, no performance risk.
- Rightsize what is over-provisioned. Cheap, small risk, needs a look at real utilisation.
- Schedule what does not need to run at night. Large savings on non-production, some engineering.
- Commit to a discount on what is left. Big savings, and a contract, which is why it goes last.
Doing step four first is the classic mistake. A one-year commitment sized against your current waste guarantees you keep paying for it, and it feels like progress because the invoice went down.
The usual suspects, roughly in order of how often they are found
- Orphaned disks. Volumes whose instances were terminated months ago, still billed every hour.
- Snapshot sprawl. An automated backup policy with no expiry, quietly accumulating for years.
- Idle load balancers and unattached static IPs. Small individually, and they are never alone.
- Old object storage in the most expensive tier. Logs and backups nobody has read since they were written, sitting in hot storage. Lifecycle rules to a colder tier are usually the single easiest large saving available.
- Log retention set to forever. Both the storage and the ingestion are billed.
- Data transfer. Cross-zone chatter, egress, and gateway processing charges. Almost nobody has looked at this line, and in chatty architectures it can be enormous.
- Managed databases sized for a peak that never arrived, and non-production copies of them running at production size.
- Development and staging running 24/7 to serve people who work eight hours a day, five days a week. That is roughly three quarters of the hours doing nothing.
- Abandoned experiments. The cluster from the proof of concept, the queue from the integration that was cancelled, the second region from the migration that stalled.
Rightsizing without causing an incident
Look at utilisation over at least two weeks, and use the maximum as well as the average. An instance averaging 8% CPU that hits 90% every night during a batch job is not over-provisioned, it is correctly sized for the thing it exists to do.
Then move one size at a time, in production last, with a rollback plan and somebody watching. Memory is the usual trap: memory-bound workloads fail differently and more suddenly than CPU-bound ones, and the graph that would have warned you is often not being collected.
Commitments, last and deliberately
Once the bill has stopped shrinking, commit to a discount on the baseline that remains — the floor of your usage, not the peak. Cover a portion, not everything, so growth and change do not leave you paying for capacity you no longer use.
Shorter terms with no upfront payment are usually the right trade for a business whose architecture is still moving. The extra discount for three years paid upfront is real, and so is the risk of buying three years of a design you are going to replace.
Stopping it coming back
Cloud bills regrow, because the same conditions that produced the waste are still there. Three things hold the saving:
- A budget alert that reaches a person, at a threshold below the level that would matter, so the notice arrives while it is still cheap.
- Tagging enforced at creation. An untagged resource is a resource nobody will delete.
- A recurring review with a name against it. Monthly, ten minutes, on the anomalies rather than the total. Without an owner it does not happen, and the drift is invisible until it is a quarter of the bill.
Common questions
Will cutting costs slow the application down?
Are savings plans and reserved instances worth it?
What is the fastest single win?
If you would rather not do this yourself
The listings this guide is about. Every one prints its price and names the company that sells it, and the status is what it says it is.
-
A free read of your cloud bill, naming what is being spent on nothing.
LivePrice Free no stringsAdSail LLC
-
The same read, running continuously, shouting the week the bill starts drifting again.
Private betaFrom $290 /moAdSail LLC
-
Uptime checks on everything that matters, with an alert that reaches a human.
LiveFrom $90 /moAdSail LLC
Nothing above is a promise of a result. Read the disclaimer for what this site refuses to claim.
Keep reading
How much should you spend on Google Ads?
There is no universal starting budget. There is a floor set by your cost per sale and the number of conversions it takes to learn anything — here is the arithmetic for both.
Paid media · 7 minWhat is a good ROAS?
A good ROAS is not 3x or 4x or whatever the last article said. It is whatever clears the break-even your own gross margin produces — here is how to calculate it and why the platform's number is not the one that matters.
Creative · 7 minHow many ad creatives do you need?
Creative testing is a hit-rate game. If you plan around the winners you will never make enough ads to find one — here is how to size a testing programme and what actually counts as a new creative.