This chapter introduces system design and the course, its structure, and prerequisites to set the foundation for mastering system design interviews.
2.
System Design Interviews
4 Lessons
This chapter covers what system design interviews entail, provides preparation techniques and tips, and evaluates your understanding using AI.
This chapter emphasizes abstractions in distributed systems, focusing on network abstractions, consistency models, and failure models crucial for system design.
4.
Non-functional System Characteristics
6 Lessons
This chapter focuses on key non-functional characteristics like availability, reliability, scalability, and fault tolerance in system design.
5.
Back-of-the-envelope Calculations
2 Lessons
In this chapter, you’ll learn to estimate resource needs and response times using back-of-the-envelope calculations for system design.
This chapter introduces the building blocks essential for modern system design, forming the foundation for scalable applications later in the course.
Introduction to Building Blocks for Modern System Design7.
Domain Name System
2 Lessons
This chapter teaches how DNS works and expands on its role in system design, including detailed insights into its design and functionality.
Introduction to Domain Name System (DNS)How the Domain Name System WorksThis chapter covers load balancers, their placement, and algorithms. It explores local/global load balancers and tiers of load balancers.
Introduction to Load BalancersGlobal and Local Load BalancingAdvanced Details of Load BalancersThis chapter introduces databases and their types, data replication, partitioning, and trade-offs, essential for designing distributed systems.
Introduction to DatabasesTypes of DatabasesData ReplicationData PartitioningTrade-offs in DatabasesThis chapter teaches you how to design a scalable key-value store, focusing on replication, versioning, and fault tolerance.
System Design: The Key-value StoreDesign of a Key-value StoreEnsure Scalability and ReplicationVersioning Data and Achieving ConfigurabilityEnable Fault Tolerance and Failure Detection11.
Content Delivery Network (CDN)
7 Lessons
In this chapter, you’ll cover CDN design, content caching strategies, consistency, and techniques for efficient content delivery.
System Design: The Content Delivery Network (CDN)Introduction to a CDNDesign of a CDNIn-depth Investigation of CDN: Part 1In-depth Investigation of CDN: Part 2Evaluation of CDN's DesignQuiz on CDN's DesignThis chapter teaches you how to design a sequencer for generating unique IDs, with a focus on causality and consistency in distributed systems.
System Design: SequencerDesign of a Unique ID GeneratorUnique IDs with Causality13.
Distributed Monitoring
3 Lessons
This chapter focuses on the basics of a distributed monitoring system, its types, and metrics for effective monitoring.
System Design: Distributed MonitoringIntroduction to Distributed MonitoringPrerequisites of a Monitoring System14.
Monitor Server-side Errors
3 Lessons
In this chapter, you'll learn how to design a monitoring system and visualize it for tracking server-side errors in real-time.
Design of a Monitoring SystemDetailed Design of a Monitoring SystemVisualize Data in a Monitoring System15.
Monitor Client-side Errors
2 Lessons
This chapter teaches you how to design a system to monitor client-side errors, ensuring robust and reliable applications.
Focus on Client-side Errors in a Monitoring SystemDesign of a Client-side Monitoring System16.
Distributed Cache
6 Lessons
This chapter teaches the design of a distributed cache, focusing on high-level and detailed designs, as well as evaluating its performance.
System Design: The Distributed CacheBackground of Distributed CacheHigh-level Design of a Distributed CacheDetailed Design of a Distributed CacheEvaluation of a Distributed Cache's DesignMemcached versus Redis17.
Distributed Messaging Queue
7 Lessons
This chapter covers the design of a distributed messaging queue, addressing requirements, design considerations, and performance evaluations.
System Design: The Distributed Messaging QueueRequirements of a Distributed Messaging Queue’s DesignConsiderations of a Distributed Messaging Queue’s DesignDesign of a Distributed Messaging Queue: Part 1Design of a Distributed Messaging Queue: Part 2Evaluation of a Distributed Messaging Queue’s DesignQuiz on the Distributed Messaging Queue’s DesignThis chapter teaches the design of a pub-sub system, focusing on how to implement and optimize this communication pattern in distributed systems.
System Design: The Pub-sub AbstractionIntroduction to Pub-subDesign of a Pub-sub SystemThis chapter covers the design of a rate limiter, covering essential algorithms and considerations for managing traffic and ensuring system stability.
System Design: The Rate LimiterRequirements of a Rate Limiter’s DesignDesign of a Rate LimiterRate Limiter AlgorithmsQuiz on the Rate Limiter’s DesignThis chapter teaches you how to design a blob store, focusing on scalability, storage, and performance evaluation.
System Design: A Blob StoreRequirements of a Blob Store's DesignDesign of a Blob StoreDesign Considerations of a Blob StoreEvaluation of a Blob Store's DesignQuiz on the Blob Store's Design21.
Distributed Search
6 Lessons
This chapter teaches distributed search design in steps, with a special focus on indexing, scaling, and replication.
System Design: The Distributed SearchRequirements of a Distributed Search System's DesignIndexing in a Distributed SearchDesign of a Distributed SearchScaling Search and IndexingEvaluation of a Distributed Search's Design22.
Distributed Logging
3 Lessons
This chapter teaches the importance and design of a distributed logging service, emphasizing on capturing and analyzing logs across distributed systems.
System Design: Distributed LoggingIntroduction to Distributed LoggingDesign of a Distributed Logging Service23.
Distributed Task Scheduler
5 Lessons
This chapter covers the design of a Task scheduler addressing issues like prioritizing, task idempotency, queuing, and resource capacity optimization.
System Design: The Distributed Task SchedulerRequirements of a Distributed Task Scheduler's DesignDesign of a Distributed Task SchedulerDesign Considerations of a Distributed Task SchedulerEvaluation of a Distributed Task Scheduler's Design24.
Sharded Counters
4 Lessons
This chapter introduces sharded counters and their importance, starting from high-level design and then pivoting to its detailed system design.
System Design: The Sharded CountersHigh-level Design of Sharded CountersDetailed Design of Sharded CountersQuiz on the Sharded Counters' Design25.
Concluding the Building Blocks Discussion
4 Lessons
This chapter wraps up the discussion on building blocks, evaluates you using AI, and introduces the RESHADED approach to tackle unseen system design problems.
AI Evaluation of Building Blocks in E-Commerce PlatformAI Evaluation of Building Blocks in Online Education SystemWrapping Up the Building Blocks DiscussionThe RESHADED Approach for System DesignThis chapter teaches YouTube system design starting with requirements, high and detailed design, evaluation of the design, and handling real-world complexities.
System Design: YouTubeRequirements of YouTube's DesignDesign of YouTubeEvaluation of YouTube's DesignThe Reality Is More ComplicatedQuiz on Netflix's DesignThis chapter teaches the system design of Quora incrementally by starting with key requirements and challenges in building a scalable Q&A platform.
System Design: QuoraRequirements of Quora's DesignInitial Design of QuoraFinal Design of QuoraEvaluation of Quora’s Design28.
Design Google Maps
6 Lessons
This chapter covers the system design of Google Maps, focusing on API design, scalability, finding optimal routes, and ETA computation.
System Design: Google MapsRequirements of Google Maps' DesignDesign of Google MapsChallenges of Google Maps' DesignDetailed Design of Google MapsEvaluation of Google Maps' Design29.
Design a Proximity Service / Yelp
5 Lessons
This chapter is about the system design of a proximity service like Yelp addressing requirements like searching, scaling, and dynamic segments.
System Design: YelpRequirements of Yelp’s DesignDesign of YelpDesign Considerations of YelpQuiz on Yelp's DesignThis chapter teaches you how to design Uber, address requirements for ride-sharing platforms, detailed design, and fraud detection.
System Design: UberRequirements of Uber’s DesignHigh-level Design of UberDetailed Design of UberPayment Service and Fraud Detection in Uber DesignEvaluation of Uber’s DesignQuiz on Uber's DesignThis chapter teaches Twitter system design, covering aspects like user interaction, API design, caching, storage, and client-side load balancing.
System Design: TwitterRequirements of Twitter’s DesignHigh-level Design of TwitterDetailed Design of TwitterClient-side Load Balancer for TwitterQuiz on Twitter's Design32.
Design Newsfeed System
4 Lessons
This chapter teaches Newsfeed system design, covering aspects like functional/non-functional requirements, storage schemas, Newsfeed generation, and publishing.
System Design: Newsfeed SystemRequirements of a Newsfeed System’s DesignDesign of a Newsfeed SystemEvaluation of a Newsfeed System’s Design33.
Design Instagram
5 Lessons
This chapter is about designing Instagram. It covers API design, storage schema, and timeline generation using pull, push, and hybrid approaches.
System Design: InstagramRequirements of Instagram’s DesignDesign of InstagramDetailed Design of InstagramQuiz on Instagram’s Design34.
Design a URL Shortening Service / TinyURL
6 Lessons
This chapter teaches the system design of a URL shortening service like TinyURL with emphasis on requirements like encoding, scalability, and high readability.
System Design: TinyURLRequirements of TinyURL's DesignDesign and Deployment of TinyURLEncoder for TinyURLEvaluation of TinyURL's DesignQuiz on TinyURL's Design35.
Design a Web Crawler
5 Lessons
This chapter is about the system design of a web crawler. Its key components include a crawler, scheduler, HTML fetcher, storage, and crawling traps handler.
System Design: Web CrawlerRequirements of a Web Crawler's DesignDesign of a Web CrawlerDesign Improvements of a Web CrawlerEvaluation of Web Crawler's DesignIn this chapter, you'll learn WhatsApp system design with an emphasis on its API design, high security, and low latency of client-server messages.
System Design: WhatsAppRequirements of WhatsApp’s DesignHigh-level Design of WhatsAppDetailed Design of WhatsAppEvaluation of WhatsApp’s DesignQuiz on WhatsApp’s Design37.
Design Typeahead Suggestion
7 Lessons
This chapter teaches the Typeahead suggestion system design, covering aspects like efficient data structure and assembler for updating suggestions.
System Design: The Typeahead Suggestion SystemRequirements of the Typeahead Suggestion System’s DesignHigh-level Design of the Typeahead Suggestion SystemData Structure for Storing PrefixesDetailed Design of the Typeahead Suggestion SystemEvaluation of the Typeahead Suggestion System’s DesignQuiz on the Typeahead Suggestion System’s Design38.
Design a Collaborative Document Editing Service / Google Docs
5 Lessons
This chapter covers the system design of Google Docs, addressing storage, collaborative editing, and handling concurrency issues using different techniques.
System Design: Google DocsRequirements of Google Docs’ DesignDesign of Google DocsConcurrency in Collaborative EditingEvaluation of Google Docs’ Design39.
Spectacular Failures
4 Lessons
This chapter teaches you how to avoid failures and outages by discussing case studies of real-world, large-scale distributed systems like Facebook, AWS, etc.
Introduction to Distributed System FailuresFacebook, WhatsApp, Instagram, Oculus OutageAWS Kinesis Outage Affecting Many OrganizationsAWS Wide Spread Outage40.
Concluding Remarks
1 Lesson
This chapter discusses key takeaways, highlights unique aspects of each design problem, and gives pointers on the next step to master system design.
Conclusions