Log In
Join
for free
Log In
Join
for free
Back To Module Home
Grokking Modern System Design Interview
0% completed
Introduction
Introduction to Modern System Design
Course Structure for Modern System Design
System Design Interviews
What Is a System Design Interview?
How to Prepare for Success
How to Perform Well
Abstractions
Why Are Abstractions Important?
Network Abstractions: Remote Procedure Calls
Spectrum of Consistency Models
The Spectrum of Failure Models
Non-functional System Characteristics
Availability
Reliability
Scalability
Maintainability
Fault Tolerance
Back-of-the-envelope Calculations
Put Back-of-the-envelope Numbers in Perspective
Examples of Resource Estimation
Building Blocks
Introduction to Building Blocks for Modern System Design
Domain Name System
Introduction to Domain Name System (DNS)
How the Domain Name System Works
Load Balancers
Introduction to Load Balancers
Global and Local Load Balancing
Advanced Details of Load Balancers
Databases
Introduction to Databases
Types of Databases
Data Replication
Data Partitioning
Trade-offs in Databases
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
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
Sequencer
System Design: Sequencer
Design of a Unique ID Generator
Unique IDs with Causality
Distributed Monitoring
System Design: Distributed Monitoring
Introduction to Distributed Monitoring
Prerequisites of a Monitoring System
Monitor Server-side Errors
Design of a Monitoring System
Detailed Design of a Monitoring System
Visualize Data in a Monitoring System
Monitor Client-side Errors
Focus on Client-side Errors in a Monitoring System
Design of a Client-side Monitoring System
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
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
Pub-sub
System Design: The Pub-sub Abstraction
Introduction to Pub-sub
Design of a Pub-sub System
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
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
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
Distributed Logging
System Design: Distributed Logging
Introduction to Distributed Logging
Design of a Distributed Logging Service
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
Sharded Counters
System Design: The Sharded Counters
High-level Design of Sharded Counters
Detailed Design of Sharded Counters
Quiz on the Sharded Counters' Design
Concluding the Building Blocks Discussion
Wrapping Up the Building Blocks Discussion
The RESHADED Approach for System Design
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
Design Quora
System Design: Quora
Requirements of Quora's Design
Initial Design of Quora
Final Design of Quora
Evaluation of Quora’s Design
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
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
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
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
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
Design Instagram
System Design: Instagram
Requirements of Instagram’s Design
Design of Instagram
Detailed Design of Instagram
Quiz on Instagram’s Design
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
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
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
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
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
Spectacular Failures
Introduction to Distributed System Failures
Facebook, WhatsApp, Instagram, Oculus Outage
AWS Kinesis Outage Affecting Many Organizations
AWS Wide Spread Outage
Concluding Remarks
Conclusions
Introduction to Distributed Monitoring
Learn why monitoring in a distributed system is crucial.
We'll cover the following
Need for monitoring
Downtime cost
Types of monitoring