Cloud Cost Optimization: Where the Money Actually Leaks

Addison Thompson
16 Min Read

Cloud bills have a particular way of going wrong. They do not spike dramatically and force an investigation. They creep — a little more each month, always explainable by growth, until someone looks at the annual number and realizes infrastructure has quietly become one of the largest line items in the company.

By then the causes are spread across hundreds of small decisions made by people who have since moved on to other projects. Nobody is doing anything obviously wasteful. The waste is structural.

What follows is where cloud money actually leaks, in rough order of how much it usually accounts for, plus the organizational reasons the leaks persist and what to do about each. The specifics differ between providers, but the patterns are remarkably consistent.

Leak One: Resources Sized for a Guess

This is the largest single source of waste in most environments, and the most boring.

When someone provisions a server, database, or container, they pick a size. Usually there is no data to base it on, so they pick generously, because a resource that is too small causes an incident and one that is too large causes nothing anyone notices. The incentive is entirely one-directional.

That instance then runs for years at a fraction of its capacity. Multiply by every resource in the environment and you get a bill that is often several times what the actual workload requires. Utilization in the single-digit percentages is common and rarely investigated, because nothing is broken.

Fixing It

Every major provider offers utilization metrics and rightsizing recommendations. The technical work is genuinely easy. The hard part is that changing a resource size requires someone to accept responsibility if performance degrades afterward.

The practical approach is to move in steps rather than jumping to the theoretically optimal size. Cut one size down, watch for a couple of weeks, cut again if the headroom is still generous. This is slower but it builds confidence, and confidence is the actual bottleneck. A team that has done twenty successful rightsizing steps stops treating the twenty-first as risky.

Overprovisioning is not a technical failure; it is what happens when being too small is punished and being too large is invisible.

Leak Two: Things Nobody Turned Off

Every cloud environment accumulates orphans. A test environment created for a project that shipped last year. A database spun up for a migration and never deleted. Storage volumes detached from instances that no longer exist but still billing monthly. Snapshots from a backup process someone set up and forgot. Load balancers pointing at nothing.

Individually these are small. Collectively they are frequently a meaningful share of the bill, and unlike most waste they deliver exactly zero value — nobody is even using them badly.

Detached storage is the classic case, because deleting an instance often does not delete its attached volume. The compute charge stops and the storage charge continues quietly for years.

Fixing It

Run a periodic sweep for unattached volumes, idle load balancers, unused IP addresses, old snapshots, and instances with no meaningful network traffic. Most of it can be identified automatically.

The prevention is a tagging policy with an owner and a purpose on every resource, enforced at creation. Untagged resources become nobody’s problem, and nobody’s problem never gets deleted. Some teams go further and require an expiry date on non-production resources, with automatic shutdown when it passes and a simple way to extend.

Leak Three: Non-Production Running Around the Clock

Development, staging, QA, and demo environments typically get used during working hours on weekdays. That is roughly a quarter of the hours in a week. They usually run for all of them.

The arithmetic is straightforward and the savings are large, because non-production is often a substantial fraction of total spend and it is the easiest category to shut down without risk. Nothing customer-facing breaks if the staging environment is asleep at 3 a.m.

Fixing It

Schedule automatic shutdown outside working hours, with an easy self-service way for someone to bring an environment back when they need it. The friction has to be genuinely low — if restarting takes twenty minutes and a ticket, people will disable the schedule, and you will have made things worse by adding an argument.

Account for teams in different time zones when setting windows. A schedule that shuts down an environment while half the team is starting work is the fastest way to have the whole initiative rejected.

Leak Four: Paying Full Price for Predictable Load

Cloud providers offer significant discounts for committing to a baseline of usage over one or three years. Many organizations pay full on-demand pricing for workloads that have run continuously for years and will keep running.

The hesitation is understandable — commitment feels risky, and a bad commitment locks in spend on something you stop needing. But the risk is usually overstated, because the commitment applies to a baseline, not to your total. If you have run at least a certain level of usage every month for two years, committing to a conservative portion of that is close to free money.

Fixing It

Look at the floor of your usage over the past year — the level you never went below. Commit to a comfortable fraction of that, not to your average and certainly not to your peak. Layer commitments over time rather than making one large decision, so you are never fully exposed to a single forecast.

There is a second, related opportunity: interruptible or spot capacity, which is heavily discounted in exchange for the provider being allowed to reclaim it. For batch processing, CI pipelines, and anything that can be restarted without consequence, this is a large saving that most teams never pursue.

Leak Five: Data Movement

Data transfer charges are the most confusing part of a cloud bill and the most likely to be dismissed as an unavoidable cost of doing business. They are often neither.

Charges typically apply when data leaves the provider’s network, and frequently when it moves between regions or between availability zones within a region. That last one catches people out constantly. A microservice architecture where services are spread across zones for redundancy can generate substantial internal transfer costs from ordinary traffic between components.

Other common sources: serving large files directly from object storage instead of through a content delivery network, chatty services that make many small calls across a network boundary, and logs or metrics shipped to an external tool in full volume.

