Module 1: System Design Methodology: Case Studies
These case studies train the system-design loop: clarify, estimate, identify hard parts, choose a high-level design, stress it, and defend tradeoffs with evidence.
Case Study 1: Dropbox Magic Pocket As Storage Design Method
Scenario: Design a file-storage backend for billions of immutable chunks. The naive answer is "put files in object storage." The real design has chunking, metadata, durability, repair, encryption, and cost constraints.
Source anchor: Dropbox's engineering writeup Inside the Magic Pocket, which describes Magic Pocket as an immutable block storage system for encrypted file chunks.
Module concepts: requirements clarification, storage estimation, metadata/data split, durability, repair, cost tradeoff.
Wrong Approach
Start drawing boxes before naming the object model and durability target.
Better Approach
Clarify:
Object: immutable encrypted block
Max block size:
Metadata lookup:
Durability target:
Read/write ratio:
Repair/re-replication:
Cost per stored TB:
Then separate metadata path from blob-storage path and estimate chunk count, storage growth, replication overhead, and repair bandwidth.
Tradeoff Table
| Choice | Gain | Cost |
|---|---|---|
| object storage provider | low ops burden | vendor cost/control tradeoff |
| custom storage fleet | cost/control at scale | operational complexity |
| large chunks | less metadata | poor dedupe and partial update behavior |
| small chunks | better dedupe/repair | more metadata and lookup pressure |
Required Artifact
Produce a one-page design brief: requirements, rough capacity math, data model, hot path, failure path, and three rejected alternatives.
Case Study 2: News Feed Fanout Under Vague Requirements
Scenario: A prompt says "design a social feed." Some users follow 50 people; some follow 50 million. A single feed strategy will punish one side.
Source anchor: Meta's TAO: Facebook's Distributed Data Store for the Social Graph is a useful anchor for read-heavy social workloads where feed and graph access patterns dominate design choices.
Module concepts: clarifying questions, fanout-on-write, fanout-on-read, celebrity users, cache, backfill.