🇮🇳
🇮🇳
Republic Day Special Offer!Get 20% OFF on all courses
Enroll Now
P
Prakalpana
📚Learn
Code Your Future
System Design⏱️ 18 min read📅 Jan 9

Design WhatsApp/Messenger - Real-time Chat System Design Interview

DS
Deepika SharmaEx-Google Engineer
📑 Contents (25 sections)

📌The Interview Question

"Design a real-time chat application like WhatsApp or Facebook Messenger"

📌Step 1: Requirements

Functional

  • 1-on-1 messaging
  • Group chats (up to 500 members)
  • Online/offline status
  • Read receipts (sent, delivered, read)
  • Media sharing (images, videos)
  • Message history
  • Non-Functional

  • Real-time delivery (< 100ms)
  • Message ordering guaranteed
  • 99.99% availability
  • End-to-end encryption
  • Scale

  • 1 billion users
  • 100 million DAU
  • 50 billion messages/day
  • 📌Step 2: High-Level Architecture

    System Architecture
    Live
    Mobile App
    WebSocket Servers
    Scalable
    Message Service
    Presence Service
    Message Store
    Cassandra
    ⚡ High Availability🔄 Auto-scaling🛡️ Fault Tolerant

    📌Step 3: WebSocket Connection

    Why WebSocket?

  • Persistent connection
  • Bi-directional
  • Low latency
  • Efficient for real-time
  • Connection Flow

  • 1Client connects to WebSocket server
  • 2Server authenticates (JWT token)
  • 3Server stores: userId → serverId mapping
  • 4Client is now "online"
  • @ServerEndpoint("/chat")
    public class ChatEndpoint {
    private static Map<String, Session> sessions = new ConcurrentHashMap<>();
    @OnOpen
    public void onOpen(Session session) {
    String userId = authenticate(session);
    sessions.put(userId, session);
    presenceService.setOnline(userId, getServerId());
    }
    @OnMessage
    public void onMessage(String message, Session session) {
    ChatMessage msg = parse(message);
    messageService.send(msg);
    }
    @OnClose
    public void onClose(Session session) {
    String userId = getUser(session);
    sessions.remove(userId);
    presenceService.setOffline(userId);
    }
    }

    📌Step 4: Message Delivery

    Sending a Message

    1. User A sends message to User B
    2. WebSocket server receives message
    3. Store in database (Cassandra)
    4. Lookup User B's WebSocket server
    5. Route message to that server
    6. Deliver to User B
    7. Send "delivered" receipt to User A

    Message States

  • Sent: Stored in server
  • Delivered: Reached recipient's device
  • Read: Recipient opened chat
  • 📌Step 5: Database Design

    Messages Table (Cassandra)

    CREATE TABLE messages (
    chat_id UUID,
    message_id TIMEUUID,
    sender_id BIGINT,
    content TEXT,
    media_url TEXT,
    status TEXT,
    created_at TIMESTAMP,
    PRIMARY KEY (chat_id, message_id)
    ) WITH CLUSTERING ORDER BY (message_id DESC);

    Why Cassandra?

  • Write-heavy workload
  • Time-series data
  • Horizontal scaling
  • High availability
  • 📌Step 6: Group Chat

    Challenge

  • Send to 500 members
  • Fan-out problem
  • Solution: Fan-out on read

  • Store message once
  • Each member reads from group
  • // Message stored once
    INSERT INTO group_messages (group_id, message_id, content, sender)
    // Each member queries their groups
    SELECT * FROM group_messages
    WHERE group_id IN (user's groups)
    ORDER BY message_id DESC

    📌Step 7: Presence (Online Status)

    Using Redis

    // Set online with TTL
    SET user:123:online "server-1" EX 30
    // Heartbeat every 25 seconds to refresh
    EXPIRE user:123:online 30
    // Check if online
    EXISTS user:123:online

    📌Step 8: Media Handling

    1. Client uploads to CDN
    2. Get CDN URL
    3. Send message with media_url
    4. Recipient downloads from CDN

    📌Scaling Strategies

    WebSocket Servers

  • Consistent hashing for user → server mapping
  • Sticky sessions via load balancer
  • Message Routing

  • Redis Pub/Sub for cross-server messaging
  • Or dedicated message router service
  • 📌Interview Tips

  • 1Start with 1-on-1, then add group
  • 2Draw clear data flow
  • 3Discuss delivery guarantees
  • 4Address offline scenarios
  • 5Mention encryption briefly
  • This is asked at Facebook, WhatsApp, and startups. Our course includes building a working chat system.

    DS

    Written by

    Deepika Sharma

    Ex-Google Engineer

    🚀 Master System Design

    Join 500+ developers

    Explore Courses →
    Chat on WhatsApp