Arquitetura de software · Estudos de caso · 8 min de leitura
Estudo de caso: o feed de uma rede social
Montar a linha do tempo de milhões de pessoas: distribuir na escrita (fan-out) ou na leitura, e o caso especial das celebridades.
Arraste para o lado para ver o diagrama inteiro.
Duas estratégias
- Fan-out na escrita (push): ao publicar, o ID do post é inserido na linha do tempo em cache de cada seguidor. Leitura instantânea; escrita cara para quem tem muitos seguidores.
- Fan-out na leitura (pull): ao abrir o app, busca-se os posts recentes de quem a pessoa segue e ordena-se na hora. Escrita barata; leitura pesada.
O híbrido
Use push para a maioria das contas e pull para as poucas com milhões de seguidores, misturando na leitura. Só guarde IDs nas linhas do tempo (os posts vêm de um cache próprio) e limite cada linha do tempo às últimas centenas de itens. Usuários inativos não precisam receber fan-out — monte o feed quando voltarem.
Ranking e o resto
Feeds modernos não são só cronológicos: um serviço de ranking pontua candidatos por relevância (interações, afinidade, recência) com modelos de recomendação. Contadores de curtidas são agregados de forma assíncrona; mídias vêm de armazenamento de objetos pela CDN; e o grafo social (quem segue quem) costuma ter seu próprio armazenamento otimizado.
Em resumo
- Push: leitura rápida, escrita cara.
- Pull: escrita barata, leitura cara.
- Híbrido: pull só para celebridades.
- Linha do tempo guarda IDs; ranking à parte.