Skip to main content

© 2026 Stephen Adei. All rights reserved. All content on this site is the intellectual property of Stephen Adei. See License for terms of use and attribution.

ADR-007: Explicit S3 Lifecycle Rules

Status

Accepted

Context

The system needs to optimize storage costs by transitioning old data to cheaper storage classes (Glacier) while maintaining predictable access patterns.

The following options were considered:

  1. Explicit lifecycle rules (chosen)
  2. Intelligent-Tiering (rejected)
  3. No lifecycle policies (rejected - high storage costs)

Decision

Use explicit S3 lifecycle rules instead of Intelligent-Tiering:

  • Silver layer: Transition to Glacier after 90 days
  • Quarantine/Condemned: Transition to Glacier after 5 years

Rationale

  1. Predictable access patterns: Recent data (hot), old data (cold) - explicit rules match usage
  2. Low object counts: ~50 files/month/bucket - Intelligent-Tiering overhead ($0.0025/1000 objects) not cost-effective
  3. Cost optimization: Explicit rules provide predictable cost reduction
  4. Control: Manual tuning enables optimization for specific access patterns
  5. Simplicity: Explicit rules are easier to understand and audit

Consequences

Positive:

  • Predictable costs: Explicit rules provide clear cost optimization
  • Control: Manual tuning for specific access patterns
  • Simplicity: Easier to understand and audit than Intelligent-Tiering
  • Cost-effective: No per-object overhead at current scale

Negative:

  • Manual tuning: Requires periodic review and adjustment
  • Less adaptive: Doesn't automatically optimize for changing access patterns

Alternatives Considered

Intelligent-Tiering

  • Why rejected: Adds $0.0025 per 1000 objects overhead. At current scale (~50 files/month), overhead exceeds benefit. Explicit rules more cost-effective.

No Lifecycle Policies

  • Why rejected: High storage costs for old data. Glacier transition reduces costs by 80-90%.

Implementation Evidence

© 2026 Stephen AdeiCC BY 4.0