Skip to content

System Design Textbook

A free, self-paced textbook in 7 chapters. Read a chapter, then drill it with the 50 companion flashcards using spaced repetition.

7 chapters · 50 cards · Updated

Chapters

  1. 1Scaling Strategies & Load Balancing

    Scaling is the practice of increasing a system's capacity to handle growing demand. The two fundamental approaches are vertical scaling, which adds more power (CPU, RAM, disk) to a...

  2. 2Caching & Content Delivery

    Caching accelerates data access by storing frequently used information closer to where it is needed. Redis (Remote Dictionary Server) is a popular open-source, in-memory key-value...

  3. 3Database Design & Distribution

    As data volumes grow, distributing them across multiple database nodes becomes necessary. Sharding is a horizontal partitioning strategy that splits data across multiple database i...

  4. 4Microservices & Service Communication

    Monolithic architectures package all application functionality into a single deployable unit, which is simpler to develop and deploy initially but harder to scale individual compon...

  5. 5Rate Limiting & Real-Time Communication

    Rate limiting controls the number of requests a client can make to a service within a given time window, protecting against abuse and ensuring fair resource usage. When limits are...

  6. 6Messaging, Events & Streaming

    Asynchronous messaging decouples services and enables reliable communication at scale. Apache Kafka is a distributed event streaming platform used for building real-time data pipel...

  7. 7Distributed Systems: Consistency, Transactions & Resilience

    Distributed systems face inherent trade-offs that shape every design decision. The CAP theorem states that a distributed data store can guarantee at most two of three properties si...

← Back to the System Design deck