Skip to content

System Design

A repeatable method: requirements → estimates → design → trade-offs.

functional requirementsnon-functional requirementstraffic estimationstorage estimationload balancingcachingpartitioningshardingreplicationCDN

Lessons

  1. 6.1The system design methodA simple, repeatable recipe for designing any system, so you build what's needed: not too much, not too little. 30 min Scale journey
  2. 6.2Back-of-the-envelope estimationTwo minutes of rough math tells you if you need one server or a hundred. Here's how to do it without a calculator. 30 min Back-of-the-envelope estimator
  3. 6.3Design a URL shortenerTurning a long link into a short one looks easy. Designing it well teaches you the whole system design method. 30 min Back-of-the-envelope estimator Cache strategies
  4. 6.4Design a chat app (WhatsApp-lite)Chat looks like "send text, show text". Underneath, the server must push messages to people who never asked, even when they're offline. 30 min Back-of-the-envelope estimator
  5. 6.5Design a hotel booking engineHundreds of people look at a room for every one who books it. Here's how a booking engine stays fast for lookers and strict for buyers. 30 min Cache strategies

On the job: try it on your own project

Take one feature on your roadmap. Write its functional and non-functional requirements, then do a back-of-envelope estimate: users, requests per second at peak, data stored per year. Ask Claude Code to check your maths and to sketch a design that meets it. Write a one-page design note that says where caching, replication or a queue is needed and where it is not.

Can you do this now?

0/4. Anything you can't tick yet: reopen that lesson's practice ladder.