Very well articulated Ashish keep growing 💗 . The heartbeat of designingvwhatsapp like application resides in message synchronisation. That's why what you explained above acknowledgement and all .
first you have taken "Peak Concurrent Connections: Approximately 50 million users connected at peak times." but for bandwidth "With 10 million users connected concurrently during peak times."
Nice breakdown! Just a note — WhatsApp doesn’t store all messages on the server; it uses end-to-end encryption with messages stored locally on devices and optionally backed up to Google Drive or iCloud. It stores on the server only temporarily until the message is delivered.
timestamp-based message_id - can cause hot partition, as at that time everyone is writing to same partition. Combination of timestamp+userID, would be a good key here.
Nice work! WhatsApp's rise from personal messaging to a business powerhouse is impressive. Its growth and potential as a super app are truly unstoppable.
Great article but I am missing one thing. Conversation and message, none of them have receiver id. When user A sends the message, how does it connect to user B. How does chat server know whom to connect user A?
Very well articulated Ashish keep growing 💗 . The heartbeat of designingvwhatsapp like application resides in message synchronisation. That's why what you explained above acknowledgement and all .
thank you!
Designing whatsapp. Typo
Thank you, this was a great read.
Thank you so much for this post!!
amazing explanation!!
Too good thanks for sharing
Good Read
Good explanation in easy language
Nice one. Appreciation to your quality work.
Wonderful article, I had a question though, how do chat servers communicate between each other when sending messages?
they are multiple ways they can communicate:
1. Message Queues - Sender's chat server publish messages to receiver's chat server queue
2. gRPC - It might be ideal due to its low latency.
3. HTTP APIs (eg.. REST) - Server handling a user’s message might call another server’s API to forward the message to users connected on that server.
I am not sure, Can server 1 send message directly to server2 by websocket ?
first you have taken "Peak Concurrent Connections: Approximately 50 million users connected at peak times." but for bandwidth "With 10 million users connected concurrently during peak times."
am i missing something ?
i have a minor doubt in the database design, dont we need a receiverId in the messages table
Nice breakdown! Just a note — WhatsApp doesn’t store all messages on the server; it uses end-to-end encryption with messages stored locally on devices and optionally backed up to Google Drive or iCloud. It stores on the server only temporarily until the message is delivered.
timestamp-based message_id - can cause hot partition, as at that time everyone is writing to same partition. Combination of timestamp+userID, would be a good key here.
Nice work! WhatsApp's rise from personal messaging to a business powerhouse is impressive. Its growth and potential as a super app are truly unstoppable.
Do we really require the message table? Why this design shows the table which maintains the state of the message?
Great article but I am missing one thing. Conversation and message, none of them have receiver id. When user A sends the message, how does it connect to user B. How does chat server know whom to connect user A?