System design problem
Design Google Drive or Cloud File Storage
Design a cloud file storage and synchronization service. The problem combines large-object transfer, metadata, permissions, versioning, sync, offline changes, and reliability across devices and regions.
Separate file bytes from file metadata
Clarify file-size limits, folders, sharing, versions, offline support, and synchronization. A common design stores large file chunks in object storage while a metadata service owns names, versions, permissions, chunk manifests, and user-visible hierarchy.
- Resumable uploads
- Chunked object storage
- Metadata and version records
- Folders, ownership, and sharing
Design upload, download, and sync flows
Discuss multipart or chunked upload sessions, checksums, deduplication if required, pre-signed transfer URLs, download authorization, change logs, client cursors, and how devices learn which files changed.
- Upload session API
- Chunk checksum and retry
- Change feed or sync cursor
- Conflict detection and versioning
Deep dive into consistency and reliability
Follow-ups often cover concurrent edits, metadata transactions, lost devices, deleted files, permission changes, chunk durability, multi-region replication, large-file retries, quotas, and disaster recovery.
- Metadata consistency
- Conflict resolution
- Durable replicated object storage
- Deletion, retention, and recovery
Common questions
Why split metadata from object storage?
Metadata needs transactions, indexes, permissions, and low-latency listing, while large immutable file chunks benefit from scalable object storage. Separating them lets each workload use a suitable storage model.
How can file uploads resume after failure?
Upload files in independently addressable chunks, persist an upload-session manifest, verify chunk checksums, and let the client retry only missing or failed chunks before finalizing the version.
How do multiple devices synchronize changes?
Maintain an ordered or cursor-based change feed per user or workspace so clients can ask for changes since their last sync point, then resolve conflicts according to the product's consistency rules.