System Design
The guiding question
How do load balancers, caches, databases and queues fit together into a system that survives real traffic and keeps running when parts break?
Episodes
- 1Client and Server: The Journey of a Request (HTTP, DNS)Published
- 2API Design: REST and RPCComing soon
- 3Load Balancing: Spreading Traffic Over Many MachinesComing soon
- 4Caching and CDNs: Hit Rate Versus FreshnessComing soon
- 5Database Basics: SQL and NoSQLComing soon
- 6Message Queues: Smoothing Peaks and DecouplingComing soon
- 7Security Basics: Authentication, Authorization and TLSComing soon
- 8Functional and Non-Functional RequirementsComing soon
- 9Capacity Estimation: Back-of-the-Envelope MathComing soon
- 10Latency Numbers: A Ruler Drawn to ScaleComing soon
- 11Data Modeling: Normalized or DenormalizedComing soon
- 12Sharding: Shard Keys and Hot SpotsComing soon
- 13Replication by Design: Lag, Failover and Lost WritesComing soon
- 14Transactions and Isolation LevelsComing soon
- 15Search and the Inverted IndexComing soon
- 16Availability and the NinesComing soon
- 17Rate Limiting: Token Bucket and Leaky BucketComing soon
- 18Levels of ConsistencyComing soon
- 19Failure and Recovery: RPO and RTOComing soon
- 20Observability: Logs, Metrics and TracesComing soon
- 21Case Study: A URL ShortenerComing soon
- 22Case Study: Designing a Distributed Rate LimiterComing soon
- 23Case Study: A News FeedComing soon
- 24Case Study: A Chat SystemComing soon
- 25Case Study: Cloud Storage and Multi-Device SyncComing soon
- 26Case Study: A Video PlatformComing soon
- 27Case Study: Search AutocompleteComing soon
- 28Case Study: Nearby FriendsComing soon
- 29Capstone: Assembling the Parts Into a Whole SystemComing soon