Chat application
Design a WhatsApp-like messaging system focusing on delivery and online presence.
Answers use simple, clear English.
Audio N/AQuick interview answer
Clients connect via WebSocket/MQTT to connection servers. Messages flow through a message service to per-user queues/inbox stores, then pushed to online devices. Use Cassandra/Dynamo-style stores for messages, Redis for presence, and media via object storage + CDN.
Detailed answer
Clients connect via WebSocket/MQTT to connection servers. Messages flow through a message service to per-user queues/inbox stores, then pushed to online devices. Use Cassandra/Dynamo-style stores for messages, Redis for presence, and media via object storage + CDN. Guarantee at-least-once delivery with client acks and idempotent message IDs. Group chats use fan-out on write or read depending on group size.