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
A practical guide to database sharding — choosing shard keys, handling cross-shard queries, rebalancing data, and lessons from companies that shard at.
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 10-year API evolution — versioning strategy, backward compatibility, error handling, idempotency, and why their API is considered.