HeadlinesBriefing HeadlinesBriefing.com

Infraestrutura Git em escala de agentes: migração para o

Hacker News •
×

Ao longo do último ano, à medida que o tráfego Git crescia de forma exponencial, quase todos os repositórios Git do GitHub passaram a existir em dois lugares ao mesmo tempo: os data centers próprios do GitHub e o Azure. Os repositórios mais movimentados continuam limitados por um único fator: um tempo de ida e volta de 25 ms entre regiões.

Em uma publicação anterior, o GitHub apresentou dois princípios por trás de sua arquitetura de armazenamento de próxima geração: minimizar a coordenação e desacoplar o armazenamento da computação. Esta publicação examina a ponte entre o design antigo e o novo. Uma mudança na forma como o quórum serializa as gravações levou os repositórios mais movimentados para o Azure, e essa mesma etapa abre caminho para réplicas que não mantêm estado persistente próprio.

O momento da migração foi impulsionado pela virada para agentes: tráfego crescendo rapidamente, um limite rígido na capacidade elétrica dos data centers do GitHub e da região ao redor, e restrições físicas na cadeia de suprimentos. A capacidade restante deu tempo suficiente para migrar com segurança, mas não para fazê-lo devagar. Como as operações Git são um serviço Tier 0 do qual quase tudo no GitHub depende, os dados precisavam se mover primeiro, com a arquitetura evoluindo depois que eles chegassem. A primeira cópia de um repositório chegou à região Central US do Azure em agosto de 2025. Hoje, a maioria dos repositórios tem duas de suas cinco réplicas no Azure, e o Azure atende cerca de metade do tráfego Git.

Os 0,00001% restantes dos repositórios apresentam um problema mais difícil. Na arquitetura atual, uma gravação aguarda a resposta de todas as réplicas saudáveis, de modo que a réplica mais lenta define tanto a latência quanto a taxa de transferência. Uma réplica na região-alvo do Azure fica a cerca de 1.600 km, e cada gravação exige múltiplas idas e voltas. A resposta está em minimizar a coordenação: os requisitos de consistência do Git se aplicam a cada referência individualmente, e atualizações de referências diferentes normalmente não dependem umas das outras, portanto não precisam ser serializadas.

Fonte: Hacker News · Resumido por HeadlinesBriefing