OpenAI ha creato Pando, un nuovo backend per i repository Git, per gestire l’aumento dello sviluppo parallelo reso possibile da Codex. Il sistema alimenta ora tutte le attività di sviluppo nel monorepo dell’azienda ed è stato introdotto senza interrompere il lavoro degli ingegneri né modificare il modo in cui il personale usa Git.
OpenAI afferma che Pando è stato progettato per supportare push simultanei su branch diversi e fornire rapidamente i dati del repository a molti lettori. In produzione, ha ridotto di quasi cinque volte la latenza mediana dei push e distribuisce ogni giorno quasi un petabyte di dati Git.
Secondo l’azienda, la crescente attività di sviluppo ha comportato un aumento di branch, push, merge, fetch e clone provenienti dagli ambienti di ingegneria, dai job di ricerca e dalla CI. I precedenti sistemi dell’azienda per il monorepo hanno iniziato a mostrare difficoltà verso la fine dello scorso anno, con operazioni lente, merge falliti e un’affidabilità che a volte scendeva sotto il 90%.
Pando mantiene la compatibilità con il protocollo e il client Git. La sua architettura consente agli aggiornamenti di branch non correlati di procedere in modo indipendente e riutilizza i packfile archiviati tra i fetch, invece di generarne uno separato per ogni client. Ciò può comportare che un client scarichi alcuni oggetti che già possiede, ma riduce il calcolo necessario per fornire gli stessi dati a molti lettori.
L’architettura archivia i packfile in entrata nel blob storage e registra le versioni dei branch in un archivio di metadati. Durante un fetch, Pando seleziona i pack archiviati di cui un client ha bisogno, mentre un servizio separato, chiamato Express, li distribuisce tramite cache regionali. OpenAI afferma che questo approccio evita di dover scompattare e ricompattare i dati sui server in repository locali a ogni operazione.
Pando utilizza la coerenza causale, anziché fornire un’unica vista di tutti i branch del repository riferita a un preciso istante. Gli aggiornamenti di un singolo branch restano serializzabili, ma i client che leggono più branch potrebbero visualizzarli in momenti diversi. OpenAI afferma che questo compromesso consente agli aggiornamenti di branch non correlati di evitare la contesa su un punto di coordinamento a livello di repository.
L’azienda afferma che le simulazioni e i test condotti sul suo monorepo hanno dimostrato che Pando è in grado di gestire molte migliaia di client simultanei senza un calo delle prestazioni sotto carico. OpenAI intende inoltre continuare a contribuire al miglioramento di Git e afferma che il mantenimento della compatibilità consente a ingegneri e agenti di adottare il sistema attraverso i flussi di lavoro esistenti.
Fonti: OpenAI News.