Cloud bills rarely balloon from one bad decision. They creep - an oversized instance here, an idle environment there, a forgotten snapshot from a project that shipped last year. The good news: the same boring quality means the fixes are boring too, and they stick.
Find the money before you optimize
Do not start by tuning. Start by looking. Turn on cost allocation tags and answer one question: which five things cost the most? Optimization effort should follow the bill, not your intuition. Almost always, the top three line items are where all the savings are.
The usual suspects
In order of how often they pay off:
- Oversized compute. Instances picked for a peak that never comes. Right-size to actual usage, not to the number that felt safe.
- Idle non-production. Dev and staging running 24/7 for a team that works 8 hours. Schedule them off nights and weekends - often a 60%+ cut on those environments.
- Orphaned storage. Unattached volumes, old snapshots, logs with no retention policy. Cheap individually, expensive in aggregate, invisible forever.
- Egress surprises. Data leaving the cloud, or crossing regions, priced per gigabyte. Usually an architecture smell worth fixing anyway.
Commit only to what you understand
Reserved instances and savings plans are real discounts, but they are a bet on future usage. Buy them for the steady baseline you are confident about, and leave the variable part on demand. A commitment you outgrow or under-use quietly cancels its own savings.
Make it a habit, not a heroics
The pass that saves 30% once is worth less than a monthly ten-minute look at the top costs and a tag that flags anything untagged. Cost is a reliability property: an unpredictable bill is an unmonitored system. Treat it like uptime - watch it a little, all the time, instead of a lot, once.