System Design, Hands On: Build It, Break It, Explain It · Edorax
← Catalog Instructor · Dev Weekends
System Design, Hands On: Build It, Break It, Explain It Learn how real systems scale, stay correct and survive failure by playing with live simulations of each idea: push traffic up, kill the leader, cut the network, skew a clock. Write the core algorithms yourself in graded code exercises, build and break small systems in your own system-design-challenges repository, and pass architecture labs where you pick blocks and instance sizes to meet cost, latency and availability targets.
Difficulty Advanced
Duration ~196 hours
Price Free
Explore the syllabus
Course curriculum 38 modules · 623 lessons. Open a module to see its lesson list.
01 Replication 26 lessons View lessons Hide lessons 01.01 Set the scene: my comment disappeared10 min 01.01 Set the scene: a read that went backwards20 min 01.01 Set the scene: my comment disappeared10 min 01.02 Single-leader replication35 min 01.02 Single-leader replication35 min 01.03 Synchronous and asynchronous replication35 min What you'll build
Design, build, measure and defend one system against stated cost, p99 latency and availability targets: a design document with estimates, a lab design that passes its targets, the core running in your repository with tests, one failure experiment with a chart, and a recorded defence.
01.03 Synchronous and asynchronous replication35 min
01.03 Synchronous and asynchronous replication35 min
01.04 Replication lag and its anomalies20 min
01.04 Replication lag and its anomalies20 min
01.04 Replication lag and its anomalies40 min
01.05 Failover and split brain40 min
01.05 Replication lab checkpoint30 min
01.05 Failover and split brain40 min
01.06 Multi-leader replication35 min
01.06 Multi-leader replication35 min
01.07 Leaderless replication, a first look30 min
01.07 Leaderless replication, a first look30 min
01.08 Code: a read-your-writes router45 min
01.08 Code: a read-your-writes router45 min
01.09 Challenge 7: replicas and lag150 min
01.09 Challenge 7: replicas and lag150 min
01.10 Replication20 min
01.10 Replication20 min
01.11 Checklist and learning log25 min
01.11 Checklist and learning log25 min 02 Time, clocks and ordering 25 lessons View lessons Hide lessons 02.01 Set the scene: which came first?10 min 02.01 Set the scene: which came first?10 min 02.01 Set the scene: two clocks disagree20 min 02.02 Physical clocks lie30 min 02.02 Physical clocks lie30 min 02.03 Lamport clocks30 min 02.03 Lamport clocks30 min 02.04 Vector clocks30 min 02.04 Vector clocks30 min 02.05 Hybrid logical clocks25 min 02.05 Hybrid logical clocks25 min 02.06 TrueTime: time as an interval45 min 02.06 TrueTime: time as an interval25 min 02.06 TrueTime: time as an interval25 min 02.07 ID generation at scale25 min 02.07 Clock uncertainty lab checkpoint30 min 02.07 ID generation at scale25 min 02.08 Code: Lamport, vector and hybrid clocks50 min 02.08 Code: Lamport, vector and hybrid clocks50 min 02.09 Challenge 9: clocks150 min 02.09 Challenge 9: clocks150 min 02.10 Time, clocks and ordering20 min 02.10 Time, clocks and ordering20 min 02.11 Checklist and learning log25 min 02.11 Checklist and learning log25 min 03 Thinking like a system designer 14 lessons View lessons Hide lessons 03.01 Set the scene: launch day15 min 03.01 Set the scene: launch day15 min 03.02 Requirements first35 min 03.02 Requirements first35 min 03.03 The building blocks map35 min 03.03 The building blocks map35 min 03.04 The design loop30 min 03.04 The design loop30 min 03.05 Set up your system-design-challenges repository60 min 03.05 Set up your system-design-challenges repository60 min 03.06 Thinking like a system designer15 min 03.06 Thinking like a system designer15 min 03.07 Checklist and learning log25 min 03.07 Checklist and learning log25 min 04 Numbers, estimation and probability 22 lessons View lessons Hide lessons 04.01 Set the scene: will it fit?10 min 04.01 Set the scene: will it fit?10 min 04.02 Latency numbers you should feel35 min 04.02 Latency numbers you should feel35 min 04.02 Latency numbers you should feel35 min 04.03 Back-of-the-envelope estimation40 min 04.03 Back-of-the-envelope estimation40 min 04.04 Percentiles and tail latency35 min 04.04 Percentiles and tail latency35 min 04.05 Queues, utilisation and Little's law40 min 04.05 Queues, utilisation and Little's law40 min 04.05 Queues, utilisation and Little's law40 min 04.06 Availability maths: nines, series and parallel35 min 04.06 Availability maths: nines, series and parallel35 min 04.07 Code: percentiles and availability40 min 04.07 Code: percentiles and availability40 min 04.08 Challenge 1: measure a server120 min 04.08 Challenge 1: measure a server120 min 04.09 Numbers and estimation20 min 04.09 Numbers and estimation20 min 04.10 Checklist and learning log25 min 04.10 Checklist and learning log25 min 05 Networking for system designers 25 lessons View lessons Hide lessons 05.01 Set the scene: what happens when you open a link10 min 05.01 Set the scene: what happens when you open a link10 min 05.02 TCP, UDP and the cost of a handshake35 min 05.02 TCP, UDP and the cost of a handshake35 min 05.02 TCP, UDP and the cost of a handshake35 min 05.03 DNS and routing35 min 05.03 DNS and routing35 min 05.03 DNS and routing35 min 05.04 HTTP/1.1, HTTP/2 and HTTP/335 min 05.04 HTTP/1.1, HTTP/2 and HTTP/335 min 05.04 HTTP/1.1, HTTP/2 and HTTP/335 min 05.05 Real-time connections: polling, long polling, SSE, WebSockets35 min 05.05 Real-time connections: polling, long polling, SSE, WebSockets35 min 05.05 Real-time connections: polling, long polling, SSE, WebSockets35 min 05.06 Linux under your service35 min 05.06 Linux under your service35 min 05.06 Linux under your service35 min 05.07 Code: a DNS-style TTL cache35 min 05.07 Code: a DNS-style TTL cache35 min 05.08 Challenge 2: network costs90 min 05.08 Challenge 2: network costs90 min 05.09 Networking for system designers15 min 05.09 Networking for system designers15 min 05.10 Checklist and learning log25 min 05.10 Checklist and learning log25 min 06 Scaling out: load balancing and statelessness 25 lessons View lessons Hide lessons 06.01 Set the scene: one server is full10 min 06.01 Set the scene: one server is full10 min 06.02 Vertical versus horizontal scaling35 min 06.02 Vertical versus horizontal scaling35 min 06.03 Stateless services and where state goes35 min 06.03 Stateless services and where state goes35 min 06.04 Load balancers: L4, L7 and health checks35 min 06.04 Load balancers: L4, L7 and health checks35 min 06.04 Load balancers: L4, L7 and health checks35 min 06.05 Balancing algorithms40 min 06.05 Balancing algorithms40 min 06.06 Autoscaling35 min 06.06 Autoscaling35 min 06.06 Autoscaling35 min 06.07 Code: load balancing pickers40 min 06.07 Code: load balancing pickers40 min 06.08 Challenge 3: a load balancer120 min 06.08 Challenge 3: a load balancer120 min 06.09 Lab: three layers for 10,000 requests a second (a three-tier design)45 min 06.09 Lab: three layers for 10,000 requests a second (a three-tier design)45 min 06.09 Lab: three tiers at 10,000 requests a second45 min 06.10 Scaling out20 min 06.10 Scaling out20 min 06.11 Checklist and learning log25 min 06.11 Checklist and learning log25 min 07 Caching and CDNs 23 lessons View lessons Hide lessons 07.01 Set the scene: the sale that melted the database10 min 07.01 Set the scene: the sale that melted the database10 min 07.02 Where caches live35 min 07.02 Where caches live35 min 07.03 Cache patterns40 min 07.03 Cache patterns40 min 07.04 Eviction and hit rate35 min 07.04 Eviction and hit rate35 min 07.05 Cache invalidation40 min 07.05 Cache invalidation40 min 07.06 Stampedes and hot keys35 min 07.06 Stampedes and hot keys35 min 07.07 CDN and edge35 min 07.07 CDN and edge35 min 07.07 CDN and edge35 min 07.08 Code: an LRU cache with TTL45 min 07.08 Code: an LRU cache with TTL45 min 07.09 Challenge 4: a cache in front120 min 07.09 Challenge 4: a cache in front120 min 07.11 Caching and CDNs20 min 07.11 Caching and CDNs20 min 07.12 Checklist and learning log25 min 07.12 Checklist and learning log25 min 08 APIs, the front door and protecting it 22 lessons View lessons Hide lessons 08.01 Set the scene: a retry charged a customer twice10 min 08.01 Set the scene: a retry charged a customer twice10 min 08.02 API styles: REST, gRPC, GraphQL35 min 08.02 API styles: REST, gRPC, GraphQL35 min 08.03 Good API design: resources, pagination, versioning, errors40 min 08.03 Good API design: resources, pagination, versioning, errors40 min 08.04 Idempotency and safe retries40 min 08.04 Idempotency and safe retries40 min 08.05 Rate limiting algorithms40 min 08.05 Rate limiting algorithms40 min 08.06 API gateways35 min 08.06 API gateways35 min 08.07 Authentication and authorization at scale40 min 08.07 Authentication and authorization at scale40 min 08.08 Code: token bucket and sliding window45 min 08.08 Code: token bucket and sliding window45 min 08.09 Challenge 5: a rate limiter150 min 08.09 Challenge 5: a rate limiter150 min 08.11 APIs and the front door20 min 08.11 APIs and the front door20 min 08.12 Checklist and learning log25 min 08.12 Checklist and learning log25 min 09 Databases and concurrency control 21 lessons View lessons Hide lessons 09.01 Set the scene: two people buy the last ticket10 min 09.01 Set the scene: two people buy the last ticket10 min 09.02 Choosing a database40 min 09.02 Choosing a database40 min 09.03 Indexes: B-trees and LSM trees40 min 09.03 Indexes: B-trees and LSM trees40 min 09.04 Transactions and isolation levels40 min 09.04 Transactions and isolation levels40 min 09.05 Locks, MVCC and compare-and-set40 min 09.05 Locks, MVCC and compare-and-set40 min 09.06 The database scaling path35 min 09.06 The database scaling path35 min 09.06 The database scaling path35 min 09.07 Code: compare-and-set inventory45 min 09.07 Code: compare-and-set inventory45 min 09.08 Challenge 6: the last ticket150 min 09.08 Challenge 6: the last ticket150 min 09.09 Databases and concurrency20 min 09.09 Databases and concurrency20 min 09.10 Checklist and learning log25 min 09.10 Checklist and learning log25 min 10 Partitioning and sharding 20 lessons View lessons Hide lessons 10.01 Set the scene: one table too big for one machine10 min 10.01 Set the scene: one table too big for one machine10 min 10.02 Range and hash partitioning35 min 10.02 Range and hash partitioning35 min 10.03 Consistent hashing and virtual nodes40 min 10.03 Consistent hashing and virtual nodes40 min 10.04 Hot partitions and skew40 min 10.04 Hot partitions and skew40 min 10.05 Rebalancing and request routing35 min 10.05 Rebalancing and request routing35 min 10.06 Secondary indexes and cross-shard queries35 min 10.06 Secondary indexes and cross-shard queries35 min 10.07 Code: a consistent hash ring45 min 10.07 Code: a consistent hash ring45 min 10.08 Challenge 8: sharding120 min 10.08 Challenge 8: sharding120 min 10.10 Partitioning and sharding20 min 10.10 Partitioning and sharding20 min 10.11 Checklist and learning log25 min 10.11 Checklist and learning log25 min 11 Consistency models 22 lessons View lessons Hide lessons 11.01 Set the scene: the balance that went back in time10 min 11.01 Set the scene: the balance that went back in time10 min 11.02 A consistency model is a contract on histories35 min 11.02 A consistency model is a contract on histories35 min 11.03 Linearizability45 min 11.03 Linearizability45 min 11.04 Sequential and causal consistency40 min 11.04 Sequential and causal consistency40 min 11.05 Session guarantees in code40 min 11.05 Session guarantees in code40 min 11.06 Eventual consistency and convergence35 min 11.06 Eventual consistency and convergence35 min 11.07 CAP and PACELC, read correctly40 min 11.07 CAP and PACELC, read correctly40 min 11.08 Code: a linearizability checker50 min 11.08 Code: a linearizability checker50 min 11.09 Challenge 10: consistency in practice90 min 11.09 Challenge 10: consistency in practice90 min 11.10 Consistency models20 min 11.10 Consistency models20 min 11.11 Checklist and learning log25 min 11.11 Checklist and learning log25 min 12 Consensus, leader election and coordination 27 lessons View lessons Hide lessons 12.01 Set the scene: two schedulers in charge10 min 12.01 Set the scene: two schedulers in charge10 min 12.02 Why agreement is hard25 min 12.02 Why agreement is hard25 min 12.03 Quorums30 min 12.03 Quorums30 min 12.04 Leader election, leases and fencing tokens30 min 12.04 Leader election, leases and fencing tokens30 min 12.05 Raft, part 1: terms and elections35 min 12.05 Raft, part 1: terms and elections35 min 12.06 Raft, part 2: log replication and commit35 min 12.06 Raft, part 2: log replication and commit35 min 12.07 Paxos and multi-leader setups30 min 12.07 Paxos and multi-leader setups30 min 12.08 Gossip and failure detection25 min 12.08 Gossip and failure detection25 min 12.09 Service discovery and coordination services25 min 12.09 Service discovery and coordination services25 min 12.09 Service discovery and coordination services25 min 12.10 Code: Raft voting rules50 min 12.10 Code: Raft voting rules50 min 12.11 Challenge 11: Raft150 min 12.11 Challenge 11: Raft150 min 12.12 Consensus and coordination20 min 12.12 Consensus and coordination20 min 12.13 Checklist and learning log25 min 12.13 Checklist and learning log25 min 13 Leaderless stores, Dynamo and conflict resolution 23 lessons View lessons Hide lessons 13.01 Set the scene: the cart that must always accept10 min 13.01 Set the scene: the cart that must always accept10 min 13.02 The Dynamo design end to end40 min 13.02 The Dynamo design end to end40 min 13.03 Sloppy quorums, hinted handoff, read repair and Merkle trees40 min 13.03 Sloppy quorums, hinted handoff, read repair and Merkle trees40 min 13.04 DynamoDB today versus the Dynamo paper35 min 13.04 DynamoDB today versus the Dynamo paper35 min 13.04 DynamoDB today versus the Dynamo paper35 min 13.05 Last-write-wins and lost data35 min 13.05 Last-write-wins and lost data35 min 13.06 Siblings and application merges35 min 13.06 Siblings and application merges35 min 13.07 CRDTs45 min 13.07 CRDTs45 min 13.08 Code: CRDTs50 min 13.08 Code: CRDTs50 min 13.09 Challenge 12: a leaderless key-value store150 min 13.09 Challenge 12: a leaderless key-value store150 min 13.11 Leaderless stores and conflicts20 min 13.11 Leaderless stores and conflicts20 min 13.12 Checklist and learning log30 min 13.12 Checklist and learning log30 min 14 Distributed transactions and exactly-once 18 lessons View lessons Hide lessons 14.01 Set the scene: paid but never reserved10 min 14.01 Set the scene: paid but never reserved10 min 14.02 Two-phase commit and why it blocks40 min 14.02 Two-phase commit and why it blocks40 min 14.03 Sagas40 min 14.03 Sagas40 min 14.04 The outbox pattern and change data capture35 min 14.04 The outbox pattern and change data capture35 min 14.05 Exactly-once is at-least-once plus idempotency35 min 14.05 Exactly-once is at-least-once plus idempotency35 min 14.06 Code: idempotent consumer and saga runner45 min 14.06 Code: idempotent consumer and saga runner45 min 14.07 Challenge 13: an order saga120 min 14.07 Challenge 13: an order saga120 min 14.08 Distributed transactions20 min 14.08 Distributed transactions20 min 14.09 Checklist and learning log25 min 14.09 Checklist and learning log25 min 15 Queues, logs and stream processing 23 lessons View lessons Hide lessons 15.01 Set the scene: slow and doubled emails10 min 15.01 Set the scene: slow and doubled emails10 min 15.02 Why queues35 min 15.02 Why queues35 min 15.03 Queue versus log40 min 15.03 Queue versus log40 min 15.03 Queue versus log40 min 15.04 Delivery, ordering and partition keys40 min 15.04 Delivery, ordering and partition keys40 min 15.05 Retries, dead letter queues and poison messages35 min 15.05 Retries, dead letter queues and poison messages35 min 15.06 Stream processing: windows, watermarks, late events40 min 15.06 Stream processing: windows, watermarks, late events40 min 15.07 Publish and subscribe, and fan-out30 min 15.07 Publish and subscribe, and fan-out30 min 15.08 Code: a windowed aggregator45 min 15.08 Code: a windowed aggregator45 min 15.09 Challenge 14: a queue worker120 min 15.09 Challenge 14: a queue worker120 min 15.10 Queues and streams20 min 15.10 Queues and streams20 min 15.11 Checklist and learning log25 min 15.11 Checklist and learning log25 min 16 Microservices and resilience 21 lessons View lessons Hide lessons 16.01 Set the scene: one slow service took the site down10 min 16.01 Set the scene: one slow service took the site down10 min 16.02 Monolith, modular monolith, microservices40 min 16.02 Monolith, modular monolith, microservices40 min 16.03 Service boundaries and data ownership35 min 16.03 Service boundaries and data ownership35 min 16.04 Timeouts, retries, backoff and jitter40 min 16.04 Timeouts, retries, backoff and jitter40 min 16.05 Circuit breakers, bulkheads and load shedding40 min 16.05 Circuit breakers, bulkheads and load shedding40 min 16.06 Fault tolerance and graceful degradation35 min 16.06 Fault tolerance and graceful degradation35 min 16.06 Fault tolerance and graceful degradation35 min 16.07 Code: a circuit breaker and a retry budget45 min 16.07 Code: a circuit breaker and a retry budget45 min 16.08 Challenge 15: resilience120 min 16.08 Challenge 15: resilience120 min 16.09 Microservices and resilience20 min 16.09 Microservices and resilience20 min 16.10 Checklist and learning log25 min 16.10 Checklist and learning log25 min 17 Observability and reliability targets 21 lessons View lessons Hide lessons 17.01 Set the scene: it is slow, and nobody can say where10 min 17.01 Set the scene: it is slow, and nobody can say where10 min 17.02 Logs, metrics and traces35 min 17.02 Logs, metrics and traces35 min 17.02 Logs, metrics and traces35 min 17.03 SLIs, SLOs and SLAs40 min 17.03 SLIs, SLOs and SLAs40 min 17.04 Error budgets and burn-rate alerts40 min 17.04 Error budgets and burn-rate alerts40 min 17.05 Dashboards that help30 min 17.05 Dashboards that help30 min 17.06 Incidents and postmortems30 min 17.06 Incidents and postmortems30 min 17.07 Code: SLI and burn rate40 min 17.07 Code: SLI and burn rate40 min 17.08 Challenge 16: observability90 min 17.08 Challenge 16: observability90 min 17.09 Observability and reliability20 min 17.09 Observability and reliability20 min 17.10 Checklist and learning log25 min 17.10 Checklist and learning log25 min 18 Running it: Linux, containers, Kubernetes, CI/CD and the cloud 26 lessons View lessons Hide lessons 18.01 Set the scene: works on my machine10 min 18.01 Set the scene: works on my machine10 min 18.02 Linux under containers: namespaces, cgroups, limits, signals40 min 18.02 Linux under containers: namespaces, cgroups, limits, signals40 min 18.02 Linux under containers: namespaces, cgroups, limits, signals40 min 18.03 Docker images and containers35 min 18.03 Docker images and containers35 min 18.03 Docker images and containers35 min 18.04 Kubernetes essentials45 min 18.04 Kubernetes essentials45 min 18.04 Kubernetes essentials45 min 18.05 CI/CD pipelines35 min 18.05 CI/CD pipelines35 min 18.05 CI/CD pipelines35 min 18.06 Deployment strategies40 min 18.06 Deployment strategies40 min 18.06 Deployment strategies40 min 18.07 Cloud building blocks40 min 18.07 Cloud building blocks40 min 18.07 Cloud building blocks40 min 18.08 Challenge 17: ship it150 min 18.08 Challenge 17: ship it150 min 18.09 Running it15 min 18.09 Running it15 min 18.10 Checklist and learning log20 min 18.10 Checklist and learning log20 min 19 Multi-region and disaster recovery 19 lessons View lessons Hide lessons 19.01 Set the scene: a region goes dark10 min 19.01 Set the scene: a region goes dark10 min 19.02 Regions, availability zones and failure domains35 min 19.02 Regions, availability zones and failure domains35 min 19.02 Regions, availability zones and failure domains35 min 19.03 RPO, RTO, backups and point-in-time recovery35 min 19.03 RPO, RTO, backups and point-in-time recovery35 min 19.03 RPO, RTO, backups and point-in-time recovery35 min 19.04 Active-passive and active-active40 min 19.04 Active-passive and active-active40 min 19.05 Global traffic routing35 min 19.05 Global traffic routing35 min 19.05 Global traffic routing35 min 19.06 Data residency and global consistency35 min 19.06 Data residency and global consistency35 min 19.08 Multi-region and disaster recovery20 min 19.08 Multi-region and disaster recovery20 min 19.09 Checklist and learning log25 min 19.09 Checklist and learning log25 min 20 URL shortener and paste service 17 lessons View lessons Hide lessons 20.01 Set the scene and requirements20 min 20.01 Set the scene and requirements20 min 20.02 High-level design35 min 20.02 High-level design35 min 20.03 Deep dive: generating short codes35 min 20.03 Deep dive: generating short codes35 min 20.04 Deep dive: the read path at scale35 min 20.04 Deep dive: the read path at scale35 min 20.05 Code: base62 and a key range allocator40 min 20.05 Code: base62 and a key range allocator40 min 20.06 Lab: a URL shortener with cache-aside50 min 20.06 Lab: a short-link service that keeps answers in memory (cache-aside)50 min 20.06 Lab: a short-link service that keeps answers in memory (cache-aside)50 min 20.07 URL shortener15 min 20.07 URL shortener15 min 20.08 Checklist and learning log30 min 20.08 Checklist and learning log30 min 21 News feed and timelines 14 lessons View lessons Hide lessons 21.01 Set the scene and requirements20 min 21.01 Set the scene and requirements20 min 21.02 High-level design35 min 21.02 High-level design35 min 21.03 Deep dive: fan-out on write or on read40 min 21.03 Deep dive: fan-out on write or on read40 min 21.04 Deep dive: ranking and freshness35 min 21.04 Deep dive: ranking and freshness35 min 21.05 Code: merge k sorted timelines40 min 21.05 Code: merge k sorted timelines40 min 21.07 News feed20 min 21.07 News feed20 min 21.08 Checklist and learning log30 min 21.08 Checklist and learning log30 min 22 Chat, presence and notifications 16 lessons View lessons Hide lessons 22.01 Set the scene and requirements20 min 22.01 Set the scene and requirements20 min 22.02 High-level design35 min 22.02 High-level design35 min 22.03 Deep dive: connections at scale35 min 22.03 Deep dive: connections at scale35 min 22.04 Deep dive: ordering, delivery receipts and presence40 min 22.04 Deep dive: ordering, delivery receipts and presence40 min 22.05 Deep dive: a notification system35 min 22.05 Deep dive: a notification system35 min 22.06 Code: per-conversation sequencing and dedupe40 min 22.06 Code: per-conversation sequencing and dedupe40 min 22.09 Chat and notifications20 min 22.09 Chat and notifications20 min 22.10 Checklist and learning log30 min 22.10 Checklist and learning log30 min 23 Search, typeahead and probabilistic data structures 14 lessons View lessons Hide lessons 23.01 Set the scene and requirements15 min 23.01 Set the scene and requirements15 min 23.02 Inverted indexes and ranking basics40 min 23.02 Inverted indexes and ranking basics40 min 23.03 Typeahead35 min 23.03 Typeahead35 min 23.04 Bloom filters, HyperLogLog and count-min sketch45 min 23.04 Bloom filters, HyperLogLog and count-min sketch45 min 23.05 Code: a Bloom filter and a count-min sketch45 min 23.05 Code: a Bloom filter and a count-min sketch45 min 23.07 Search and probabilistic structures20 min 23.07 Search and probabilistic structures20 min 23.08 Checklist and learning log30 min 23.08 Checklist and learning log30 min 24 Geospatial search and ride matching 14 lessons View lessons Hide lessons 24.01 Set the scene and requirements15 min 24.01 Set the scene and requirements15 min 24.02 Geohashes, quadtrees and hexagon grids40 min 24.02 Geohashes, quadtrees and hexagon grids40 min 24.03 Location updates at scale35 min 24.03 Location updates at scale35 min 24.04 Matching and dispatch35 min 24.04 Matching and dispatch35 min 24.05 Code: geohash encode and neighbours45 min 24.05 Code: geohash encode and neighbours45 min 24.07 Geospatial search and ride matching15 min 24.07 Geospatial search and ride matching15 min 24.08 Checklist and learning log30 min 24.08 Checklist and learning log30 min 25 Booking and payments: contention and money 14 lessons View lessons Hide lessons 25.01 Set the scene and requirements15 min 25.01 Set the scene and requirements15 min 25.02 Holds, inventory and fairness40 min 25.02 Holds, inventory and fairness40 min 25.03 Ledgers and double-entry40 min 25.03 Ledgers and double-entry40 min 25.04 Payment providers, webhooks and reconciliation35 min 25.04 Payment providers, webhooks and reconciliation35 min 25.05 Code: a double-entry ledger45 min 25.05 Code: a double-entry ledger45 min 25.07 Booking and payments20 min 25.07 Booking and payments20 min 25.08 Checklist and learning log30 min 25.08 Checklist and learning log30 min 26 Web crawler 14 lessons View lessons Hide lessons 26.01 Set the scene and requirements15 min 26.01 Set the scene and requirements15 min 26.02 High-level design35 min 26.02 High-level design35 min 26.03 Deep dive: the URL frontier, politeness and priority40 min 26.03 Deep dive: the URL frontier, politeness and priority40 min 26.04 Deep dive: duplicates and crawler traps35 min 26.04 Deep dive: duplicates and crawler traps35 min 26.05 Code: a polite frontier45 min 26.05 Code: a polite frontier45 min 26.07 Web crawler15 min 26.07 Web crawler15 min 26.08 Checklist and learning log30 min 26.08 Checklist and learning log30 min 27 Video platform at scale 16 lessons View lessons Hide lessons 27.01 Set the scene and requirements15 min 27.01 Set the scene and requirements15 min 27.02 High-level design35 min 27.02 High-level design35 min 27.03 Deep dive: uploads and transcoding40 min 27.03 Deep dive: uploads and transcoding40 min 27.04 Deep dive: streaming and the CDN40 min 27.04 Deep dive: streaming and the CDN40 min 27.05 Deep dive: view counts and metadata30 min 27.05 Deep dive: view counts and metadata30 min 27.06 Code: sharded counters40 min 27.06 Code: sharded counters40 min 27.08 Video platform20 min 27.08 Video platform20 min 27.09 Checklist and learning log30 min 27.09 Checklist and learning log30 min 28 The system design interview 10 lessons View lessons Hide lessons 28.01 Set the scene: 45 minutes, one blank board10 min 28.01 Set the scene: 45 minutes, one blank board10 min 28.02 A framework that fits the clock35 min 28.02 A framework that fits the clock35 min 28.03 Follow-up probes and how to answer them40 min 28.03 Follow-up probes and how to answer them40 min 28.06 Interview craft15 min 28.06 Interview craft15 min 28.07 Checklist and learning log30 min 28.07 Checklist and learning log30 min 29 Capstone: design it, build it, break it, defend it 10 lessons View lessons Hide lessons 29.01 Choose your system and read the rubric30 min 29.01 Choose your system and read the rubric30 min 29.03 Build the core360 min 29.03 Build the core360 min 29.04 Break it on purpose150 min 29.04 Break it on purpose150 min 29.05 Record your defence90 min 29.05 Record your defence90 min 29.06 Checklist and learning log30 min 29.06 Checklist and learning log30 min 30 Visual lab: design a short-link service (a URL shortener) 10 lessons View lessons Hide lessons 30.01 Set the scene: launch week and the checks15 min 30.01 Set the scene: launch week and the checks15 min 30.02 Visual Playground: design a short-link service (a URL shortener)45 min 30.02 Visual lab: design a short-link service (a URL shortener)45 min 30.03 Read your run: what each failure teaches30 min 30.03 Read your run: what each failure teaches30 min 30.04 The short-link service15 min 30.04 The short-link service15 min 30.05 Checklist and learning log25 min 30.05 Checklist and learning log25 min 31 Code lab: build and break a URL shortener 16 lessons View lessons Hide lessons 31.01 Set the scene: why this matters and what you will do15 min 31.01 Set the scene: why this matters and what you will do15 min 31.02 Set up and run the stack30 min 31.02 Set up and run the stack30 min 31.03 Your turn: tasks120 min 31.03 Your turn: tasks120 min 31.04 Check your result against the real numbers30 min 31.04 Check your result against the real numbers30 min 31.05 Solutions: kept apart, opened on purpose10 min 31.05 Solutions: kept apart, opened on purpose10 min 31.06 Reflect: explain it in your own words15 min 31.06 Reflect: explain it in your own words15 min 31.07 The real short-link stack15 min 31.07 The real short-link stack15 min 31.08 Checklist and learning log30 min 31.08 Checklist and learning log30 min 32 Visual Playground: design a home feed (a news feed) 5 lessons View lessons Hide lessons 32.01 Set the scene: launch week and the checks15 min 32.02 Visual Playground: design a home feed (a news feed)45 min 32.03 Read your run: what each failure teaches30 min 32.04 Home feed Visual Playground15 min 32.05 Checklist and learning log25 min 33 Visual Playground: design a chat service (messages, online status and alerts) 5 lessons View lessons Hide lessons 33.01 Set the scene: first city launch and the checks15 min 33.02 Visual Playground: design a chat service (messages, online status and alerts)45 min 33.03 Read your run: what each failure teaches30 min 33.04 Chat service Visual Playground15 min 33.05 Checklist and learning log25 min 34 Visual Playground: design a product search box (search and typeahead) 5 lessons View lessons Hide lessons 34.01 Set the scene: a busy evening and the checks15 min 34.02 Visual Playground: design a product search box (search and typeahead)45 min 34.03 Read your run: what each failure teaches30 min 34.04 Product search Visual Playground15 min 34.05 Checklist and learning log25 min 35 Visual Playground: design a ride service that finds nearby drivers (ride matching) 5 lessons View lessons Hide lessons 35.01 Set the scene: a busy evening and the checks15 min 35.02 Visual Playground: design a ride service that finds nearby drivers (ride matching)45 min 35.03 Read your run: what each failure teaches30 min 35.04 Ride matching Visual Playground15 min 35.05 Checklist and learning log25 min 36 Visual Playground: design a ticket drop (a flash sale) 5 lessons View lessons Hide lessons 36.01 Set the scene: ten o'clock and the checks15 min 36.02 Visual Playground: design a ticket drop (a flash sale)45 min 36.03 Read your run: what each failure teaches30 min 36.04 Ticket drop Visual Playground15 min 36.05 Checklist and learning log25 min 37 Visual Playground: design a web page collector (a web crawler) 5 lessons View lessons Hide lessons 37.01 Set the scene: a busy hour and the checks15 min 37.02 Visual Playground: design a web page collector (a web crawler)45 min 37.03 Read your run: what each failure teaches30 min 37.04 Web crawler Visual Playground15 min 37.05 Checklist and learning log25 min 38 Visual Playground: design a video platform (video streaming at scale) 5 lessons View lessons Hide lessons 38.01 Set the scene: a busy hour and the checks15 min 38.02 Visual Playground: design a video platform (video streaming at scale)45 min 38.03 Read your run: what each failure teaches30 min 38.04 Video platform Visual Playground15 min 38.05 Checklist and learning log25 min