System Design
Learn the fundamentals of designing scalable, reliable, and efficient systems. Covers distributed systems, microservices, and architectural patterns.
Introduction
Introduction To System Design
Getting started with system design fundamentals
System Design Interviews
A structured, step-by-step framework to tackle system design interview questions at tech companies.
Preliminary System Design Concepts
Essential foundational building blocks of systems, including client-server architecture, API protocols, monoliths, and microservices.
Non-Functional System Characteristics
Deep dive into the operational qualities of a system, including scalability, availability, reliability, and fault tolerance.
Back-of-the-Envelope Capacity Estimation
Master the art of rapid hardware capacity planning, memory optimization, network bandwidth profiling, and system design sizing.
Building Blocks
DNS (Domain Name System)
The internet's address book. Deep dive into hierarchical resolution, Anycast routing, caching tiers, security (DNSSEC, DoH/DoT), and load balancing.
Load Balancers
Distributing network and application traffic across servers. Learn about Layer 4 vs Layer 7 load balancing, routing algorithms, session persistence, health checks, and scaling strategies.
Databases
Scale your data layer. Learn about B-Trees vs LSM-Trees, replication models, the CAP/PACELC theorems, sharding strategies, and distributed database challenges.
Key-Value Stores
Deep dive into distributed key-value store architecture. Learn about LSM-Trees, consistent hashing, replication quorums, vector clocks, and Gossip protocols.
CDN (Content Delivery Network)
Deep dive into CDN architecture. Learn about GeoDNS vs Anycast routing, Push vs Pull caching topologies, Cache-Control headers, invalidation, and Edge Compute.
Distributed Cache
Scale application performance with distributed caching. Learn about caching topologies, Cache-Aside, Write-Through, Write-Behind, and mitigating Cache Penetration, Avalanche, and Breakdown.
Message Queues
Scale asynchronous communication. Learn about broker-based vs log-based queues (RabbitMQ vs Kafka), delivery guarantees, consumer groups, and Dead Letter Queues (DLQ).
API Design
Master API design paradigms for system design. Learn REST, GraphQL, and gRPC in depth — when to use each, their trade-offs, versioning strategies, pagination, and idempotency.
Rate Limiting
Protect your systems from abuse with rate limiting. Learn the Token Bucket, Sliding Window, and Fixed Window algorithms, distributed rate limiting with Redis, and how to handle throttled clients.
Unique ID Generation
Generate globally unique identifiers in distributed systems. Learn UUID, Snowflake IDs, ULID, database auto-increment, and how to choose the right strategy for your scale.
Consistent Hashing
Understand consistent hashing for distributed systems. Learn how the hash ring works, virtual nodes, data replication, and why it powers databases like Cassandra, DynamoDB, and CDN routing.
Pub/Sub Systems
Deep dive into Publish-Subscribe messaging systems. Learn how topics, subscriptions, and fan-out work, compare Kafka vs Google Pub/Sub vs SNS, and understand ordering, exactly-once delivery, and backpressure.
Blob Storage
Understand blob storage and object storage systems. Learn how S3-style storage works, data organization, replication, CDN integration, presigned URLs, and lifecycle policies.
Distributed Search
Understand how distributed search engines work. Learn inverted indexes, tokenization, sharding, relevance scoring (TF-IDF, BM25), and how Elasticsearch powers full-text search at scale.
Distributed Logging
Design a distributed logging system. Learn structured logging, log aggregation pipelines (ELK/EFK stack), log levels, correlation IDs, and how to handle terabytes of logs at scale.
Distributed Task Scheduler
Design a distributed task scheduler. Learn task queues, cron-style scheduling, priority queues, worker pools, at-least-once execution, and how to prevent duplicate task execution.
Shared Counters
Design distributed shared counters for high-throughput counting. Learn sharded counters, approximate counting, CRDTs, and how systems like YouTube, Twitter, and Redis handle millions of increments per second.
Sequencer
Design a distributed sequencer for generating monotonically increasing sequence numbers. Learn database sequences, ZooKeeper coordination, Kafka offsets, and epoch-based ordering for distributed consensus.
Design Patterns
Proxies & API Gateways
Understand forward proxies, reverse proxies, and API gateways. Learn how they differ, when to use each, and how they power modern microservice architectures with NGINX, Envoy, and Kong.
Microservices Architecture
Understand microservices architecture patterns. Learn service decomposition, inter-service communication (sync vs async), sagas, CQRS, event sourcing, and the trade-offs vs monoliths.