Entrevista de diseño de sistemas: Diseña WhatsApp

«Diseña WhatsApp» pone a prueba la entrega en tiempo real a escala masiva, el almacenamiento durable de mensajes, la presencia (en línea/última vez) y el problema de gestión de conexiones de mantener cientos de millones de dispositivos activos. Como siempre, el entrevistador quiere tu razonamiento y tus compromisos, no una copia del sistema real.

Avanza de forma metódica: aclara los requisitos, estima la escala, diseña la ruta de conexión y entrega, decide cómo se almacenan los mensajes, y luego aborda los chats grupales y los casos difíciles como la entrega sin conexión y el orden. La guía a continuación sigue esa ruta.

1. Aclarar los requisitos

Primero fija el alcance. El núcleo es la mensajería uno a uno con entrega confiable; aclara si los chats grupales, los medios y el cifrado de extremo a extremo están dentro del alcance de esta ronda.

  • Funcional: enviar/recibir mensajes, confirmaciones de entrega y lectura, presencia en línea, chats grupales, entrega sin conexión cuando un destinatario está desconectado.
  • No funcional: baja latencia, alta disponibilidad, durabilidad (sin mensajes perdidos), orden dentro de una conversación.
  • Aclarar: el cifrado E2E y el manejo de medios — reconócelos y decide explícitamente si entran o no en el alcance.

2. Estimar la escala

Define las cifras que impulsan el diseño. Supón ~2.000 millones de usuarios y decenas de miles de millones de mensajes al día; eso son cientos de miles de mensajes por segundo en el pico, y cientos de millones de dispositivos conectados simultáneamente — la gestión de conexiones se convierte en un problema de primer orden.

3. Ruta de conexión y entrega

La mensajería necesita una conexión persistente, no un sondeo de solicitud/respuesta. Los dispositivos mantienen un WebSocket abierto hacia un servidor gateway. Un componente central debe saber qué gateway tiene actualmente la conexión de cada usuario para poder enrutar un mensaje al servidor correcto.

  • Gateway WebSocket: mantiene las conexiones activas de los dispositivos, gestiona el envío/recepción.
  • Registro de sesión/presencia: mapea usuario → servidor gateway actual (p. ej. en Redis), se actualiza al conectar/desconectar.
  • Enrutamiento de mensajes: el gateway del remitente busca el gateway del destinatario y reenvía; si está desconectado, el mensaje se encola.

4. Almacenamiento de mensajes y entrega sin conexión

Los mensajes deben sobrevivir a un destinatario desconectado. Persiste cada mensaje de forma durable y registra el estado de entrega por destinatario; entrega de inmediato si el destinatario está en línea, o almacénalo y reenvíalo cuando se reconecte.

Un patrón de acceso intensivo en escritura, con clave por conversación, favorece un almacén de columnas anchas como Cassandra (alto rendimiento de escritura, escalado horizontal) frente a una única base de datos relacional. Una vez que se confirma la entrega de un mensaje a todos los destinatarios, puede eliminarse o expirar, ya que WhatsApp no retiene los mensajes entregados en el servidor indefinidamente.

5. Chats grupales

La mensajería grupal es un fan-out: un envío se convierte en N entregas. Para tamaños de grupo típicos, el fan-out-on-write (empujar a la ruta de entrega de cada miembro) es simple y rápido de leer. Nota el compromiso: los grupos muy grandes hacen que el fan-out-on-write sea costoso, por lo que los grupos de difusión enormes son un problema de diseño distinto.

6. Compromisos que hay que verbalizar

Cierra con las tensiones: el orden (números de secuencia por conversación frente a un orden global), consistencia frente a disponibilidad para las confirmaciones (eventual está bien para 'última vez', más fuerte para la entrega), y fan-out-on-write frente a on-read para los grupos. Señalar esto explícitamente es lo que hace que la respuesta sea de nivel senior.

Practica el diseño de sistemas de WhatsApp con ayuda en tiempo real

El asistente de entrevistas de diseño de sistemas de Natively puede mantenerte estructurado durante una ronda en vivo, sugiriendo la siguiente dimensión a cubrir y mostrando los compromisos en tiempo real, todo en tu propio dispositivo.

Instálalo en tu propio equipo.

Un asistente para conversaciones en vivo que funciona en local. Nada sale de tu equipo.

macOS 12+ · Windows 10/11

© 2026 Natively AI Private Limited

Código fuente disponible bajo la Natively Personal Use Source License v1.0 · Geolocalización IP por DB-IP