Entrevista de Design de Sistemas: Conceba o WhatsApp

"Conceba o WhatsApp" testa a entrega em tempo real a uma escala massiva, o armazenamento duradouro de mensagens, a presença (online/visto por último) e o problema de gestão de ligações de manter centenas de milhões de dispositivos ativos. Como sempre, o entrevistador quer o seu raciocínio e os seus trade-offs, não uma cópia do sistema real.

Avance de forma metódica: esclareça os requisitos, estime a escala, conceba o percurso de ligação e entrega, decida como as mensagens são armazenadas, e depois trate o chat em grupo e os casos difíceis, como a entrega offline e a ordenação. O guia abaixo segue esse percurso.

1. Esclarecer os requisitos

Defina primeiro o âmbito. O núcleo é a mensagem um para um com entrega fiável; esclareça se o chat em grupo, os media e a encriptação de ponta a ponta fazem parte do âmbito desta ronda.

  • Funcional: enviar/receber mensagens, confirmações de entrega e leitura, presença online, chat em grupo, entrega offline quando um destinatário está desligado.
  • Não funcional: baixa latência, elevada disponibilidade, durabilidade (nenhuma mensagem perdida), ordenação dentro de uma conversa.
  • A esclarecer: encriptação E2E e tratamento de media — reconheça-os e decida explicitamente se entram ou não no âmbito.

2. Estimar a escala

Defina os números que orientam a conceção. Suponha ~2 mil milhões de utilizadores e dezenas de milhares de milhões de mensagens por dia; isto equivale a centenas de milhares de mensagens por segundo no pico, e centenas de milhões de dispositivos ligados em simultâneo — a gestão de ligações passa a ser um problema de primeira ordem.

3. Percurso de ligação e entrega

As mensagens precisam de uma ligação persistente, não de polling de pedido/resposta. Os dispositivos mantêm um WebSocket aberto com um servidor gateway. Um componente central tem de saber qual o gateway que detém atualmente a ligação de cada utilizador, para que uma mensagem possa ser encaminhada para o servidor correto.

  • Gateway WebSocket: mantém as ligações ativas dos dispositivos, trata do envio/receção.
  • Registo de sessão/presença: mapeia o utilizador para o servidor gateway atual (por ex., no Redis), atualizado ao ligar/desligar.
  • Encaminhamento de mensagens: o gateway do remetente procura o gateway do destinatário e reencaminha; se este estiver offline, a mensagem é colocada em fila de espera.

4. Armazenamento de mensagens e entrega offline

As mensagens têm de sobreviver a um destinatário desligado. Persista cada mensagem de forma duradoura e acompanhe o estado de entrega por destinatário; entregue de imediato se o destinatário estiver online, ou armazene e reencaminhe quando ele se voltar a ligar (store-and-forward).

Um padrão de acesso intensivo em escrita, com chave por conversa, favorece um armazenamento de colunas largas como o Cassandra (elevado throughput de escrita, escala horizontal) em vez de uma única base de dados relacional. Quando a entrega de uma mensagem é confirmada para todos os destinatários, pode ser eliminada ou deixada expirar, já que o WhatsApp não retém mensagens entregues no servidor indefinidamente.

5. Chat em grupo

As mensagens em grupo são um fan-out: um envio transforma-se em N entregas. Para tamanhos de grupo típicos, o fan-out-on-write (empurrar para o percurso de entrega de cada membro) é simples e rápido de ler. Note o trade-off — grupos muito grandes tornam o fan-out-on-write dispendioso, razão pela qual grupos de difusão enormes constituem um problema de design diferente.

6. Trade-offs a verbalizar

Termine com as tensões: ordenação (números de sequência por conversa versus ordenação global), consistência versus disponibilidade para as confirmações (a consistência eventual é aceitável para 'visto por último', mais forte para a entrega), e fan-out-on-write versus on-read para grupos. Afirmar isto explicitamente é o que torna a resposta de nível sénior.

Pratique o design de sistemas do WhatsApp com ajuda em tempo real

O assistente de entrevistas de design de sistemas da Natively pode ajudá-lo a manter-se estruturado durante uma ronda em direto — sugerindo a próxima dimensão a abordar e mostrando os trade-offs em tempo real, tudo no seu próprio dispositivo.

Put it on your own machine.

A live-conversation assistant that runs locally. Nothing leaves your machine.

macOS 12+ · Windows 10/11

© 2026 Natively AI Private Limited

Source-available under the Natively Personal Use Source License v1.0 · IP geolocation by DB-IP