Skip to content

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

Capacity Estimation


High-Level Architecture

WhatsApp Architecture


Message Flow

Message Delivery Flow


Connection Management

Connection Management


Message Storage

Message Storage


Group Messaging

Group Messaging


Delivery Receipts

Delivery Receipts


Presence (Online Status)

Presence Service


End-to-End Encryption

End-to-End Encryption


Media Handling

Media Handling


Offline Message Delivery

Offline Message Delivery


Interview Discussion Points

  1. How do you ensure message ordering?
  2. Timestamp + sequence number per chat
  3. Cassandra: Ordered by message_id (TIMEUUID)
  4. Client reorders if needed

  5. How do you handle millions of connections?

  6. Horizontal gateway servers
  7. Each server handles ~1M connections
  8. User→gateway mapping in Redis

  9. How does E2E encryption work?

  10. Signal Protocol
  11. Keys exchanged via server
  12. Server can't read messages

  13. How do you handle group messages?

  14. Fan-out to all members
  15. Single storage per group
  16. Track delivery per user

  17. How do you sync across devices?

  18. Messages stored on server (encrypted)
  19. Device fetches on connect
  20. Last sync timestamp

  21. How do you handle offline users?

  22. Store messages in DB
  23. Push notification
  24. Deliver on reconnect

Quick Reference for System Design Interviews