System Design Course

A free, hands-on system design course for interviews: lessons with a whiteboard exercise that checks your design as you draw, interactive simulations and a quick quiz. Then practise full designs in guided practice and read worked interview problems.

How to run a design interview

Before any box is drawn: the five phases, and the questions that decide the design.

Back-of-the-envelope estimation

Turn "10 million users" into requests per second, terabytes and a short list of components.

Networking and the entry layer

DNS, CDNs, load balancers, gateways and rate limits: the front door every request walks through.

APIs and data modelling

What callers say, what you store, and how the shape of one decides the other.

Databases at scale

Choosing the right store, keeping copies, and splitting data across machines without losing it.

Caching

Keep your most-asked answers close, and learn the ways caches go wrong.

Async systems

Queues, retries and the patterns that keep an order from vanishing or happening twice.

Consistency and coordination

When copies disagree, who decides, and what to say when an interviewer asks "strong or eventual?"

Reliability and observability

Expect every part to fail, stop one failure from spreading, and notice it before your customers do.

Storage engines, search and geo

Look inside the database, then build the two indexes a plain database cannot: text search and nearby.

Designing GenAI systems

Answer from your own data, then keep every model call affordable, fast and safe.

Practice and reference