If your cloud bill keeps creeping up and no one can quite say why, you’re not alone — and the cause is rarely a single big mistake. It’s usually five or six small, structural habits quietly compounding. Here are the ones we find most often, and what to do about each.
Key takeaway
Most cloud overspend comes from idle resources, over-provisioning and paying on-demand rates for steady workloads. None of these need a re-architecture to fix — they need visibility and a little discipline.
1. Idle and forgotten resources
The single most common source of waste. A test environment spun up for a demo and never shut down. Volumes left behind after their instances were deleted. Load balancers pointing at nothing. Individually small, collectively significant — we routinely find 15–25% of a bill going to resources nobody is using.
The fix: tag everything by owner and purpose, then run a weekly report on untagged and idle resources. Anything with no owner and no traffic for 30 days is a candidate for deletion.
2. Over-provisioned instances
Teams size for the worst-case load they can imagine, then never revisit it. The result is a fleet of instances running at 10–20% utilization, billed at 100%. It feels safe, but it’s just expensive.
The fix: right-size against actual utilization data, not guesses. Most clouds now recommend this automatically — the hard part is acting on it. Start with your largest instances, where the savings are biggest.
3. Paying on-demand for steady workloads
On-demand pricing exists for a reason — flexibility — but it’s the most expensive way to run anything predictable. If a workload runs 24/7 all year, paying on-demand for it is like renting a car by the hour for a daily commute.
The fix: map which workloads are steady versus bursty, then cover the steady baseline with reserved capacity or savings plans. This alone often cuts 20–30% off compute spend with zero performance impact.
4. Storage that never gets cleaned up
Storage is cheap per gigabyte, which is exactly why it sprawls. Old snapshots, duplicate backups, logs retained forever, data sitting in premium tiers it hasn’t needed for years.
The fix: set lifecycle policies that automatically move ageing data to cheaper tiers and delete what’s past its retention window. Set it once and it works quietly forever.
5. Data transfer surprises
Egress — moving data out of the cloud or between regions — is the line item that surprises people most, because it’s invisible until the invoice arrives. Chatty cross-region architectures and un-cached content are the usual culprits.
The fix: keep traffic within a region where you can, put a CDN in front of anything served repeatedly, and review your egress charges specifically — they’re often buried in a bill that only shows totals.
How to fix it for good
The five patterns above cover the bulk of what we find, but fixing them once isn’t enough — cloud spend drifts back up the moment attention moves elsewhere. What keeps it down is a habit, not a one-off cleanup:
- Tag discipline — every resource has an owner and a purpose, enforced automatically.
- Monthly review — someone owns the bill and looks at it on a schedule, not just when it spikes.
- A FinOps rhythm — right-sizing and commitment planning as an ongoing practice, not an annual scramble.
None of this is glamorous, and none of it requires re-architecting anything. It’s visibility and a small amount of ongoing discipline — which is exactly why it’s so often skipped, and why the savings are usually there for the taking. If you’d like a second pair of eyes, our cloud cost optimization team does exactly this.