System design walkthroughs

Worked designs that apply the system design method to common storage, data, and scaling problems.

In this article

These walkthroughs use the same sequence: define the requirements, sketch the main modules, choose data flows, and scale the bottleneck that measurements expose.

Choose a problem shape

Store and serve user content

Design a paste-sharing service covers short links, object storage, expiration, analytics, and read-heavy traffic.

Design a social feed covers timelines, follower fan-out, search indexing, notifications, and celebrity accounts.

Crawl, deduplicate, and search documents

Design a web crawler covers crawl queues, content signatures, freshness, reverse indexes, and bandwidth limits.

Ingest transactions and compute aggregates

Design a personal finance service covers encrypted external credentials, asynchronous extraction, categorization, and batch spending totals.

Traverse a graph spread across machines

Design a social graph covers breadth-first search, shard lookup, cache placement, and reducing machine-to-machine hops.

Cache a hot read path

Design a query cache covers cache-aside reads, LRU eviction, consistent hashing, and cache update rules. Continue with caching.

Rank records from event logs

Design a sales-rank service covers MapReduce aggregation, distributed sorting, time windows, and read-heavy serving.

Scale infrastructure in measured steps

Scale a service on AWS follows a service from one machine through load balancing, replicas, caching, and autoscaling. See load balancing for the shared concepts.

Model a small domain with classes

Object-oriented design covers class relationships, method responsibilities, and data structures for common domain models.

Use the design method to structure a new problem. Review databases, the API design guide, concurrency, and the system design glossary when a walkthrough introduces those topics.

Keep track of your reading.

Your reading progress stays in this browser.