Design a chat system like WhatsApp or Slack. How would you handle real-time messaging?
🏗️ System Design• 9/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
- Online Users: Direct WebSocket push
- Offline Users: Store in database, deliver on reconnection
- 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