Versioned object store with lifecycle
Design a versioned object store (S3-versioning style) where every overwrite or delete creates a new version rather than destroying data, and customers attach lifecycle policies such as 'expire noncurrent versions after 30 days' or 'transition objects to cold storage after 90 days.' Buckets hold billions of objects, objects range from 1KB to 5GB, and reads dominate writes 50:1. How do you store versions and enforce lifecycle rules at this scale?
What a strong answer looks like
Clarify scale and constraints first. Propose a clean component breakdown, then go deep on the hard parts (data model, bottlenecks, consistency, failure modes) and name the trade-offs you are making.
Clarify4:00 left
Estimate4:00 planned
Design11:30 planned
Deep dive9:30 planned
Failure6:00 planned
Which questions mattered is sealed until you submit. Telling you now would just be handing over the edge cases.
Run or narrate your approach, then ask the coach.