WhatsApp Messaging System¶
Quick Reference Guide for System Design Interviews
Problem Statement¶
Design a real-time messaging system like WhatsApp that supports one-on-one chats, group chats, media sharing, and message delivery/read receipts.
Requirements¶
Functional Requirements¶
- One-on-one messaging
- Group chats (up to 256 members)
- Media sharing (images, videos, documents)
- Message delivery/read receipts
- Online/offline status
- End-to-end encryption
- Message history sync across devices
Non-Functional Requirements¶
- Latency: < 100ms message delivery
- Availability: 99.99%
- Scale: 2B users, 100B messages/day
- Ordering: Messages must be ordered within a chat
- Reliability: No message loss
Back of Envelope Estimation¶
High-Level Architecture¶
Message Flow¶
Connection Management¶
Message Storage¶
Group Messaging¶
Delivery Receipts¶
Presence (Online Status)¶
End-to-End Encryption¶
Media Handling¶
Offline Message Delivery¶
Interview Discussion Points¶
- How do you ensure message ordering?
- Timestamp + sequence number per chat
- Cassandra: Ordered by message_id (TIMEUUID)
-
Client reorders if needed
-
How do you handle millions of connections?
- Horizontal gateway servers
- Each server handles ~1M connections
-
User→gateway mapping in Redis
-
How does E2E encryption work?
- Signal Protocol
- Keys exchanged via server
-
Server can't read messages
-
How do you handle group messages?
- Fan-out to all members
- Single storage per group
-
Track delivery per user
-
How do you sync across devices?
- Messages stored on server (encrypted)
- Device fetches on connect
-
Last sync timestamp
-
How do you handle offline users?
- Store messages in DB
- Push notification
- Deliver on reconnect
Quick Reference for System Design Interviews