Design Exercise: Chat System (WhatsApp-like)

Requirements

Estimation

Messages: 50M × 40 = 2B messages/day ≈ 23K messages/sec
Storage: 2B × 100B avg = 200GB/day, 73TB/year
Connections: 50M concurrent WebSocket connections (peak)

Architecture

Client ──WebSocket──► Chat Servers (stateful, hold connections) │ ▼ Message Queue (Kafka) │ ┌───────────┼───────────┐ ▼ ▼ ▼ Message DB Push Notif Presence (Cassandra) Service Service

Key Design Decisions