1. Introduction

Introduction to Modern System Design

Course Structure for Modern System Design

2. System Design Interviews

What Is a System Design Interview?

How to Prepare for Success

How to Perform Well

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

Availability

Reliability

Scalability

Maintainability

Fault Tolerance

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

Introduction to Databases

Types of Databases

Data Replication

Data Partitioning

Trade-offs in Databases

10. Key-value Store

System Design: The Key-value Store

Design of a 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)

Introduction to a CDN

Design of a CDN

In-depth Investigation of CDN: Part 1

In-depth Investigation of CDN: Part 2

Evaluation of CDN's Design

Quiz on CDN's Design

12. Sequencer

System Design: Sequencer

Design of a Unique ID Generator

Unique IDs with Causality

13. Distributed Monitoring

System Design: Distributed Monitoring

Introduction to Distributed Monitoring

Prerequisites of a Monitoring System

14. Monitor Server-side Errors

Design of a Monitoring System

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

Memcached versus Redis

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

Introduction to Pub-sub

Design of a Pub-sub System

19. Rate Limiter

System Design: The Rate Limiter

Requirements of a Rate Limiter’s Design

Design of a Rate Limiter

Rate Limiter Algorithms

Quiz on the Rate Limiter’s Design

20. Blob Store

System Design: A Blob Store

Requirements of a Blob Store's Design

Design of a Blob Store

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

Scaling Search and Indexing

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

System Design: YouTube

Requirements of YouTube's Design

Design of YouTube

Evaluation of YouTube's Design

The Reality Is More Complicated

Quiz on YouTube's Design

27. Design Quora

System Design: Quora

Requirements of Quora's Design

Initial Design of Quora

Final Design of Quora

Evaluation of Quora’s Design

28. Design Google Maps

System Design: Google Maps

Requirements of Google Maps' Design

Design of Google Maps

Challenges of Google Maps' Design

Detailed Design of Google Maps

Evaluation of Google Maps' Design

29. Design a Proximity Service / Yelp

System Design: Yelp

Requirements of Yelp’s Design

Design of Yelp

Design Considerations of Yelp

Quiz on Yelp's Design

30. Design Uber

System Design: Uber

Requirements of Uber’s Design

High-level Design of Uber

Detailed Design of Uber

Payment Service and Fraud Detection in Uber Design

Evaluation of Uber’s Design

Quiz on Uber's Design

31. Design Twitter

System Design: Twitter

Requirements of Twitter’s Design

High-level Design of Twitter

Detailed Design of Twitter

Client-side Load Balancer for Twitter

Quiz on Twitter's Design

32. Design Newsfeed System

System Design: Newsfeed System

Requirements of a Newsfeed System’s Design

Design of a Newsfeed System

Evaluation of a Newsfeed System’s Design

33. Design Instagram

System Design: Instagram

Requirements of Instagram’s Design

Design of Instagram

Detailed Design of Instagram

Quiz on Instagram’s Design

34. Design a URL Shortening Service / TinyURL

System Design: TinyURL

Requirements of TinyURL's Design

Design and Deployment of TinyURL

Encoder for TinyURL

Evaluation of TinyURL's Design

Quiz on TinyURL's Design

35. Design a Web Crawler

System Design: Web Crawler

Requirements of a Web Crawler's Design

Design of a Web Crawler

Design Improvements of a Web Crawler

Evaluation of Web Crawler's Design

36. Design WhatsApp

System Design: WhatsApp

Requirements of WhatsApp’s Design

High-level Design of WhatsApp

Detailed Design of WhatsApp

Evaluation of WhatsApp’s Design

Quiz on 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

System Design: Google Docs

Requirements of Google Docs’ Design

Design of Google Docs

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

AWS Wide Spread Outage

40. Concluding Remarks

Conclusions