Visual explanations of distributed systems, scalability patterns, and real-world architectures. Everything you need to ace your system design interview.
Core concepts every engineer must understand before designing large-scale systems.
How systems handle growing amounts of work by adding resources.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ VERTICAL SCALING (Scale Up) โ โ โโโโโโโโ โโโโโโโโโโโโโโโโ โ โ โ 4 CPUโ โโโ โ 32 CPU โ โ โ โ 8 GB โ โ 256 GB RAM โ โ โ โโโโโโโโ โโโโโโโโโโโโโโโโ โ โ Simpler but has hardware limits โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ HORIZONTAL SCALING (Scale Out) โ โ โโโโโโโโ โโโโโโโโ โโโโโโโโ โโโโโโโโ โ โ โServerโ โServerโ โServerโ โServerโ โ โ โ 1 โ โ 2 โ โ 3 โ โ N โ โ โ โโโโโโโโ โโโโโโโโ โโโโโโโโ โโโโโโโโ โ โ Complex but virtually unlimited โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Understanding time-per-request vs requests-per-second trade-offs.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ LATENCY NUMBERS (2024) โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ L1 cache ref .............. 1 ns โ โ L2 cache ref .............. 4 ns โ โ Main memory ref .......... 100 ns โ โ SSD random read .......... 16 ฮผs โ โ HDD random read .......... 2 ms โ โ Same datacenter RTT ...... 0.5 ms โ โ Cross-continent RTT ...... 150 ms โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ THROUGHPUT = Requests / Second โ โ โ โ Single server: ~1K-10K RPS โ โ With caching: ~50K-100K RPS โ โ CDN edge: ~1M+ RPS โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
In a distributed system, you can only guarantee two of three properties.
Consistency (C)
โฑโฒ
โฑ โฒ
โฑ โฒ
CP โฑ Pick โฒ CA
โฑ Two! โฒ
โฑ โฒ
โฑโโโโโโโโโโโโโโโฒ
Availability (A) โโ Partition
Tolerance (P)
AP
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ CP โ MongoDB, HBase, Redis โ
โ โ Consistent but may be โ
โ โ unavailable during split โ
โโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ AP โ Cassandra, DynamoDB, โ
โ โ CouchDB โ Always โ
โ โ available, eventually โ
โ โ consistent โ
โโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ CA โ Traditional RDBMS โ
โ โ (single node only) โ
โโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Strong, eventual, and causal consistency โ when to use which.
STRONG CONSISTENCY (Linearizable): Client โโwrite(x=5)โโโ DB โโโ All replicas Client โโread(x)โโโโโ DB โโโ Always returns 5 โ Banking, inventory โ ๏ธ High latency EVENTUAL CONSISTENCY: Client โโwrite(x=5)โโโ Primary Client โโread(x)โโโโโ Replica โโโ May return old value Eventually all replicas converge โ Social feeds, DNS โก Low latency CAUSAL CONSISTENCY: If A causes B, everyone sees A before B But concurrent events can be in any order โ Chat apps, collaborative editing
Quick calculations to estimate system capacity and requirements.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ POWER OF TWO CHEAT SHEET โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ 2^10 = 1 Thousand (1 KB) โ โ 2^20 = 1 Million (1 MB) โ โ 2^30 = 1 Billion (1 GB) โ โ 2^40 = 1 Trillion (1 TB) โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ TIME CONVERSIONS โ โ 1 day = 86,400 sec โ 100K sec โ โ 1 month = 2.6M sec โ 2.5M sec โ โ 1 year = 31.5M sec โ 30M sec โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ COMMON ESTIMATES โ โ Daily active users โ QPS: โ โ QPS = DAU ร queries/day / 86400 โ โ Peak QPS = QPS ร 2-3 โ โ โ โ Storage: โ โ = users ร data_per_user ร retention โ โ โ โ Bandwidth: โ โ = QPS ร avg_request_size โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Nines of availability and how to achieve high uptime.
โโโโโโโโโโโโฌโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ โ Level โ Uptime % โ Downtime/yr โ โโโโโโโโโโโโผโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโค โ 2 nines โ 99% โ 3.65 days โ โ 3 nines โ 99.9% โ 8.77 hours โ โ 4 nines โ 99.99% โ 52.6 min โ โ 5 nines โ 99.999% โ 5.26 min โ โโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ ACHIEVING HIGH AVAILABILITY: โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ Redundancy โ No single point of โ โ failure (SPOF) โ โ Replication โ Data across regions โ โ Failover โ Auto switch on failure โ โ Health Checks โ Detect failures fast โ โ Graceful โ Degrade, don't crash โ โ Degradation โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The essential components used to build any large-scale distributed system.
Distributes incoming traffic across multiple servers for reliability and performance.
โโโโโโโโโโโโ
โ Clients โ
โโโโโโฌโโโโโโ
โ
โโโโโโโโผโโโโโโโ
โ LOAD โ
โ BALANCER โ
โ (L4 / L7) โ
โโโโฌโโโโฌโโโโฌโโโ
โ โ โ
โโโโโโผโ โโผโโโ โโผโโโโโ
โ Srv โ โSrvโ โ Srv โ
โ 1 โ โ 2 โ โ 3 โ
โโโโโโโ โโโโโ โโโโโโโ
ALGORITHMS:
Round Robin โโโ Equal distribution
Weighted RR โโโ Based on server capacity
Least Conn โโโ Route to least busy
IP Hash โโโโโโ Session affinity
Consistent โโโ Minimize remapping
Hash on server changes
Store frequently accessed data in fast storage to reduce latency and database load.
CACHE-ASIDE (Lazy Loading):
App โโreadโโโ Cache โโmissโโโ DB
โ โ
โ โโโโโโโโโโโโ
โ โ load into cache
โโโโโโ
WRITE-THROUGH:
App โโwriteโโโ Cache โโwriteโโโ DB
(Consistent but higher write latency)
WRITE-BEHIND (Write-Back):
App โโwriteโโโ Cache โโasyncโโโ DB
(Fast writes but risk of data loss)
CACHE HIERARCHY:
โโโโโโโโโโโ < 1ms โโโโโโโโโ
โ L1: App โโโโโโโโโโโBrowserโ
โ Memory โ โ Cache โ
โโโโโโฌโโโโโ โโโโโโโโโ
โ 1-5ms
โโโโโโผโโโโโ โโโโโโโโโ
โL2: Redisโโโโโโโโโโโ CDN โ
โMemcachedโ โ Edge โ
โโโโโโฌโโโโโ โโโโโโโโโ
โ 5-50ms
โโโโโโผโโโโโ
โL3: DB โ
โ Query โ
โ Cache โ
โโโโโโโโโโโ
Geographically distributed servers that cache content close to end users.
Without CDN:
User (Tokyo) โโโโโโโ500msโโโโโโโ Origin (US)
With CDN:
User (Tokyo) โโ20msโโโ CDN Edge (Tokyo)
โ cache miss
โผ
Origin (US)
โ
CDN caches response
โ
Next User โโโโ20msโโโโ CDN Edge โ (cached!)
PUSH CDN vs PULL CDN:
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PUSH โ You upload to CDN upfront โ
โ โ Best for static, known contentโ
โโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ PULL โ CDN fetches on first request โ
โ โ Best for dynamic content โ
โ โ Risk: slow first request โ
โโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Choosing the right database for your use case โ SQL vs NoSQL and beyond.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ DATABASE DECISION TREE โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ โ โ Need ACID transactions? โ โ YES โ SQL (PostgreSQL, MySQL) โ โ NO โ โ โ โ โ Need flexible schema? โ โ YES โ Document DB (MongoDB) โ โ NO โ โ โ โ โ Key-value lookups at massive scale? โ โ YES โ DynamoDB, Redis, Cassandra โ โ NO โ โ โ โ โ Complex relationships / graph queries? โ โ YES โ Neo4j, Neptune โ โ NO โ โ โ โ โ Time-series / IoT data? โ โ YES โ InfluxDB, TimescaleDB โ โ NO โ โ โ โ โ Full-text search? โ โ YES โ Elasticsearch, OpenSearch โ โ โ โ Vector similarity (AI/ML)? โ โ YES โ Pinecone, pgvector, Milvus โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Scaling databases horizontally through partitioning and replication strategies.
REPLICATION (Read Scaling):
โโโโโโโโโโ sync/async โโโโโโโโโโโ
โPrimary โโโโโโโโโโโโโโโโ โ Replica โ โ reads
โ(writes)โโโโโโโโโโโโโโโโ โ Replica โ โ reads
โโโโโโโโโโ โโโโโโโโโโโ
SHARDING (Write Scaling):
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Shard Router โ
โโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโ
โ โ โ
โโโโโผโโโ โโโโผโโโโ โโโโผโโโโ
โShard 1โ โShard 2โ โShard 3โ
โ A-H โ โ I-P โ โ Q-Z โ
โโโโโโโโโ โโโโโโโโโ โโโโโโโโโ
SHARDING STRATEGIES:
Range-based โ user_id 1-1M, 1M-2M
Hash-based โ hash(user_id) % N
Geo-based โ by region/country
Directory โ lookup table maps keyโshard
Decouple services with asynchronous communication for reliability and scalability.
MESSAGE QUEUE (Point-to-Point):
Producer โโโ โโโโโโโโโโโโ โโโ Consumer
โ Queue โ
Producer โโโ โ โโโโฌโโโ โ โโโ Consumer
โ โm3โm2โm1โ
โโโโโโโโโโโโ
EVENT STREAMING (Pub/Sub):
Publisher โโโ โโโโโโโโโโโโโโโโ
โ Topic โ
โ โโโโฌโโโฌโโโ โโโโ Consumer Group A
โ โe3โe2โe1โ โโโโ Consumer Group B
โโโโโโโโโโโโโโโโโโโ Consumer Group C
WHEN TO USE WHAT:
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ RabbitMQ โ Task queues, RPC, routingโ
โ Kafka โ Event streaming, logs, โ
โ โ CDC, high throughput โ
โ SQS โ Simple cloud queues โ
โ Redis Pub/ โ Real-time notifications โ
โ Sub โ (no persistence) โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโ
REST, GraphQL, gRPC โ choosing the right API paradigm for your system.
โโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
โ โ REST โ GraphQL โ gRPC โ
โโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโค
โ Protocol โ HTTP โ HTTP โ HTTP/2 โ
โ Format โ JSON โ JSON โ Protobuf โ
โ Contract โ Loose โ Schema โ Strict โ
โ Caching โ Easy โ Hard โ Hard โ
โ Learning โ Easy โ Medium โ Hard โ
โ Speed โ Good โ Good โ Fastest โ
โโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโค
โ Best For โ Public โ Flexible โ Internal โ
โ โ APIs, โ frontend โ micro- โ
โ โ CRUD โ queries โ services โ
โโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
REST Example:
GET /api/users/123
POST /api/users { "name": "Alex" }
PUT /api/users/123 { "name": "Alex B" }
gRPC: 10x faster for service-to-service
Distribute data across nodes with minimal redistribution when nodes change.
HASH RING:
Node A
โฑโฒ
โฑ โฒ
โ โฑ โฒ โ โ keys
โฑ โฒ
Node D โโโโโโโโโโ Node B
โฒ โฑ
โ โฒ โฑ โ
โฒ โฑ
โฒโฑ
Node C
Traditional Hashing:
hash(key) % N โ Add/remove node =
ALL keys remapped! โ
Consistent Hashing:
Keys mapped to ring position
Only K/N keys remapped when
nodes change โ
VIRTUAL NODES:
Each physical node โ 100-200 virtual nodes
Ensures even distribution
Node A: A-1, A-2, ... A-150 on ring
Forward proxy, reverse proxy, and API gateway patterns for routing and security.
FORWARD PROXY (client-side):
Client โโโ Proxy โโโ Internet โโโ Server
(VPN, anonymity, content filtering)
REVERSE PROXY (server-side):
Client โโโ Reverse โโโ Server 1
Proxy โโโ Server 2
โโโ Server 3
(Load balancing, SSL, caching, security)
API GATEWAY:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ API GATEWAY โ
โ โโโโโโโฌโโโโโโโฌโโโโโโโฌโโโโโโโ โ
โ โAuth โRate โRoute โTrans-โ โ
โ โ โLimit โing โform โ โ
โ โโโโฌโโโดโโโฌโโโโดโโโฌโโโโดโโโฌโโโโ โ
โ โ โ โ โ โ
โโโโโโโผโโโโโโผโโโโโโโผโโโโโโโผโโโโโโโ
โผ โผ โผ โผ
User Order Payment Notif
Svc Svc Svc Svc
Battle-tested patterns for building reliable, scalable distributed systems.
Breaking a monolith into independently deployable services.
MONOLITH: MICROSERVICES:
โโโโโโโโโโโโโโโโ โโโโโโโ โโโโโโโ โโโโโโโ
โ All Code โ โUser โ โOrderโ โPay โ
โ One Deploy โ โโโ โ Svc โ โ Svc โ โ Svc โ
โ One DB โ โโโโฌโโโ โโโโฌโโโ โโโโฌโโโ
โโโโโโโโโโโโโโโโ โ โ โ
โโโโผโโโโโโโผโโโโโโโผโโโ
โUsersโโOrderโโPay โ
โ DB โโ DB โโ DB โ
โโโโโโโโโโโโโโโโโโโโโ
COMMUNICATION:
Synchronous: REST / gRPC (request-response)
Asynchronous: Kafka / RabbitMQ (events)
SERVICE DISCOVERY:
Client โโโ Service Registry โโโ Instance
(Consul, Eureka, K8s DNS)
Services communicate through events for loose coupling and real-time processing.
EVENT SOURCING:
Commands โโโ Event Store โโโ Projections
โ
OrderCreated โโโโ Read Model (SQL)
ItemAdded โโโโ Analytics
OrderPaid โโโโ Notifications
OrderShipped โโโโ Search Index
CQRS (Command Query Separation):
โโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ COMMAND โโโwriteโโโโ Write Model โ
โ API โ โ (Event Store)โ
โโโโโโโโโโโ โโโโโโโโฌโโโโโโโ
โ events
โโโโโโโโโโโ โโโโโโโโผโโโโโโโ
โ QUERY โโโโreadโโโ Read Model โ
โ API โ โ(Materialized)โ
โโโโโโโโโโโ โโโโโโโโโโโโโโโ
SAGA PATTERN (Distributed Transactions):
Order โ Payment โ Inventory โ Shipping
โ โ โ
โโโ Compensate โโโ Rollback (on failure)
Protect your system from abuse and ensure fair usage across clients.
TOKEN BUCKET:
โโโโโโโโโโโโโโโโโโโโโโโโ
โ Bucket (max: 10) โ
โ โโโโโโโโโโ โ โ refill 1/sec
โ โ
โ Request arrives: โ
โ Token available? โ
โ YES โ Process โ
โ
โ NO โ Reject 429 โโ
โโโโโโโโโโโโโโโโโโโโโโโโ
SLIDING WINDOW LOG:
|โโโโโโโโ 1 minute window โโโโโโโโ|
| req req req req req req |
| โ โ |
timestamp timestamp |
Count requests in window.
Reject if count > limit.
DISTRIBUTED RATE LIMITING:
Client โโโ API Gateway โโโ Redis
โ โ
โ INCR key โ
โ EXPIRE 60s โ
โ if count > N โ
โ โ 429 โ
Prevent cascading failures across services with fault tolerance patterns.
CIRCUIT BREAKER STATES:
โโโโโโโโโโ failures > threshold โโโโโโโโ
โ CLOSED โ โโโโโโโโโโโโโโโโโโโโโโ โ OPEN โ
โ(normal)โ โ(fail โ
โโโโโโโโโโ โfast) โ
โฒ โโโโฌโโโโ
โ โ
โ success โ timeout
โ โ
โโโโโโดโโโโโโ โโโโโผโโโโโโโ
โ CLOSED โ โโโ success โโโโโ โHALF-OPEN โ
โโโโโโโโโโโโ โ(test one)โ
failure โโโ โโโโโโโโโโโโ
back to OPEN
RESILIENCE PATTERNS:
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โ Retry โ Exp backoff + jitter โ
โ Timeout โ Don't wait forever โ
โ Bulkhead โ Isolate failures โ
โ Fallback โ Cached/default value โ
โ Circuit Breakerโ Fail fast on errors โ
โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโ
How distributed nodes agree on state โ Paxos, Raft, and leader election.
RAFT CONSENSUS:
โโโโโโโโโโ vote request โโโโโโโโโโ
โFollowerโ โโโโโโโโโโโโโโโ โCandidateโ
โโโโโโฌโโโโ โโโโโโฌโโโโ
โ โ
โ majority votes โ
โ โโโโโโผโโโโ
โ โโโ heartbeat โโโโโ โ Leader โ
โ โโโโโโโโโโ
โ
Leader sends log entries to followers
Committed when majority acknowledge
LEADER ELECTION:
1. Follower timeout โ becomes Candidate
2. Requests votes from all nodes
3. Majority votes โ becomes Leader
4. Sends heartbeats to maintain leadership
SPLIT BRAIN:
Network split โ two leaders!
Solution: Quorum (majority) required
5 nodes โ need 3 to agree (survives 2 failures)
Space-efficient structures for approximate membership, counting, and cardinality.
BLOOM FILTER:
"Is X in the set?"
โโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโฌโโ
โ0โ1โ0โ1โ0โ0โ1โ0โ1โ0โ0โ1โ bit array
โโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโดโโ
โ โ โ โ
h1 h2 h3 h1 (hash functions)
"Maybe in set" โ could be false positive
"Definitely not" โ NEVER false negative
Use case: Check if username taken before
hitting database. 10M users in 12MB!
COUNT-MIN SKETCH:
"Approximately how many times did X occur?"
Used for: top-K, frequency estimation
HYPERLOGLOG:
"How many unique items?" (cardinality)
Count 1 BILLION unique items in 12 KB!
Used by: Redis PFCOUNT, analytics
End-to-end designs of popular systems you'll encounter in interviews.
Like bit.ly โ convert long URLs to short ones with analytics.
โโโโโโโโ POST /shorten โโโโโโโโโโโโโ
โClientโ โโโโโโโโโโโโโโโโโโโ โ API Serverโ
โโโโโโโโ {"url":"long..."} โโโโโโโฌโโโโโโ
โ
1. Generate short ID (Base62) โ
2. Store mapping โ
โโโโโโโผโโโโโโ
โ Database โ
โ shortโlong โ
โ + metadata โ
โโโโโโโฌโโโโโโ
โ
โโโโโโโโ GET /abc123 โโโโโโโผโโโโโโ
โClientโ โโโโโโโโโโโโโโโโโโโ โ Cache โ
โโโโโโโโ 301 Redirect โ (Redis) โ
โโโโโโโโโโโโโ
ID GENERATION:
Base62: [a-zA-Z0-9] โ 62^7 = 3.5 trillion
Snowflake ID โ timestamp + machine + seq
MD5/SHA โ hash + take first 7 chars
Like WhatsApp/Slack โ real-time messaging with groups, media, and presence.
โโโโโโโโ WebSocket โโโโโโโโโโโโโโโโโโโโ
โUser Aโ โโโโโโโโโโ โ Chat Server โ
โโโโโโโโ โ (WS Gateway) โ
โโโโโโโโโโฌโโโโโโโโโโ
โโโโโโโโ WebSocket โ
โUser Bโ โโโโโโโโโโ โโโโโโโโโผโโโโโโโ
โโโโโโโโ โ Message Queue โ
โ (Kafka) โ
โโโโโโโโโฌโโโโโโโ
โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโ
โผ โผ โผ
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโ
โ Message โ โ Presence โ โ Push โ
โ DB โ โ Service โ โNotific. โ
โ(Cassandraโ โ (Redis) โ โ (FCM/ โ
โ / HBase)โ โโโโโโโโโโโโ โ APNS) โ
โโโโโโโโโโโโ โโโโโโโโโโ
MESSAGE FLOW:
1. User A sends via WebSocket
2. Server publishes to Kafka topic
3. Recipient's chat server consumes
4. If online โ deliver via WebSocket
5. If offline โ push notification + store
Like Twitter/Instagram โ generate and serve personalized content feeds.
FAN-OUT ON WRITE (Push Model): User posts โโโ Write to all followers' feeds โโโโโโโโ โPost โโโโ Feed cache (follower 1) โ โโโโ Feed cache (follower 2) โ โโโโ Feed cache (follower N) โโโโโโโโ โ Fast reads โ Celebrity problem (millions) FAN-OUT ON READ (Pull Model): User opens app โโโ Query all followed users โโโโโโโโ โReaderโโโโ Get posts from user A, B, C... โ โโโโ Merge + Sort + Return top N โโโโโโโโ โ No celebrity problem โ Slow reads HYBRID (Twitter's approach): Regular users โ fan-out on write Celebrities (>10K followers) โ fan-out on read Merge both at read time
Multi-channel notifications โ push, SMS, email at scale with preferences.
โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโ
โ Services โโโโโโโ Notification Service โ
โ(triggers)โ โโโโโโโโโโโโโฌโโโโโโโโโโโโ
โโโโโโโโโโโโ โ
โโโโโโโโโโผโโโโโโโโโ
โ Message Queue โ
โ (Kafka) โ
โโโโฌโโโโโโฌโโโโโโฌโโโ
โ โ โ
โโโโโโผโ โโโผโโโ โโผโโโโโ
โPush โ โSMS โ โEmailโ
โWorkerโ โWrkrโ โWrkr โ
โโโโฌโโโ โโโฌโโโ โโโโฌโโโ
โ โ โ
โโโโผโโโโโโโผโโโโโโโโผโโโโ
โAPNS/โ โTwilโ โSES/ โ
โFCM โ โio โ โSendgrdโ
โโโโโโโ โโโโโโ โโโโโโโโโ
FEATURES:
โ User preferences (channel, frequency)
โ Rate limiting (max 3 push/hour)
โ Template engine (personalization)
โ Analytics (delivered, opened, clicked)
โ Retry with exponential backoff
Full-text search with autocomplete, ranking, and real-time indexing.
INDEXING PIPELINE:
Data Source โโโ Crawler/CDC โโโ Processor
โ
โโโโโโโโผโโโโโโโ
โ Tokenize โ
โ Normalize โ
โ Stem/Lemma โ
โโโโโโโโฌโโโโโโโ
โ
โโโโโโโโผโโโโโโโ
โ Inverted โ
โ Index โ
โ (Elastic- โ
โ search) โ
โโโโโโโโโโโโโโโ
INVERTED INDEX:
"distributed" โ [doc1, doc5, doc9]
"system" โ [doc1, doc3, doc5]
"design" โ [doc1, doc2, doc7]
Search "distributed system":
โ Intersection: [doc1, doc5] โ results!
SEARCH FLOW:
Query โ Parse โ Search Index โ Rank โ Return
โ โ
Spell TF-IDF, BM25, PageRank,
correct personalization, freshness
Multi-tenant AI agent orchestration โ reasoning, planning, and tool execution.
โโโโโโโโโโโโโโโ
โ Slack/Teams โโโโ API Gateway (Auth, Rate Limit)
โโโโโโโโฌโโโโโโโ โ
โ Session Manager (Redis)
โ โ
โ โโโโโโโโโโโผโโโโโโโโโโโ
โ โ REASONING ENGINE โ
โ โ โโโโโโโโโโโโโโโโโ โ
โ โ โ Planning (LLM)โ โโ Decompose
โ โ โ Execution Eng โ โโ Run tools
โ โ โ Observation โ โโ Evaluate
โ โ โโโโโโโโโโโโโโโโโ โ
โ โโโโโโฌโโโโโโโโโโโฌโโโโโโ
โ โ โ
โ โโโโโโโโโโผโโโ โโโโโผโโโโโโโโโ
โ โTool Registryโ โState Managerโ
โ โ(per tenant) โ โ(Redis + PG) โ
โ โโโโโโฌโโโโโโโโ โโโโโโโโโโโโโโ
โ โ
โ โโโโโโโผโโโโโโโฌโโโโโโโโโโโ
โ โผ โผ โผ โผ
โ SNOW Jira Salesforce Okta
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Everything you need at a glance โ the ultimate quick reference.
Functional & non-functional. Ask clarifying questions. Scope the problem. Don't assume.
DAU, QPS, storage, bandwidth. Back-of-envelope math. Know your powers of 2.
Data model, SQL vs NoSQL choice, key entities and relationships.
Draw the architecture. Main components, data flow, APIs. Keep it simple first.
Define key API endpoints. REST/gRPC. Request/response schemas.
Pick 2-3 interesting components. Discuss trade-offs, alternatives, edge cases.
Bottlenecks, single points of failure, scaling strategies, monitoring.
Every decision has trade-offs. Show you understand the "why" behind choices.
| Need | Choose | Example |
|---|---|---|
| ACID Transactions | PostgreSQL | Payments, Orders |
| High Write Throughput | Cassandra | IoT, Time-series |
| Flexible Schema | MongoDB | CMS, Catalogs |
| Cache / Sessions | Redis | Sessions, Leaderboards |
| Full-Text Search | Elasticsearch | Product Search |
| Graph Queries | Neo4j | Social Networks |
| Global Scale SQL | Spanner/CockroachDB | Multi-region apps |
| Vector Search (AI) | Pinecone/pgvector | RAG, Similarity |
| Problem | Solution |
|---|---|
| Too many reads | Cache (Redis) + CDN + Read replicas |
| Too many writes | Sharding + Message queue + Batch writes |
| Single point of failure | Redundancy + Failover + Multi-AZ |
| Slow API responses | Async processing + Pagination + Compression |
| Data growing too fast | Data partitioning + Archival + TTL |
| Cross-region latency | Multi-region deploy + CDN + Edge computing |
| Thundering herd | Rate limiting + Circuit breaker + Backpressure |