Компания OpenAI раскрыла подробности разработки новой бэкенд-системы для Git под названием Pando, созданной специально для поддержки массивного корпоративного монорепозитория (monorepo) и противодействия стремительному росту числа коммитов, генерируемых разработчиками и ИИ-агентами компании. Компания пояснила, что количество квартальных коммитов выросло более чем на 2400% по сравнению с первым кварталом 2024 года.
Новая система сократила время отклика при операциях отправки (pushes) примерно в пять раз, в то время как в настоящее время система обрабатывает почти один петабайт данных Git ежедневно. В ходе разработки, которая заняла 10 недель с использованием языка Rust и написанием значительной части кода с помощью агентов Codex, OpenAI решила сохранить совместимость со стандартным протоколом Git вместо создания совершенно новой клиентской системы и архитектуры с нуля, как это сделали другие компании, например Anthropic.
Как работает новая система Pando?
Pando преодолевает традиционные узкие места на серверах Git, отказываясь от двух основных предположений, которые традиционные серверы считают обязательными: она не поддерживает согласованное состояние для всех веток репозитория одновременно и не создает специализированные файлы пакетов (packfiles) для каждого отдельного клиента во время операций получения (fetches).
- Отмена глобальной координации: Система обрабатывает каждую ветку независимо, предотвращая ожидание операций push в несвязанных ветках из-за обновлений других веток.
- Проверка на лету и кэширование: Система проверяет файлы пакетов во время их потоковой передачи в облачное хранилище без их локальной распаковки, в то время как служба кэширования под названием Express осуществляет раздачу пакетов по сети с коэффициентом успешности более 99%.
- Фоновое сжатие (Compaction): Фоновые серверы постепенно объединяют мелкие пакеты в более крупные с течением времени способом, напоминающим базы данных с логированием (log-structured databases).
Открытый исходный код и ограничения
Помимо внутренней системы Pando, OpenAI пришлось исправить несколько дефектов в оригинальном клиенте Git, связанных с параллельной загрузкой пакетов и возобновлением прерванных передач. Компания отправила некоторые из этих исправления и другие дополнения, такие как параллельная индексация, в проект с открытым исходным кодом, в то время как бэкенд-система Pando на данный момент остается с закрытым исходным кодом.