Fixing It

  • Keep components that talk to each other frequently in the same availability zone where redundancy requirements allow it.
  • Put a CDN in front of anything large and static. Delivery is usually cheaper than direct egress and faster for users.
  • Compress and sample telemetry before shipping it externally. Most teams retain far more log data at full fidelity than they ever query.
  • Check whether your architecture crosses network boundaries for reasons that are historical rather than deliberate.

Leak Six: Storage That Never Gets Reviewed

Storage is cheap per unit and enormous in aggregate. Because the per-gigabyte number looks trivial, nobody examines it, and it grows indefinitely.

Two specific problems. First, data sits in expensive high-performance storage long after anyone needs fast access to it. Logs from three years ago do not need to be instantly retrievable. Providers offer tiered storage where infrequently accessed data costs a fraction of the standard rate, and lifecycle rules can move it automatically.

Second, backup and snapshot retention runs without review. A daily snapshot policy set once and never revisited accumulates thousands of snapshots, each one billing. Ask what your actual recovery requirement is and set retention to match it rather than keeping everything by default.

Why the Leaks Persist

Every fix above is technically simple. The reason cloud waste is universal is organizational, and no amount of tooling fixes an incentive problem.

Nobody Sees the Cost of Their Own Decisions

The engineer choosing an instance size does not see the bill. The bill goes to finance, which cannot evaluate whether the choice was reasonable. The feedback loop between decision and consequence is broken.

The fix is visibility at the team level. Tag resources by team and product, then show each team what they spend, monthly, without turning it into a leaderboard or a punishment. Most engineers care about waste once they can see it. Almost none will go looking for it in a consolidated invoice they have no access to.

Optimization Is Nobody’s Job

Cost work competes with feature work for the same engineering hours, and feature work always seems more urgent. Without explicit ownership, the review that would catch a growing leak simply never happens.

This does not require a dedicated team at most company sizes. It requires someone named, with an hour or two a week, and a standing agenda item. The recurring review is what turns cost management from an occasional panic into a routine.

Fear Is Rational

An engineer who reduces spend gets mild approval. An engineer who causes an outage while reducing spend gets a very different experience. That asymmetry is real, and pretending otherwise makes optimization efforts fail quietly.

Address it directly. Make it explicit that carefully executed changes that occasionally need reverting are acceptable. Establish clear rollback procedures. Start in non-production where the stakes are low. Build a track record before touching anything customer-facing.

A Sequence That Works

  1. Get visibility first. Enable detailed cost reporting and tag everything by team, environment, and product. Without this you are guessing, and guessing produces argument rather than action.
  2. Delete the obvious waste. Orphaned resources, unattached storage, old snapshots. Zero risk, immediate saving, and it builds credibility for the harder work.
  3. Schedule non-production. Large saving, low risk, affects nothing customer-facing.
  4. Rightsize incrementally. Start with the most overprovisioned resources. Move in steps and monitor.
  5. Commit to your baseline. Once usage is cleaned up, commit to the floor you have established. Doing this before cleanup means committing to your own waste.
  6. Then look at architecture. Data transfer patterns and storage tiering require more thought and deliver over a longer horizon.

The order matters. Teams that start with architectural redesign spend months on a project while the easy savings sit untouched, and they often lose organizational support before delivering anything.

Frequently Asked Questions

How much can a typical company expect to save?

It depends heavily on whether anyone has looked before. An environment that has grown for several years without cost review usually has substantial waste available from the simple categories alone — orphaned resources, overprovisioning, and unscheduled non-production. An environment already under active management will find far less. The honest way to size the opportunity is to run a resource inventory and check utilization before promising anyone a number.

Is it worth hiring a cost optimization consultant or tool?

Third-party tools are genuinely useful above a certain scale, mainly for visibility and recommendations across a complex environment. Below that, the native provider tooling covers most of what you need, and the constraint is attention rather than analysis. Be cautious with consultants paid on a percentage of savings — the incentive favors quick cuts over sustainable practice, and you can end up with a one-time reduction and no change in how decisions get made.

Should we consider moving off the cloud to reduce costs?

For a specific and unusual profile — very stable, predictable, high-volume workloads with no need for elasticity — self-hosting can be cheaper, and some companies have done it successfully. For most businesses it is not, once you account for hardware refresh cycles, capacity planning, and the operational staff required. Before treating it as a cost strategy, optimize what you have. Comparing an unoptimized cloud bill against an idealized self-hosted estimate is not a fair comparison.

Make It a Habit, Not a Project

The pattern that undermines most cost work is treating it as a campaign. Someone notices the bill, there is a push, savings are found, everyone moves on. Twelve to eighteen months later the bill is back where it started, because the conditions that produced the waste were never addressed.

What actually holds is unglamorous: cost visible to the teams that generate it, one person responsible for watching the trend, a short review on a recurring schedule, and tagging enforced at creation so resources cannot become anonymous.

Do that and the large cleanup projects stop being necessary, because waste gets caught while it is small. The goal is not the lowest possible bill — an environment optimized to the last dollar is usually one where engineers are afraid to experiment, which costs far more than it saves. The goal is a bill you understand, where every significant line has a reason and someone who can explain it.

Share This Article
Leave a Comment

Leave a Reply

Your email address will not be published. Required fields are marked *