sehaj/learn

Course 02 · System design · writing in public

System design, one trade-off at a time.

Learn the building blocks behind every large system, see where real companies use them, and practise designing with one framework until it's habit. Diagrams you can step through, labs you can play with, and a single system that grows from one server to millions.

Before you start

You should know

How to build a basic web app or API, and roughly what a database does.

You'll need

A browser for the labs. Docker, if you want to run the code (our Docker course covers it).

You'll leave with

A framework for any design question, the building blocks to fill it, and 22 designs worked end to end.

Curriculum

Part 1 · How to think about systems

Part 2 · Building blocks

Part 3 · Designs

16

Product designs

Real products, end to end.

  • 16.01Design: ticket bookingDESIGN25m
  • 16.02Design: a payment systemDESIGN25m
  • 16.03Design: ride matchingDESIGN25m
  • 16.04Design: nearby placesDESIGN20m
  • 16.05Design: a video platformDESIGN25m
  • 16.06Design: file syncDESIGN25m
  • 16.07Design: a collaborative editorDESIGN25m
  • 16.08Design: a leaderboardDESIGN18m
  • 16.09Design: ad click aggregationDESIGN22m
  • 16.10Design: metrics and alertingDESIGN22m
  • 16.11Design: a distributed message queueDESIGN25m

Part 4 · Case studies

17

Case studies

What real companies built, what broke, and what we can learn.

  • 17.01Case: Instagram's early architectureCASE15m
  • 17.02Case: Twitter's Snowflake IDsCASE12m
  • 17.03Case: Amazon's Dynamo paperCASE18m
  • 17.04Case: Memcache at FacebookCASE18m
  • 17.05Case: Discord's message storageCASE15m
  • 17.06Case: Stripe's idempotency keys and rate limitersCASE15m
  • 17.07Case: Slack's job queueCASE14m
  • 17.08Case: Figma's multiplayerCASE15m
  • 17.09Case: Netflix Open ConnectCASE14m
  • 17.10Case: GitLab's 2017 database incidentCASE14m