1. Introduction
Introduction to Modern System Design
Course Structure for Modern System Design
2. System Design Interviews
What Is a System Design Interview?
3. Abstractions
Why Are Abstractions Important?
Network Abstractions: Remote Procedure Calls
Spectrum of Consistency Models
The Spectrum of Failure Models
4. Non-functional System Characteristics
5. Back-of-the-envelope Calculations
Put Back-of-the-envelope Numbers in Perspective
Examples of Resource Estimation
6. Building Blocks
Introduction to Building Blocks for Modern System Design
7. Domain Name System
Introduction to Domain Name System (DNS)
How the Domain Name System Works
8. Load Balancers
Introduction to Load Balancers
Global and Local Load Balancing
Advanced Details of Load Balancers
9. Databases
10. Key-value Store
System Design: The Key-value Store
Ensure Scalability and Replication
Versioning Data and Achieving Configurability
Enable Fault Tolerance and Failure Detection
11. Content Delivery Network (CDN)
System Design: The Content Delivery Network (CDN)
In-depth Investigation of CDN: Part 1
In-depth Investigation of CDN: Part 2
12. Sequencer
Design of a Unique ID Generator
13. Distributed Monitoring
System Design: Distributed Monitoring
Introduction to Distributed Monitoring
Prerequisites of a Monitoring System
14. Monitor Server-side Errors
Detailed Design of a Monitoring System
Visualize Data in a Monitoring System
15. Monitor Client-side Errors
Focus on Client-side Errors in a Monitoring System
Design of a Client-side Monitoring System
16. Distributed Cache
System Design: The Distributed Cache
Background of Distributed Cache
High-level Design of a Distributed Cache
Detailed Design of a Distributed Cache
Evaluation of a Distributed Cache's Design
17. Distributed Messaging Queue
System Design: The Distributed Messaging Queue
Requirements of a Distributed Messaging Queue’s Design
Considerations of a Distributed Messaging Queue’s Design
Design of a Distributed Messaging Queue: Part 1
Design of a Distributed Messaging Queue: Part 2
Evaluation of a Distributed Messaging Queue’s Design
Quiz on the Distributed Messaging Queue’s Design
18. Pub-sub
System Design: The Pub-sub Abstraction
19. Rate Limiter
System Design: The Rate Limiter
Requirements of a Rate Limiter’s Design
Quiz on the Rate Limiter’s Design
20. Blob Store
Requirements of a Blob Store's Design
Design Considerations of a Blob Store
Evaluation of a Blob Store's Design
Quiz on the Blob Store's Design
21. Distributed Search
System Design: The Distributed Search
Requirements of a Distributed Search System's Design
Indexing in a Distributed Search
Design of a Distributed Search
Evaluation of a Distributed Search's Design
22. Distributed Logging
System Design: Distributed Logging
Introduction to Distributed Logging
Design of a Distributed Logging Service
23. Distributed Task Scheduler
System Design: The Distributed Task Scheduler
Requirements of a Distributed Task Scheduler's Design
Design of a Distributed Task Scheduler
Design Considerations of a Distributed Task Scheduler
Evaluation of a Distributed Task Scheduler's Design
24. Sharded Counters
System Design: The Sharded Counters
High-level Design of Sharded Counters
Detailed Design of Sharded Counters
Quiz on the Sharded Counters' Design
25. Concluding the Building Blocks Discussion
Wrapping Up the Building Blocks Discussion
The RESHADED Approach for System Design
26. Design YouTube
Requirements of YouTube's Design
Evaluation of YouTube's Design
The Reality Is More Complicated
27. Design Quora
Requirements of Quora's Design
28. Design Google Maps
Requirements of Google Maps' Design
Challenges of Google Maps' Design
Detailed Design of Google Maps
Evaluation of Google Maps' Design
29. Design a Proximity Service / Yelp
30. Design Uber
Payment Service and Fraud Detection in Uber Design
31. Design Twitter
Requirements of Twitter’s Design
Client-side Load Balancer for Twitter
32. Design Newsfeed System
System Design: Newsfeed System
Requirements of a Newsfeed System’s Design
Evaluation of a Newsfeed System’s Design
33. Design Instagram
Requirements of Instagram’s Design
34. Design a URL Shortening Service / TinyURL
Requirements of TinyURL's Design
Design and Deployment of TinyURL
Evaluation of TinyURL's Design
35. Design a Web Crawler
Requirements of a Web Crawler's Design
Design Improvements of a Web Crawler
Evaluation of Web Crawler's Design
36. Design WhatsApp
Requirements of WhatsApp’s Design
Evaluation of WhatsApp’s Design
37. Design Typeahead Suggestion
System Design: The Typeahead Suggestion System
Requirements of the Typeahead Suggestion System’s Design
High-level Design of the Typeahead Suggestion System
Data Structure for Storing Prefixes
Detailed Design of the Typeahead Suggestion System
Evaluation of the Typeahead Suggestion System’s Design
Quiz on the Typeahead Suggestion System’s Design
38. Design a Collaborative Document Editing Service / Google Docs
Requirements of Google Docs’ Design
Concurrency in Collaborative Editing
Evaluation of Google Docs’ Design
39. Spectacular Failures
Introduction to Distributed System Failures
Facebook, WhatsApp, Instagram, Oculus Outage
AWS Kinesis Outage Affecting Many Organizations