data-governancestoragecost-optimizationfinops

Data retention policy cost: what keeping everything forever actually costs

Retention is usually set by whoever felt most cautious, not by anyone holding a budget. Attaching dollar figures to each retention window turns an argument about risk into a decision about price.

The C3X Team··8 min read

Quick answer

Retention cost compounds because data accumulates while the rate stays flat. A pipeline landing 3 TB a month costs about $69 a month in hot object storage in month one and $828 a month by month twelve if nothing expires. Over three years that steady state reaches $2,484 a month for data that is mostly never read. The fix is a tiered retention policy with an explicit expiry: keep 30 days hot, 11 months in colder tiers, and delete or deep archive beyond, which typically cuts the bill by 75 to 90 percent while satisfying most compliance requirements.

Nobody sets retention to forever on purpose. It happens because the default is no expiry, because deleting data feels irreversible, and because the person who would benefit from deleting it is not the person who has to justify it if something turns out to have been needed. The result is that storage costs rise every month without anyone making a decision, which is the definition of an unmanaged expense.

The compounding arithmetic

MonthAccumulated dataMonthly cost, all hotCumulative spend
13 TB$69$69
618 TB$414$1,449
1236 TB$828$5,382
2472 TB$1,656$20,349
36108 TB$2,484$44,850

At S3 Standard rates of $0.023 per GB per month. Three years of a single modest pipeline, never expired, is roughly $45,000. The same pipeline with a tiered policy and a 12 month expiry costs about $6,000 over the same period. And that is one pipeline; a platform typically runs dozens.

Retention windows have different prices by data type

Data typeCommon retentionPrice sensitivity
Application logs7 to 30 days hot, 90 days archivedVery high, huge volume
Metrics15 days raw, 13 months downsampledHigh, cardinality driven
Raw event data13 months, then aggregateHigh
Aggregated business metricsIndefiniteLow, tiny volume
Database backups35 days, plus monthly archivesMedium
Audit and compliance records7 years, deep archiveLow per GB, deep archive is cheap

The key insight is that the data with genuine long retention requirements, audit records and aggregated metrics, is almost always small. Audit logs at 50 GB a year in Deep Archive cost about $0.60 a month per year of history. Seven years of them is around $4.20 a month. Meanwhile the raw application logs nobody has read since the incident they were generated for occupy terabytes. Long retention is not the expensive part; long retention of high volume data in the hot tier is.

Downsampling beats deletion arguments

When a stakeholder insists on keeping years of history, offer aggregation rather than deletion. Raw event rows at one second granularity compressed to hourly aggregates typically shrink by 99 percent or more while preserving nearly every question anyone actually asks of old data. A metrics store keeping 15 days at full resolution, 90 days at five minute resolution, and 13 months at hourly resolution holds a small fraction of the bytes of a full resolution 13 month store, at a small fraction of the cost. This converts an unwinnable conversation about risk into an easy one about precision.

Where retention costs hide

Retention also interacts with per request charges. Lifecycle transitions and expirations are billed per object, so a bucket holding 200 million small files costs real money simply to expire. Compacting before applying an aggressive policy avoids paying a four figure one off fee to delete data you no longer want.

Beyond object storage, retention accrues in places people forget. Warehouse time travel and fail safe windows multiply table storage, and a 90 day time travel setting on a heavily updated table can hold several times the live data size. Snapshot and backup chains grow with every incremental. Log ingestion services often charge both for ingestion and for retention beyond a free window, so a 2 TB a month log volume kept 12 months carries an ongoing storage line long after ingestion was paid. Search cluster indices held on hot nodes are the most expensive per GB of all, which is whyindex lifecycle tiering matters so much.

Writing a policy that survives review

TierWindowStorage classCost per TB-month
Hot0 to 30 daysStandard~$23
Warm30 to 90 daysStandard-IA~$12.50
Cold90 to 365 daysGlacier Instant Retrieval~$4
Archive1 to 7 years, compliance onlyDeep Archive~$1
ExpiredBeyond policyDeleted$0

Every dataset gets an owner, a tier schedule, and an expiry date, written in the Terraform that creates the bucket rather than in a wiki page. Make the default a finite window so new pipelines inherit sanity, and require an explicit override with a named justification for anything indefinite. Review annually and check the actual access logs: data with zero reads in six months belongs a tier down, whatever anyone claimed when the policy was written. C3X prices buckets, storage classes, and lifecycle configuration from theresource catalog so the cost of a retention choice is visible at the moment it is made.

FAQ

How much does indefinite data retention cost?

It compounds. A pipeline landing 3 TB a month in hot object storage costs about $69 in month one, $828 by month twelve, and $2,484 by month thirty six, totalling roughly $45,000 over three years. The same pipeline with tiered storage and a twelve month expiry costs around $6,000 over the same period.

Is long retention always expensive?

No. Long retention of high volume data in the hot tier is expensive. The data with genuine multi year requirements, audit records and aggregated business metrics, is usually tiny: 50 GB of audit logs a year in Deep Archive costs about $0.60 a month, so seven years of history is roughly $4.20 a month.

What is downsampling and why does it help?

Downsampling replaces fine grained raw records with coarser aggregates as data ages, for example collapsing per second events into hourly rollups. It typically shrinks volume by 99 percent or more while preserving nearly every question asked of old data, which turns a difficult argument about deleting history into an easy one about precision.

Where does retention cost hide besides object storage?

Warehouse time travel and fail safe windows multiply table storage, sometimes several times over on heavily updated tables. Snapshot and backup chains grow with each incremental. Log services often charge for retention beyond a free window in addition to ingestion. Search cluster indices held on hot nodes are the most expensive per GB of all.

What is a sensible default retention policy?

Thirty days in the hot tier, thirty to ninety days in infrequent access, ninety days to a year in instant retrieval archive, one to seven years in deep archive for compliance only, and deletion beyond that. Make a finite window the default so new pipelines inherit it, and require a named justification for anything indefinite.

How does C3X help with retention cost?

C3X prices buckets, their storage classes, and lifecycle configuration from Terraform before deployment, against a live catalog of real prices. That means the difference between a bucket with no expiry and one with a tiered policy shows up as a dollar figure in the pull request, at the moment the choice is actually being made.

What to do next

Make retention choices with prices attached. C3X reads Terraform and costs your resources in review. Start with the quickstart.

Try C3X on your own Terraform

Free and open source. No API key required. One command to install, one command to estimate.