Let's design a Whatsapp like instant messaging service, similar to services like Whatsapp, Facebook Messenger, and WeChat.
What is Whatsa...
For further actions, you may consider blocking this person and/or reporting abuse
Great article! Love how you estimated the traffic 😅
Impressive. I was skimming the article and those estimations caught my attention. I will read it later.
Wow, so detailed good article.
Great work! Will try to go through all other topics too. May I know the tool used to make the diagrams please?
Thanks, I used excalidraw for diagrams
Well written article.
I just made a personal WhatsApp kindoff, Just felt like mentioning it here
Nice article.
I think there is a typo on number of message estimations.
It says 10 messages to 4 people which would be 40 message and then you use 20 messages for the calculation.
As you are using microservices you should mention that you might not want to share a single database instance. The benefit of microservices is an independent deployment which might not work out in your setup.
But I like your explanations and thoughts
Really good article with solid structure. Timing and structure are crucial for those type of interviews, I have also created System Design Template which is generic enough to be used for any interview but also FAANG companies.
i think chats and chats_users can be deleted
i think private chat between 2 user is actually a group of 2 people
it could be separate by field called type
type 1 is group
type 2 is private chat
type 3 is channel
is that right?
estimation the tps maybe need to consider the peak of flow?
Fantastic job. Nice one
Great article! I love the way you raise the problem then propose the solution and what should we learn more.
Good article, tables should not contain messages. Whatsapp uses end to end encryption. Communications are handled without an intermediate server.
They are handled and stored in a database, but they are encrypted and decrypted on your phone. So that's why you can't load all message from the server as soon as you are changing your device. If you want to go deeper into the topic you can search for asymmetric cryptography. So yes the author is right with storing the message on the server, the only difference is that they are not stored as plain text, they are stored encrypted.
techuntold.com/where-whatsapp-mess...
Ah I didn't knew that, thanks for correcting me. Really interesting.
50 million * 20 messages -> shouldn't this be 50 million * (4*10) = 2 billion/day?
Well explained! I have a question though: what is the better approach—to have a single queue for the whole app (with multiple workers) or to have one queue for each chat?
We are using messaging queue when user is offline, should same mechanism be used when ser is online