OpenAI a créé Pando, un nouveau backend pour les dépôts Git, afin de gérer l’augmentation du volume de développement parallèle rendue possible par Codex. Le système alimente désormais l’ensemble du développement dans le monorepo de l’entreprise et a été mis en place sans interrompre le travail des équipes d’ingénierie ni modifier leur façon d’utiliser Git.

OpenAI indique que Pando a été conçu pour prendre en charge des pushs simultanés vers différentes branches, tout en fournissant rapidement les données du dépôt à de nombreux lecteurs. En production, il a réduit la latence médiane des pushs de près de cinq fois et fournit près d’un pétaoctet de données Git chaque jour.

Selon l’entreprise, l’intensification de l’activité de développement a entraîné une hausse du nombre de branches, de pushs, de fusions, de fetchs et de clones provenant des environnements d’ingénierie, des tâches de recherche et de l’intégration continue (CI). Vers la fin de l’année dernière, ses anciens systèmes de monorepo ont commencé à montrer leurs limites, avec des opérations lentes, des fusions qui échouaient et une fiabilité qui passait parfois sous la barre des 90 %.

Pando reste compatible avec le protocole et le client Git. Sa conception permet aux mises à jour de branches sans lien entre elles de s’effectuer indépendamment, tout en réutilisant les fichiers pack stockés lors des fetchs, au lieu d’en générer un distinct pour chaque client. Un client peut ainsi télécharger certains objets qu’il possède déjà, mais cette méthode réduit les calculs nécessaires pour fournir les mêmes données à de nombreux lecteurs.

L’architecture stocke les fichiers pack entrants dans un stockage d’objets blob et enregistre les versions des branches dans un magasin de métadonnées. Lors d’un fetch, Pando sélectionne les packs stockés dont un client a besoin, tandis qu’un service distinct, appelé Express, les distribue via des caches régionaux. OpenAI indique que cette méthode évite aux serveurs de devoir décompresser et recompresser les données dans des dépôts locaux à chaque opération.

Pando utilise la cohérence causale plutôt que de fournir une vue unique, à un instant donné, de toutes les branches du dépôt. Les mises à jour d’une branche individuelle restent sérialisables, mais les clients qui lisent plusieurs branches peuvent les voir à des moments différents. OpenAI affirme que ce compromis permet aux mises à jour de branches sans lien entre elles d’éviter de se disputer l’accès à un point de coordination à l’échelle du dépôt.

L’entreprise affirme que les simulations et les tests effectués sur son monorepo ont montré que Pando pouvait gérer plusieurs milliers de clients simultanés sans dégradation des performances sous charge. OpenAI prévoit également de continuer à contribuer à l’amélioration de Git, estimant que le maintien de la compatibilité permet aux ingénieurs et aux agents d’adopter le système au moyen des flux de travail existants.

Sources: OpenAI News.