System Design
System Design (8): Case Studies — URL Shortener, Chat System, News Feed
Three complete system design walkthroughs — a URL shortener, a real-time chat system, and a news feed — each following the full process from requirements and estimation through high-level design, deep dives, and scaling …
System Design (7): Data Pipelines — Batch, Stream, and the Lambda Architecture
A practical guide to data pipeline architectures — covering ETL vs ELT, batch processing with Spark, stream processing with Flink, Lambda vs Kappa architectures, Change Data Capture, and a complete real-time analytics …
System Design (6): Microservices vs Monoliths — The Honest Tradeoff
An honest assessment of monoliths vs microservices — covering the distributed systems tax, service boundary design with DDD, inter-service communication patterns, circuit breakers, service mesh, API gateways, and a …
System Design (5): Message Queues and Event-Driven Architecture
A practical guide to message queues and event-driven systems — covering Kafka and RabbitMQ architectures, delivery guarantees, event sourcing, CQRS, dead letter queues, backpressure, and a complete order processing …
System Design (4): Caching — Where to Cache, What to Evict, and When Caching Hurts
A deep dive into caching strategies across every layer of the stack — from CDN to database buffer pools — covering cache-aside, write-through, write-behind patterns, eviction policies, thundering herd mitigation, and …
System Design (3): API Design — REST, gRPC, GraphQL, and Choosing Wisely
A practical comparison of REST, gRPC, and GraphQL — covering protocol design, real-world trade-offs, rate limiting algorithms, idempotency, and a decision framework for choosing the right API style.
System Design (2): DNS, CDN, and Load Balancing — The First Three Hops
Every web request begins with DNS resolution, may traverse a CDN edge, and lands on a load balancer before reaching your application. Understanding these three hops is essential to building systems that are fast, …
System Design (1): Thinking in Systems — Load, Latency, and the Art of Estimation
Learn the foundational skills of system design: back-of-envelope estimation, availability math, SLA definitions, and a repeatable framework for tackling any design problem.







