Arquitetura real · Staff
Meta Threads: 100 milhões de usuários em 5 dias
Arquitetura real em produção. Pontos centrais: reuso da infraestrutura do Instagram e estimativa de capacidade.
Resposta curta
Arquitetura real em produção. Pontos centrais: reuso da infraestrutura do Instagram e estimativa de capacidade. O Threads foi lançado pela Meta em 5 de julho de 2023 e passou de cem milhões de cadastros nos cinco primeiros dias. A fonte deste caso é o texto de engenharia da própria Meta sobre a infraestrutura por trás desse lançamento.
01 · CONTEXTO
Um lançamento anunciado quase sem aviso
O Threads foi lançado pela Meta em 5 de julho de 2023 e passou de cem milhões de cadastros nos cinco primeiros dias. A fonte deste caso é o texto de engenharia da própria Meta sobre a infraestrutura por trás desse lançamento.
Uma equipe pequena construiu o produto em cerca de cinco meses de trabalho técnico, e as equipes de infraestrutura souberam da data com apenas dois dias de antecedência. Segundo o texto, a infraestrutura não foi feita sob medida para o Threads: vinha sendo construída para muitos produtos da empresa.
O texto destaca dois componentes: o ZippyDB, um armazém chave-valor distribuído, e o Async, uma plataforma de funções assíncronas. As próximas seções tratam de cada um.
Publicações e respostas do Threads vivem no TAO, apoiado em MySQL, que guarda o grafo social.
O ZippyDB, contraparte chave-valor do MySQL, guarda contadores, estado e ranqueamento de feed e busca.
O Async executa trabalhos que não precisam bloquear o usuário.
02 · CAPACIDADE
ZippyDB: duas alavancas para crescer rápido
O ZippyDB roda sobre um pool comum de hardware. Máquinas novas adicionadas ao serviço são absorvidas em poucas horas.
Mas aprovar e realocar capacidade de ponta a ponta ainda podia levar da ordem de um par de dias. A equipe também se apoiava em multilocação, que deixa keyspaces com demandas complementares compartilharem os mesmos hosts sem que um impacte o nível de serviço do outro.
Havia ainda folga no pool. Deslocar alocações não usadas entre keyspaces e deixar os hosts mais ocupados permite que um keyspace cresça quase de imediato e se sustente por um curto intervalo.
| Hardware novo | Folga existente | |
|---|---|---|
| Base | Pool comum de hardware | Alocações não usadas entre keyspaces |
| Velocidade | Absorvido em poucas horas | Crescimento quase imediato |
| Limite | Aprovação de capacidade pode levar da ordem de um par de dias | Sustentável por um curto intervalo |
03 · RESHARDING
Aumentar o número de shards sem parar os clientes
O protocolo de resharding do ZippyDB aumenta o fator de sharding (a escala horizontal) de um caso de uso sem indisponibilidade para os clientes. O desenho usa dois níveis: os clientes aplicam hash às chaves para shards lógicos, que são mapeados para um conjunto de shards físicos. É um exemplo de sharding de banco de dados.
Os clientes aplicam hash às chaves para shards lógicos, mapeados para os shards físicos do mapeamento original.
Quando o caso de uso cresce, provisiona-se um novo conjunto de shards físicos.
O novo mapeamento lógico-físico é instalado nos clientes por mudança de configuração ao vivo, sem indisponibilidade.
O resharding usa um modelo coordenador-trabalhador, e os executores movem atomicamente cada shard lógico do mapeamento original para o novo.
Ao migrar todos os shards lógicos, o resharding termina e o mapeamento original é removido.
O modelo coordenador-trabalhador foi desenhado para ser escalável na horizontal e permitir acelerar o resharding quando preciso, como no lançamento do Threads. Casos de uso novos costumam começar pequenos e passar por resharding conforme o crescimento exige; aqui, a equipe viu que precisava preparar o Threads para um crescimento de cem vezes fazendo resharding proativo.
O resharding terminou a tempo da abertura do tráfego, à meia-noite no horário do Reino Unido.
04 · TRABALHO ASSÍNCRONO
Async: seguir milhões de pessoas sem travar a entrada
O Async é a plataforma de funções serverless da Meta e consegue adiar computação para horários de menor uso. Os trabalhos típicos são os que não exigem bloquear um usuário ativo e podem rodar de alguns segundos a várias horas depois da ação.
No Threads, o Async permitiu que o novo usuário seguisse quem já seguia no Instagram. Executar esse seguimento via Async evita bloquear a entrada do usuário.
O novo usuário pede para seguir no Threads quem já segue no Instagram.
O pedido vira trabalho enfileirado no Async, o que evita bloquear a entrada do usuário.
Quando celebridades entraram, milhões de pessoas podiam ficar na fila para segui-las.
A execução é gerida dentro de limites de taxa para não sobrecarregar os serviços a jusante.
O Async ajusta o fluxo à própria capacidade e à de dependências como o banco do grafo, sem intervenção manual.
O volume de jobs superou em várias ordens de magnitude a expectativa inicial. Mesmo assim, o Async o absorveu, enfileirando-o para execução controlada, e as notificações correspondentes também passaram por ele.
05 · LIÇÕES
O que escalou sozinho e onde houve esforço
A fonte aponta uma infraestrutura compartilhada que resistiu ao teste do tempo e um alto grau de automação. Salvo o esforço para garantir capacidade com pouco aviso, redistribuição, balanceamento e escala de cargas ocorreram de forma automática e transparente.
| Como funcionou | Ponto de atenção | |
|---|---|---|
| Capacidade geral | Redistribuição, balanceamento e escala de cargas | Garantir capacidade com pouco aviso |
| Fila de jobs (Async) | Fluxo ajustado à capacidade, sem intervenção manual | Volume muito acima da expectativa inicial |
| ZippyDB | Troca de mapeamento de shards sem indisponibilidade | Preparar o Threads para um crescimento muito maior com resharding proativo |
Perguntas frequentes
O que é Meta Threads: 100 milhões de usuários em 5 dias?
Arquitetura real em produção. Pontos centrais: reuso da infraestrutura do Instagram e estimativa de capacidade.
O que o design de Meta Threads: 100 milhões de usuários em 5 dias cobre?
Ele está organizado nestas seções: Um lançamento anunciado quase sem aviso, ZippyDB: duas alavancas para crescer rápido, Aumentar o número de shards sem parar os clientes, Async: seguir milhões de pessoas sem travar a entrada e O que escalou sozinho e onde houve esforço.
Quanto tempo leva Meta Threads: 100 milhões de usuários em 5 dias e qual é o nível?
Leva cerca de 18 minutos para ler e tem nível Staff.
Agora projete você mesmo
Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.