Design a cloud storage service
Company: Amazon
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a cloud document storage and sharing service (e.g., like Google Drive). Cover requirements (upload/download, folder hierarchy, metadata/search, sharing/ACLs, versioning, trash/restore), APIs, data model, storage architecture (object store, metadata store, indexing), consistency model, partitioning and replication, upload chunking and resumability, virus scanning and thumbnails, encryption (at rest/in transit), permission checks, rate limiting, monitoring, scalability, availability, and cost considerations. Provide rough capacity estimates and a high-level diagram.
Quick Answer: This question evaluates a candidate's competence in designing large-scale cloud document storage and sharing systems, testing knowledge of distributed storage and metadata modeling, API design, consistency and replication strategies, security, and operational concerns.