Cutting a GCP storage bill by 95.9% with lifecycle policies
Cloud storage is the cost that creeps: nobody deletes anything and every byte lands in the most expensive tier. Here is how a handful of lifecycle policies cut a bill by 95.9%, about $148K a year, with zero data loss.
Storage is the cost that creeps. Nobody deletes anything, every byte lands in the default (and most expensive) class, and the bill grows quietly until someone looks. This is a write-up of the technique I used to cut one of these bills by 95.9%, with no new infrastructure and no data migration tooling.
The problem
The data was not all hot. Most of it was written once and never read again, but it sat in Standard storage priced for frequent access. There was no tiering to cheaper classes and nothing ever aged out, so the footprint and the bill only went one direction.
What I changed
No new infrastructure, no data migration tooling, just lifecycle policies applied to the buckets:
- Keep only hot data in Standard. The last 5 days of data stays in Standard, which is what actually gets read.
- Archive the rest automatically. Files older than 5 days move to the Archive class, a fraction of the Standard price.
- Delete what nobody needs. Files older than 365 days are removed on a schedule, so the footprint stops growing forever.
- Applied everywhere. The same policies went on both multi-region and single-region buckets.
The important part: this is self-driving. Once the policies are in place, archival and deletion run on their own. There is nothing to remember and nothing to maintain.
The result in one line
About $148K saved per year, well over a third of a million across three years, with hot data still in Standard so nothing got slower, and zero data loss. The cheapest wins in cloud are often the ones already sitting in your bill.
What I would tell someone starting this
- Look at the storage bill before the compute bill. It is usually simpler to fix and the savings compound monthly.
- Tier by access pattern, not by guesswork. The last few days are hot; almost everything older is not.
- Add a deletion policy, not just archival. Archival slows the growth; deletion stops it.
- Let the platform do the work. Lifecycle policies are set-and-forget, which means the savings do not depend on anyone remembering.