Ir para o conteúdo principal
Voltar aos artigos

Rubicon, do GitHub: consenso nos ponteiros, paralelismo nos objetos

A nova arquitetura Git separa objetos imutáveis, referências e manutenção. A lição é reduzir o estado que precisa de coordenação.

·3 min de leitura·4 visualizações

O GitHub detalhou o Project Rubicon, uma nova arquitetura de armazenamento Git que, em testes internos, sustentou 5.000 agentes concorrentes e 7.200 pushes por segundo em um repositório.[7] O projeto estava em prévia privada limitada, com expansão planejada para o início de 2027.[7] Mais útil que repetir o benchmark é entender qual parte do problema a empresa decidiu coordenar.

O que muda para quem desenvolve

Rubicon separa objetos Git imutáveis do estado mutável das referências.[7] Packs e estruturas auxiliares ficam no Azure Blob Storage, enquanto referências e o manifesto de packs ficam no Ref-CAS, um serviço de log replicado.[7] Na escrita, o pack torna-se durável antes da transação que publica as referências.[7]

O Ref-CAS usa compare-and-swap com quórum e bloqueia somente as referências tocadas pela transação.[7] Branches independentes podem avançar em paralelo, enquanto atualizações concorrentes da mesma referência precisam de arbitragem.[7] Essa é a lição reaproveitável: não colocar todos os dados atrás do mesmo ponto de serialização quando apenas uma pequena parte exige acordo.

As réplicas virtuais são descartáveis e seu disco funciona como cache.[7] A manutenção também sai do caminho principal: workers compactam packs e verificam a preservação dos objetos antes de publicar o resultado.[7] Atendimento e manutenção passam a ter recursos e ritmos próprios.

Como aplicar

Em uma automação com vários agentes, experimente tarefas em branches independentes e mantenha a integração como etapa explícita. Compare o tempo gasto escrevendo objetos com o tempo de espera para integrar mudanças. Não aumente concorrência sem saber onde está a fila.

Para estudar o princípio em outro sistema, modele um catálogo de versões com blobs imutáveis e um ponteiro para a versão atual. Faça a gravação do blob antes da atualização condicional do ponteiro. Simule dois escritores e exija que apenas a atualização compatível com a versão esperada seja aceita.

Observe separadamente publicação, leitura e coleta de dados antigos. O objetivo desse experimento não é reproduzir a infraestrutura do GitHub, mas tornar verificável a diferença entre armazenar conteúdo e decidir qual conteúdo está vigente.

Cuidados e limites

O artigo relata que uma tentativa de manter todo o estado de referências em um único blob limitou a escrita, enquanto dividir em vários blobs prejudicava a leitura por exigir consultas a múltiplos segmentos.[7] Não existe uma escolha de particionamento gratuita: o padrão de acesso decide qual custo importa.

Os números divulgados são resultados do fornecedor, não garantia para qualquer repositório.[7] Recursos como trabalho sem clone completo e API de commit atômico multifile aparecem como planos.[7] E mesmo armazenamento mais rápido não é argumento suficiente para multiplicar agentes: meça também revisão, CI e integração antes de chamar mais concorrência de produtividade.

Fonte

[7] Fonte: GitHub Blog

Continue lendo