System Design
A repeatable method: requirements → estimates → design → trade-offs.
functional requirementsnon-functional requirementstraffic estimationstorage estimationload balancingcachingpartitioningshardingreplicationCDN
Lessons
- 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
- 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
- 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
- 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
- 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.