38. Design a Chat App (WhatsApp)
1
The interview prompt2
38.1 What do you ask first?3
38.2 How big is this, really?4
38.3 What are the doors?5
38.4 What do we store?6
38.5 What does the whole system look like?7
38.6 How does the WebSocket gateway work?8
38.7 How do message IDs and ordering work?9
38.8 How do delivery and read ticks work?10
38.9 How does offline delivery work?11
38.10 How does group chat work?12
38.11 How does media work?13
38.12 What would you say in the last five minutes?14
Score yourself15
Variations to practise16
Sources17
Code lab38. Design a Chat App (WhatsApp)
38.11 How does media work?
3 min read+10 XP
Photos and videos are too big for the chat path:
- The sender's app encrypts the file with a fresh random key.
- It uploads the encrypted blob to object storage with a presigned URL (Chapter 11).
- It sends a normal chat message containing the blob ID, the key and a thumbnail, itself end-to-end encrypted.
- Recipients download the blob (through a CDN, Chapter 26) and decrypt it with the key from the message.
The server never sees the image in the clear, and forwarding a photo to ten chats can reuse the same uploaded blob. Blobs expire after everyone has downloaded them (or after a set time).
Memory code: "Upload the locked box, send the key in the message."