Designing at Scale: System Design
Designing and scaling distributed systems in production, plus a repeatable framework for any system design interview.
Start reading →01Chapter 1: Why System Design Is Its Own Skill02Chapter 2: Core Building Blocks and Vocabulary03Chapter 3: Eliciting Non-Functional Requirements04Chapter 4: Back-of-Envelope Capacity Estimation05Chapter 5: Caching Strategies and Cache Invalidation at the Systems Level06Chapter 6: Load Balancing and Horizontal Scaling07Chapter 7: Database Selection, Replication, and Sharding at a Systems Level08Chapter 8: Asynchronous Processing, Message Queues, and Event-Driven Design09Chapter 9: API Design from a Systems Perspective: REST, gRPC, GraphQL10Chapter 10: The CAP Theorem and Consistency Models in Practical Terms11Chapter 11: Microservices vs. Monoliths and Drawing Service Boundaries12Chapter 12: Designing for Failure: Redundancy, Failover, Graceful Degradation13Chapter 13: A Repeatable Framework for Any System Design Problem14Chapter 14: Worked Example: URL Shortener15Chapter 15: Worked Example: Chat System16Chapter 16: Worked Example: News Feed17Chapter 17: Worked Example: Rate Limiter
Other tracks
Python DSA — CoursePython DSA — Interview PrepPython DSA — BeginnerPython Syntax & DSA ReferenceGit MasteryCognitive Skills & Mental ToolsCode Optimization RulesObjects First: OOP FundamentalsPatterns of Good DesignUnder the Hood: Operating SystemsHow the Bytes Travel: NetworkingData at Rest, Data in Motion: DatabasesSharing Time: Concurrency & MultithreadingClean by Default: Coding StandardsThe Review: Code ReviewFrom Idea to Production: the SDLCWhiteboard to Blueprint: HLD & LLDBuilt to Last: Reliability & ScalingTell Me About a Time: Behavioral Interviews