Cloud bills do not grow because someone made a big, bad decision. They grow because hundreds of small, reasonable decisions each left a little headroom: an instance sized for a peak that never returned, a development environment that runs nights and weekends, a database snapshot policy nobody revisited, logs retained forever because deleting felt risky. None of it is negligence. All of it is money.
Why cloud waste is structural
On-premises infrastructure made waste visible at purchase time: someone had to sign for the hardware. Cloud inverts that. Provisioning is instant and approval-free, while the cost signal arrives weeks later on a bill read by someone who did not make the decisions. The engineers who create the costs never see them; the finance team that sees them cannot map line items to decisions. FinOps, stripped of the buzzword, is just closing that loop.
Where the money actually hides
- Compute sized by guess. Instances provisioned generously "to be safe" and never revisited. Utilization data usually shows a large share of compute running far below capacity.
- Environments that never sleep. Development, test, and staging systems billing 168 hours a week to support a 45-hour work week.
- Storage with no lifecycle. Snapshots, old backups, orphaned volumes, and logs on premium storage tiers. Storage is cheap per unit, which is exactly why nobody watches it accumulate.
- Paying on-demand rates for steady-state load. The baseline that runs every hour of the year is the easiest discount opportunity in the account, through commitment-based pricing.
- Data transfer surprises. Cross-region replication and chatty architectures that pay egress rates for internal traffic.
A sequence that pays for itself
- Get visibility first. Enforce a small, mandatory tagging standard (owner, environment, application) so every dollar has a name attached. Untagged spend gets a deadline.
- Take the safe wins. Delete orphaned resources, schedule non-production environments to sleep, add storage lifecycle policies. These require no architectural courage.
- Right-size with data. Use actual utilization metrics to resize the worst offenders. Start with the largest instances, where a single size step matters most.
- Commit to the baseline. Once usage is cleaned up, cover the steady-state floor with reserved or committed-use pricing. Committing before cleaning locks in the waste.
- Make cost a standing signal. Budget alerts per team, cost review in the engineering cadence, and unit metrics that the business understands, such as cost per customer or per transaction.
What not to do
Do not start with a re-architecture. Moving to containers, serverless, or a new database may be worthwhile, but it is a quarters-long project justified by more than cost, and it delays the savings sitting in plain sight. Do not slash without owners either: central teams that delete resources by fiat teach engineers to hoard and hide. The durable version is a loop where the people who create costs can see them, compare them to something meaningful, and are expected to act.
The mid-market advantage
Large enterprises need FinOps platforms, councils, and headcount. A mid-market company mostly needs the discipline: one person with clear mandate, a monthly rhythm, and executive backing when a team is asked to fix its footprint. In our experience the first pass over an unmanaged account reliably finds meaningful reductions, and the habit of reviewing spend keeps it from growing back. The health check that starts it takes days, not months.