OpenAI hat Pando entwickelt, ein neues Backend für Git-Repositories, um das gestiegene Volumen paralleler Entwicklung zu bewältigen, das Codex ermöglicht. Das System unterstützt inzwischen die gesamte Entwicklung im Monorepo des Unternehmens und wurde eingeführt, ohne die Arbeit der Entwickler zu unterbrechen oder zu ändern, wie die Mitarbeiter Git verwenden.
OpenAI zufolge wurde Pando dafür konzipiert, gleichzeitige Pushes auf verschiedene Branches zu unterstützen und Repository-Daten vielen Lesern schnell bereitzustellen. Im Produktivbetrieb hat es die mediane Push-Latenz um nahezu das Fünffache gesenkt und liefert täglich fast ein Petabyte an Git-Daten aus.
Das Unternehmen erklärt, dass die zunehmende Entwicklungsaktivität zu mehr Branches, Pushes, Merges, Fetches und Klonen aus Entwicklungsumgebungen, Forschungsjobs und CI geführt habe. Gegen Ende des vergangenen Jahres seien die bisherigen Monorepo-Systeme zunehmend an ihre Grenzen gestoßen: mit langsamen Vorgängen, fehlgeschlagenen Merges und einer Zuverlässigkeit, die zeitweise unter 90 % lag.
Pando bleibt mit dem Git-Protokoll und dem Git-Client kompatibel. Sein Design ermöglicht es, Aktualisierungen nicht zusammenhängender Branches unabhängig voneinander vorzunehmen. Außerdem werden gespeicherte Packfiles bei Fetches wiederverwendet, statt für jeden Client ein eigenes Packfile zu erzeugen. Das kann dazu führen, dass ein Client einige Objekte herunterlädt, die er bereits besitzt, verringert jedoch den Rechenaufwand, um dieselben Daten vielen Lesern bereitzustellen.
Die Architektur speichert eingehende Packfiles im Blob-Speicher und hält Branch-Versionen in einem Metadatenspeicher fest. Bei einem Fetch wählt Pando die gespeicherten Packs aus, die ein Client benötigt; ein separater Dienst namens Express stellt sie über regionale Caches bereit. Laut OpenAI entfällt bei diesem Ansatz die Notwendigkeit, dass Server für jeden Vorgang Daten auspacken und in lokale Repositories neu packen.
Pando verwendet kausale Konsistenz, statt für jeden Branch im gesamten Repository eine einheitliche Momentaufnahme bereitzustellen. Aktualisierungen eines einzelnen Branches bleiben serialisierbar, doch Clients, die mehrere Branches lesen, können diese zu unterschiedlichen Zeitpunkten sehen. OpenAI zufolge ermöglicht dieser Kompromiss, dass Aktualisierungen nicht zusammenhängender Branches keinen repositoryweiten Koordinationspunkt beanspruchen müssen.
Das Unternehmen erklärt, Simulationen und Tests mit seinem Monorepo hätten gezeigt, dass Pando viele Tausend gleichzeitige Clients ohne Leistungseinbußen unter Last bewältigen könne. OpenAI plant außerdem, weiterhin Verbesserungen zu Git beizutragen. Die Kompatibilität ermögliche es Entwicklern und Agenten, das System über bestehende Arbeitsabläufe einzuführen.
Quellen: OpenAI News.