Blog
20 deep-dive articles on system design.
How I'd Learn System Design in 30 Days
A daily topic list with estimated study time for learning system design fundamentals in 30 days.
Caching Mistakes That Break Production
Common caching pitfalls — thundering herd, stale data, cache stampede, missing TTLs — and how to prevent them in production systems.
Database Sharding in Practice: Keys, Rebalancing and Tradeoffs
Learn database sharding in practice: choosing shard keys, avoiding hot shards, handling cross-shard queries, rebalancing data, and interview tradeoffs.
How Discord Stores Trillions of Messages
Discord's journey from MongoDB to Cassandra to ScyllaDB — how they store and serve trillions of messages with sub-millisecond latency across millions of.
How Distributed Locks Fail
Why distributed locks are harder than they seem — clock skew, GC pauses, split brain, and how fencing tokens prevent unsafe operations.
How Kafka Handles Millions of Messages Per Second
A deep dive into Apache Kafka's architecture — partitioned commit logs, zero-copy transfers, consumer groups, and the design decisions that make it the.
How Netflix Serves 200 Million Subscribers
A deep dive into Netflix's architecture — microservices, Open Connect CDN, adaptive bitrate streaming, and chaos engineering practices that serve 15% of.
How Real-Time Messaging Works
A deep dive into real-time communication protocols — WebSocket vs. SSE vs. long polling, connection management, and message ordering guarantees.
How Slack Delivers Messages in Real Time
Inside Slack's real-time messaging architecture — WebSocket connections, message fanout, channel routing, and how they handle millions of concurrent users.
How Stripe Designs APIs That Developers Love
Lessons from Stripe's API design: versioning, backward compatibility, error handling, idempotency, and developer experience tradeoffs.