Entretien de conception système : Concevoir WhatsApp

« Concevoir WhatsApp » teste la livraison en temps réel à très grande échelle, le stockage durable des messages, la présence (en ligne/vu à), et le problème de gestion des connexions consistant à maintenir des centaines de millions d'appareils actifs. Comme toujours, le recruteur veut votre raisonnement et vos compromis, pas une copie du système réel.

Avancez méthodiquement : clarifiez les exigences, estimez l'échelle, concevez le chemin de connexion et de livraison, décidez comment les messages sont stockés, puis traitez les discussions de groupe et les cas difficiles comme la livraison hors ligne et l'ordonnancement. Le guide ci-dessous suit ce chemin.

1. Clarifier les exigences

Fixez d'abord le périmètre. Le cœur est la messagerie un-à-un avec livraison fiable ; clarifiez si les discussions de groupe, les médias et le chiffrement de bout en bout font partie du périmètre de cet entretien.

  • Fonctionnel : envoyer/recevoir des messages, accusés de livraison et de lecture, présence en ligne, discussions de groupe, livraison hors ligne quand un destinataire est déconnecté.
  • Non fonctionnel : faible latence, haute disponibilité, durabilité (aucun message perdu), ordre au sein d'une conversation.
  • À clarifier : le chiffrement E2E et la gestion des médias — mentionnez-les, puis décidez explicitement s'ils entrent dans le périmètre.

2. Estimer l'échelle

Fixez les chiffres qui guident la conception. Supposons ~2 milliards d'utilisateurs et des dizaines de milliards de messages par jour ; cela représente des centaines de milliers de messages par seconde au pic, et des centaines de millions d'appareils connectés simultanément — la gestion des connexions devient un problème de premier plan.

3. Chemin de connexion et de livraison

La messagerie a besoin d'une connexion persistante, pas d'un sondage requête/réponse. Les appareils maintiennent un WebSocket ouvert vers un serveur passerelle. Un composant central doit savoir quelle passerelle détient actuellement la connexion de chaque utilisateur afin qu'un message puisse être routé vers le bon serveur.

  • Passerelle WebSocket : maintient les connexions actives des appareils, gère l'envoi/la réception.
  • Registre de session/présence : associe utilisateur → serveur passerelle actuel (par ex. dans Redis), mis à jour à la connexion/déconnexion.
  • Routage des messages : la passerelle de l'expéditeur recherche la passerelle du destinataire et transmet ; si celui-ci est hors ligne, le message est mis en file d'attente.

4. Stockage des messages et livraison hors ligne

Les messages doivent survivre à un destinataire déconnecté. Persistez chaque message de façon durable et suivez l'état de livraison par destinataire ; livrez immédiatement si le destinataire est en ligne, sinon stockez puis transférez à sa reconnexion.

Un schéma d'accès intensif en écriture, avec une clé par conversation, favorise un magasin à colonnes larges comme Cassandra (débit d'écriture élevé, mise à l'échelle horizontale) plutôt qu'une seule base relationnelle. Une fois qu'un message est confirmé livré à tous les destinataires, il peut être supprimé ou expiré, car WhatsApp ne conserve pas indéfiniment les messages livrés côté serveur.

5. Discussions de groupe

La messagerie de groupe est un fan-out : un envoi devient N livraisons. Pour des tailles de groupe typiques, le fan-out-on-write (pousser vers le chemin de livraison de chaque membre) est simple et rapide à lire. Notez le compromis — les très grands groupes rendent le fan-out-on-write coûteux, c'est pourquoi les groupes de diffusion géants constituent un problème de conception différent.

6. Compromis à verbaliser

Terminez sur les tensions : l'ordonnancement (numéros de séquence par conversation contre ordonnancement global), cohérence contre disponibilité pour les accusés (éventuelle convient pour « vu à », plus forte pour la livraison), et fan-out-on-write contre on-read pour les groupes. Les nommer explicitement est ce qui rend la réponse senior.

Entraînez-vous à la conception système de WhatsApp avec une aide en temps réel

L'assistant d'entretien de conception système de Natively peut vous garder structuré pendant un entretien en direct — en suggérant la prochaine dimension à couvrir et en faisant apparaître les compromis en temps réel, tout sur votre propre appareil.

Installez-le sur votre propre machine.

Un assistant pour les conversations en direct qui fonctionne en local. Rien ne quitte votre machine.

macOS 12+ · Windows 10/11

© 2026 Natively AI Private Limited

Code source disponible sous la licence Natively Personal Use Source License v1.0 · Géolocalisation IP par DB-IP