Learn

System Design Reading Material

Structured guides on HLD and LLD concepts. Read before you practice — each topic maps directly to interview question patterns.

HLD topics

13

LLD topics

13

Showing 26 of 26 topics

High-Level Design

HLD

System architecture, scalability patterns, distributed systems concepts, and infrastructure trade-offs.

HLDbeginner

Load Balancing

Load balancing distributes incoming traffic across multiple healthy backend servers so that no single machine becomes a bottleneck. It improves availability, enables horizontal scaling, and is one of the first building blocks mentioned in real-world system design interviews.

load balancingavailabilitytraffic

10 min read

Read →
HLDbeginner

Caching Strategies

Caching improves latency and reduces pressure on primary storage by keeping hot data closer to the application. Good interview answers cover where the cache sits, how invalidation works, and how stampedes are prevented.

cacheredislatency

11 min read

Read →
HLDbeginner

CDN and Edge Caching

A CDN reduces latency and origin load by serving cacheable content from locations closer to users. It is one of the highest-leverage improvements for globally distributed products.

cdnedgelatency

10 min read

Read →
HLDintermediate

CAP Theorem

The CAP theorem is the single most important concept in distributed systems design. It states that no distributed system can simultaneously guarantee Consistency, Availability, and Partition Tolerance — and understanding exactly why forces you to make better architectural decisions in every system you design.

distributed systemsconsistencyavailability

15 min read

Read →
HLDintermediate

Consistent Hashing

Consistent hashing is the foundational algorithm behind how databases like Cassandra and DynamoDB distribute data across nodes without catastrophic reshuffling when the cluster size changes. Understanding it deeply — including virtual nodes, hotspot prevention, and replication — is essential for any senior system design interview.

hashingdistributed systemssharding

18 min read

Read →
HLDintermediate

API Gateway

An API gateway acts as the front door for clients in a service-oriented architecture. It centralizes authentication, routing, throttling, and logging so downstream services can stay focused on domain logic.

api gatewaymicroservicesrouting

12 min read

Read →
HLDintermediate

Rate Limiting

Rate limiting protects services from abuse, overload, and unfair usage by restricting how many requests a client can make over time. It is especially important for public APIs, login flows, and expensive endpoints.

rate limitingredissecurity

9 min read

Read →
HLDintermediate

Message Queues and Pub-Sub

Queues and pub-sub systems decouple producers from consumers, absorb traffic spikes, and enable asynchronous workflows. They are foundational in notifications, analytics, billing, and event-driven systems.

queuespub-subkafka

12 min read

Read →
HLDintermediate

Event-Driven Architecture

Event-driven architecture lets services communicate asynchronously by publishing facts about state changes. It improves decoupling and fan-out, but introduces eventual consistency and debugging complexity.

event-drivenasynchronouskafka

11 min read

Read →
HLDintermediate

Service Discovery

Service discovery helps dynamic services find each other without hardcoded addresses. It is essential in containerized and microservice environments where instances come and go frequently.

service discoverydnsregistry

9 min read

Read →
HLDintermediate

Circuit Breaker Pattern

Circuit breakers prevent cascading failures by failing fast when a dependency is unhealthy. They are a core resilience pattern in microservice communication.

circuit breakerresiliencemicroservices

8 min read

Read →
HLDadvanced

Database Sharding

Database sharding is how the world's largest systems store and query petabytes of data across thousands of machines. This guide covers every major sharding strategy in depth — range, hash, directory, and geo-based — along with shard key selection, cross-shard queries, resharding without downtime, and the real trade-offs you must articulate in an interview.

databasescalabilitypartitioning

20 min read

Read →
HLDadvanced

Distributed Locking

Distributed locking is used when exactly one worker should own a critical section or leadership role across multiple nodes. Correct solutions require leases, failure handling, and protection against stale owners.

distributed lockingcoordinationredis

12 min read

Read →

Low-Level Design

LLD

Object-oriented design, design patterns, SOLID principles, concurrency, and class-level architecture.

LLDbeginner

SOLID Principles

SOLID is the foundation of every good object-oriented design. These five principles — Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion — are what separate a design that is easy to extend and test from one that collapses under the weight of its own complexity. Every LLD interview question implicitly tests your understanding of them.

OOPdesign principlesclean code

18 min read

Read →
LLDbeginner

Factory Pattern

The Factory Pattern centralizes object creation and helps calling code remain independent from concrete implementations. It is a common answer when runtime type selection is involved.

factorydesign patternsobject creation

8 min read

Read →
LLDbeginner

Builder Pattern

Builder is useful when objects have many optional parameters or require step-by-step construction. It improves readability and often pairs naturally with immutability.

builderpatternsimmutability

8 min read

Read →
LLDbeginner

Observer Pattern

Observer supports one-to-many notification when object state changes. It is common in UI systems, event notifications, and subscription-based designs.

observerpatternsevents

8 min read

Read →
LLDbeginner

Strategy Pattern

Strategy encapsulates interchangeable algorithms behind a common interface so behavior can change without rewriting calling code. It is one of the most practical behavioral patterns in interviews.

strategypatternsbehavioral

9 min read

Read →
LLDbeginner

Repository Pattern

Repository abstracts persistence so domain code does not depend directly on SQL, ORM, or storage-specific details. It is common in clean architecture and domain-driven design.

repositoryclean architectureddd

8 min read

Read →
LLDbeginner

Dependency Injection

Dependency Injection makes systems easier to test, configure, and extend by supplying dependencies from outside rather than hardcoding them inside classes.

dependency injectiontestingmaintainability

8 min read

Read →
LLDintermediate

Design Patterns — Creational

Creational patterns — Singleton, Factory Method, Abstract Factory, Builder, and Prototype — solve the fundamental problem of how to create objects flexibly without coupling your code to specific classes. Knowing when each pattern applies and what it costs is what makes the difference between a good LLD answer and a great one.

design patternsOOPcreational

20 min read

Read →
LLDintermediate

Decorator Pattern

Decorator adds behavior dynamically to objects without creating a large inheritance hierarchy. It is useful for concerns like logging, metrics, caching, or compression.

decoratorpatternscomposition

9 min read

Read →
LLDintermediate

State Pattern

The State Pattern models behavior that changes based on an object's current state. It is especially effective for lifecycle-heavy systems such as orders, bookings, approvals, and workflows.

statepatternsworkflow

9 min read

Read →
LLDintermediate

LRU Cache Design

LRU cache is a classic design problem that combines data structures with object-oriented thinking. A strong answer explains why hashmap plus doubly linked list gives O(1) lookups and updates.

lru cachedata structurescache

10 min read

Read →
LLDadvanced

Concurrency in LLD

Concurrency is the most commonly underestimated aspect of LLD interviews. Almost every real system — parking lots, booking platforms, rate limiters, inventory systems — has multiple users acting simultaneously. This guide covers race conditions, every major synchronization mechanism, deadlock prevention, and lock-free approaches with the depth needed to ace any LLD interview.

concurrencythread safetylocks

22 min read

Read →
LLDadvanced

Thread Pool Design

Thread pools reduce thread creation overhead, bound concurrency, and improve resource management. They are common in job runners, servers, and asynchronous execution frameworks.

thread poolconcurrencyworkers

10 min read

Read →