Design a chat system like WhatsApp or Slack. How would you handle real-time messaging?

🏗️ System Design9/21/2025
System design for real-time chat application covering WebSockets, message delivery, offline users, and scalability.

Chat System Design

Functional Requirements

  • One-on-one and group messaging
  • Real-time message delivery
  • Message history
  • Online/offline status
  • File/media sharing
  • Message delivery confirmations

Real-Time Communication

Technologies:

  • WebSockets for persistent connections
  • HTTP/2 Server-Sent Events as fallback
  • Long polling for older browsers

Message Delivery

  1. Online Users: Direct WebSocket push
  2. Offline Users: Store in database, deliver on reconnection
  3. Push Notifications: FCM/APNS for mobile

Database Design

  • Messages: Sharded by chat_id
  • User Sessions: Redis for active connections
  • Delivery Status: Separate table for read receipts

Scalability

  • Message queues (Kafka/RabbitMQ)
  • Database sharding
  • CDN for media files
  • Regional deployments
By: System Admin