Design Photo Storage
MediumSystem design · Media Storage
Design a personal photo storage and sharing backend (Google Photos / iCloud Photos style). Phones back up photos in the background, users browse a timeline and albums, search by content, and share albums or links. Focus on resumable deduplicated upload, storing originals versus derived renditions, tiered storage cost, content search, sharing permissions and deletion. Out of scope: video editing and the on-device UI.
Requirements
- Resumable chunked upload with client-side hashing to avoid re-uploading known files
- Keep originals immutable and cold-tiered; generate thumbnails and display sizes eagerly, larger sizes lazily
- Search by content (objects, scenes, places, people grouping) with a background analysis pipeline
- Enforce sharing permissions, signed CDN URLs, and delete with a recovery window and reference counting