Design File Storage & Sharing Service

Design a distributed file storage service like Google Drive or Dropbox.

Clarifying Questions to Ask?

  • What is the core functionality?

  • Who are the users?

  • What file sizes and types must be supported?

  • How is sharing implemented?

  • Are there access controls?

  • Is versioning required?

  • Is real-time collaboration (e.g., Google Docs) required?

Full Problem Statement

Design A File Storage & Sharing Service (like Google Drive or DropBox)

OR

Design a distributed file storage service similar to Dropbox or Google Drive with the following features:

Core Requirements:

  • Users can upload, download, and delete files.
  • Files are synchronized across multiple client devices (desktop, mobile).
  • Support for file versioning.
  • Users can share files or folders with others.

Scale Requirements:

  • 500 million users.
  • 100 Petabytes (PB) of total storage.
  • 1 million concurrent file uploads/downloads.
  • 99.99% durability and 99.9% availability.

Additional Considerations:

  • How would you handle large file uploads and downloads efficiently? (e.g., chunking).
  • How would you design the synchronization protocol to handle conflicts?
  • How would you optimize storage costs? (e.g., deduplication).
  • How would you manage file metadata vs. file content (chunks)?

PlayGround

Loading...
Loading...