Entrevista de Design de Sistemas: Conceba o Twitter

"Conceba o Twitter" é o problema canónico de geração de feed. Parece simples — publicar um tweet, ler uma timeline — mas a parte interessante é gerar a timeline principal de cada utilizador à escala, onde a resposta certa é uma estratégia de fan-out híbrida. O entrevistador quer ver-te a descobrir que ambas as abordagens ingénuas falham, e a raciocinar até chegar à mistura.

Avance deliberadamente: esclareça os requisitos, estime a proporção leitura/escrita, conceba o armazenamento de tweets, depois a timeline — comparando fan-out-on-write com fan-out-on-read e chegando ao híbrido que trata o problema das celebridades. O guia abaixo segue esse percurso.

1. Esclarecer os requisitos

Limite-se ao problema central do feed. Os utilizadores publicam tweets, seguem outros, e leem uma timeline principal que agrega os tweets de todos os que seguem, do mais recente para o mais antigo.

  • Funcional: publicar um tweet, seguir/deixar de seguir, timeline principal (pessoas que segue), timeline de utilizador (um autor); pesquisa básica fora do âmbito a menos que solicitada.
  • Não funcional: muito intensivo em leitura, leituras de timeline de baixa latência, elevada disponibilidade; a consistência eventual para a timeline é aceitável.
  • A esclarecer: media, respostas/threads e ranking — reconheça-os, e delimite um feed cronológico para esta entrevista.

2. Estimar a escala e a proporção leitura/escrita

A proporção orienta todo o design. As leituras superam largamente as escritas — os utilizadores percorrem a sua timeline muito mais vezes do que publicam. Com centenas de milhões de utilizadores, o sistema tem de tornar as leituras de timeline económicas, mesmo que isso torne as escritas mais dispendiosas. Esta única observação apunta para o pré-cálculo das timelines.

3. Armazenamento de tweets

Os tweets em si são dados simples, intensivos em acréscimo (append). Armazene-os num armazenamento particionado horizontalmente, com chave pelo ID do tweet (com um ID ordenável no tempo, como um Snowflake ID, para que a ordenação já venha incorporada). Um armazenamento separado para o grafo social guarda as relações de seguidores/seguidos.

  • Tweets: armazenamento distribuído, particionado por ID do tweet; IDs ordenáveis no tempo dão uma ordenação cronológica económica.
  • Grafo social: quem segue quem, otimizado para 'obter todos os seguidores de X' e 'obter todos os que X segue'.
  • Uma cache (Redis) guarda dados quentes — tweets recentes e timelines pré-calculadas.

4. Geração da timeline: fan-out na escrita vs na leitura

Este é o cerne do problema. Fan-out-on-write (push) insere cada novo tweet na lista de timeline pré-calculada de cada seguidor no momento da publicação — as leituras da timeline tornam-se uma consulta de cache económica, mas uma publicação de alguém com milhões de seguidores desencadeia milhões de escritas. Fan-out-on-read (pull) constrói a timeline no momento da leitura, agregando os tweets recentes de todos os que segue — escritas económicas, mas leituras lentas e dispendiosas para utilizadores que seguem muitas contas.

  • Fan-out-on-write: leituras rápidas, escritas dispendiosas; ótimo para utilizadores normais.
  • Fan-out-on-read: escritas económicas, leituras dispendiosas; necessário para contas com um número enorme de seguidores.

5. O problema das celebridades e o híbrido

Nenhuma abordagem pura vence, por isso combine-as. Use fan-out-on-write para a grande maioria dos utilizadores, mas para contas 'celebridade' com um número de seguidores muito grande, NÃO faça fan-out dos seus tweets na escrita. Em vez disso, no momento da leitura, agregue a timeline pré-calculada de um seguidor com uma consulta em direto às poucas celebridades que segue. Isto limita a amplificação de escrita mantendo as leituras rápidas — a resposta que os entrevistadores esperam ouvir.

6. Trade-offs a verbalizar

Termine com as tensões: amplificação de escrita versus latência de leitura (toda a decisão de fan-out), o custo de armazenamento das timelines pré-calculadas versus recalculá-las, e a consistência — alguns segundos de atraso antes de um tweet aparecer nas timelines dos seguidores é aceitável, pelo que a consistência eventual permite escalar. Declarar explicitamente o limiar do híbrido (como classifica uma 'celebridade') demonstra discernimento sénior.

Pratique o design de sistemas do Twitter 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