Course

All lessons

Every lesson is a short, self-contained read that ends in a checkpoint.

Module 01

Learn the framework

What the round is, the six moves that carry any design, the arithmetic you do out loud, and the mistakes that end interviews early.

Module 02

Core concepts

The vocabulary every design round runs on: scaling, latency, reliability, availability, failure, consistency and the principles that tie them together.

Module 03

Networking and APIs

What happens between a tap and a response: DNS, TCP, TLS, HTTP, balancing, and the three API styles you will be asked to choose between.

Module 04

Data and storage

Choosing and defending a datastore: relational versus document versus wide-column, indexes, isolation levels, replication, sharding, and when a search engine belongs in the design.

Module 05

Caching

Where a cache earns its keep, the three strategies worth knowing, how invalidation actually works, and what a CDN changes about a design.

Module 06

Messaging and streams

Queues versus logs, delivery guarantees, ordering, backpressure, and the event-driven patterns that decouple services without hiding failures.

Module 07

Distributed coordination

How independent machines agree on one truth: consensus and quorums, leases and locks, and the uncomfortable reality of clocks and ordering.

Module 08

Running in production

What keeps a design alive after launch: resilience patterns, observability that answers questions, scaling a fleet without manual surgery, and shipping changes safely.

Module 09

Performance anti-patterns

The "why is it slow?" playbook: measuring before guessing, reading tails instead of averages, and the recurring mistakes that turn small inefficiencies into capacity bills.

Module 10

Security

Who is calling, what may they touch, and what happens if the data leaks: identity and authorisation, protecting data in transit and at rest, and defending the public edge.

Module 11

Key technologies and patterns

The map of real systems: which category each tool belongs to, what it is good at, and the handful of patterns that keep reappearing across every design.

Module 12

Practice problems

Twelve designs worked end to end with the six-move framework: requirements, estimates, API, data model, high-level design, deep dives and bottlenecks.

01Design a URL shortenerThe warm-up problem. Small surface area, one interesting property: reads outnumber writes by a hundred to one.Beginner · 8 min02Design a distributed rate limiterA counter that must be shared, atomic, and fast — and must still work when the counter store is down.Intermediate · 8 min03Design typeahead / autocompleteTen keystrokes, ten queries, and a 100 ms budget. Precompute almost everything.Intermediate · 7 min04Design a web crawlerA polite, deduplicating pipeline that has to decide what to fetch, how often, and when to stop.Intermediate · 8 min05Design a news feedThe classic fan-out trade-off, plus the part people forget: ranking and caching the result.Intermediate · 8 min06Design a chat applicationDurable connections, ordered messages per conversation, and delivery that survives a phone going offline.Advanced · 8 min07Design a notification serviceMulti-channel delivery where the hard parts are preferences, deduplication and not waking someone twice.Intermediate · 7 min08Design a ride-hailing matcherFind nearby drivers, pick one, and never assign the same driver twice.Advanced · 8 min09Design a video platformUpload is a pipeline; playback is a caching problem. Treat them as two systems.Advanced · 8 min10Design a file sync serviceMetadata consistency is the hard part; the bytes are just blobs in a bucket.Advanced · 8 min11Design product searchAn inverted index, a relevance function, and filters that must stay fast as the catalogue grows.Advanced · 7 min12Design a payments ledgerThe problem where correctness beats availability, and every rule is about failure.Advanced · 8 min