7. Design a File Storage Service
Upload and share large files with resumable transfer, versions and safe metadata changes.
The brief
Design a file storage and sharing service for web and desktop clients. Separate file bytes from metadata and permissions, and explain resumable uploads, downloads and version creation. Define what a user sees after an interrupted upload or conflicting edits from two devices.
- Support 1 million users uploading 100 TB/day in total; files range from 1 KB to 10 GB.
- Networks can disconnect mid-upload and desktop devices may edit offline.
- Users can share a folder with named collaborators and revoke access later.
Constraints
- Supported file size≥ 10 GB
- Declare the maximum supported single-file size.
- Atomic file visibility
- Do not publish metadata pointing to an incomplete or missing file version.
- Revocation contract
- Define authorization for bytes and metadata, including the lifetime of already-issued download links.
What to cover
- 01
Metadata and versions
Define ownership, folders, permissions, version identity and conflict behavior.
- 02
Transfer protocol
Describe multipart upload, retry verification, completion and download access.
- 03
Storage and cleanup
Estimate daily and retained byte volume; handle unreferenced chunks and deleted versions.
- 04
Failure walkthrough
Trace a dropped upload, simultaneous edits and access revocation; compare two conflict policies.
Worked designs
Explore the architecture and decisions, then build on an example with Coach.
Review rubric
AI feedback uses these criteria. Scores are practice feedback.
Version correctness
Publication and conflicting edits preserve an explicit version history.
Resumable transfers
Retry identity, integrity and completion are coherent.
Access lifecycle
Metadata and byte access honor the sharing contract.
Capacity and recovery
Retention, cleanup and interrupted work are accounted for.
Discussion
Share an approach, ask a question, or tag @Coach.
Loading discussion…