A OpenAI substituiu o backend que atende seu gigantesco repositório de código-fonte por um novo sistema chamado Pando, e a empresa afirma que a mudança tornou os envios de código muito mais rápidos e confiáveis. O Pando agora cuida de todo o desenvolvimento no monorepo da OpenAI, e reduziu a latência mediana de envio em quase cinco vezes.
O problema começou com o Codex. A empresa diz que suas ferramentas de programação mudaram o ritmo de trabalho em toda a companhia, permitindo que engenheiros executem muitas tarefas ao mesmo tempo. Isso significa mais branches, mais envios, mais merges e um fluxo constante de fetches e clones vindos de ambientes de desenvolvimento, trabalhos de pesquisa e sistemas de integração contínua. Cada envio também pode acionar vários trabalhos que buscam o mesmo commit simultaneamente.
Por que a OpenAI substituiu seu backend Git?
Por volta do fim do ano passado, os sistemas por trás do monorepo começaram a sobrecarregar. Os engenheiros notaram fetches e envios lentos e merges com falha. Em alguns momentos, a confiabilidade caiu abaixo de 90 por cento. A equipe precisou descobrir se havia atingido um limite do próprio Git ou um limite na forma como a OpenAI servia seu repositório.
Por que os designs existentes ficaram aquém
Os engenheiros da OpenAI avaliaram duas formas comuns de escalar o Git. A primeira, uma abordagem de commit em três fases, mantém uma cópia completa do repositório em várias réplicas. Um envio precisa ser aceito por uma maioria dessas réplicas antes de ser publicado, o que exige várias rodadas de comunicação. Os engenheiros constataram que essa abordagem coloca o desempenho do disco e a latência da rede diretamente no caminho do envio, de modo que os atrasos de escrita crescem conforme o volume aumenta.
A segunda abordagem ordena todas as atualizações por meio de um log de escrita antecipada compartilhado, armazenado em blob storage. Envios para branches não relacionados ainda precisam atualizar o mesmo manifesto, o que cria um gargalo. Acrescentar capacidade de armazenamento, por si só, não resolveu o problema. As réplicas também precisavam ler e indexar os packs antes de poder servi-los, e quando as escritas superavam esse trabalho, os clientes esperavam mais tempo para buscar novos commits.
Como o Pando lida com envios e buscas
Por que a OpenAI escolheu a consistência causal para o Pando?
O Pando segue um caminho diferente. Ele relaxa o modelo de consistência, de modo que o sistema não oferece mais uma visão única, em um determinado momento, de todos os branches. Em vez disso, usa consistência causal. Cada branch é atualizado de forma independente, e envios para branches não relacionados podem ocorrer em paralelo. Quem observa vários branches pode vê-los em momentos diferentes, mas a empresa afirma que usuários e agentes se importam principalmente com a ordem das atualizações em um único branch.
Como o Pando lida com envios e buscas?
Quando um cliente envia código, o Pando transmite o packfile recebido para o blob storage e o valida em uma única passagem. Ele não descompacta os arquivos em um repositório local. Em seguida, o sistema registra uma nova versão do branch em um armazenamento de metadados e atualiza o ponteiro do branch em uma única transação. Isso permite que o cliente leia imediatamente a própria gravação.
O Pando também reutiliza packfiles, os pacotes compactados que o Git usa para transferir objetos. Em vez de montar um pack personalizado para cada cliente, o servidor pode enviar os mesmos bytes armazenados a muitos leitores. Um processo em segundo plano combina packs pequenos em packs maiores ao longo do tempo, de forma semelhante à compactação em árvores log-structured merge. O Pando atende buscas por meio de URIs de packfile, e uma camada de cache entrega os arquivos a partir de caches regionais. A OpenAI relata taxas de acerto de cache acima de 99 por cento. Em testes com máquinas virtuais padrão de nuvem, as operações de clone e fetch saturaram links de rede de 10 gigabits.
Para manter os envios pequenos, o Pando anuncia por padrão apenas um branch troncal designado. A empresa afirma que esse compromisso funciona para seu monorepo. O packfile mediano produzido dessa forma ficou abaixo de 20 KiB, e o 99º percentil ficou abaixo de 3 MiB.
Construído rapidamente, com amplo uso de IA
A OpenAI diz que construiu o Pando em 10 semanas, do início à produção. O projeto central veio de um único engenheiro. Equipes de agentes implementaram grande parte do sistema, e um punhado de engenheiros o implantou. O Pando começou a atender o tráfego de produção em abril.
A equipe escreveu o sistema em Rust e criou um conjunto de testes de conformidade para que os agentes pudessem verificar suas mudanças em relação ao comportamento padrão do Git. Também usou testes de simulação determinística para encontrar condições de corrida. Agentes escreveram especificações formais em Lean e TLA+ para verificar propriedades do design, afirmou a empresa.
A implantação ocorreu em etapas. O Pando primeiro funcionou como um proxy de leitura e escrita à frente do sistema antigo, mantendo os dois sincronizados. Depois, as equipes migraram uma por vez, sem interrupção do serviço. A OpenAI também distribuiu sua versão pública do Git para as máquinas dos desenvolvedores e o aplicativo de desktop do ChatGPT, e usou um wrapper interno em torno da linha de comando do Git para migrar os clientes em fases. Centenas de integrações que dependiam de APIs antigas, webhooks e downloads de repositórios foram migradas junto com o tráfego Git.
A empresa afirma que os resultados incluem maior confiabilidade nos merges e uma redução da latência mediana de envio de quase 80 por cento. Hoje, o Pando entrega quase um petabyte de dados Git por dia usando apenas um punhado de núcleos de CPU. Em uma hora, serviu mais de 57 terabytes de packs Git, com mais de 99 por cento desses bytes vindos do cache de disco local.
A OpenAI também informou que devolveu correções ao projeto Git de código aberto. O trabalho de download e indexação de packs revelou problemas com downloads simultâneos e transferências interrompidas, e a empresa disse ter contribuído com essas correções para o projeto original, junto com uma opção chamada explicit haves, que oferece suporte a force pushes mais eficientes. Algumas das mudanças já estão no Git upstream, e outras estão no repositório público da OpenAI. A empresa também está explorando se o Pando poderia dar suporte a cargas de trabalho em que muitos agentes colaboram em um único repositório Git.
Este artigo foi escrito com a assistência de IA.
News Factory APP - notícias agênticas para impulsionar seu SEO e AEO.