OpenAI의 Git 확장: Pando 소개
OpenAI는 저장소 전체의 일관성을 분리하고 팩파일(packfile)을 재사용함으로써 높은 동시성 개발을 지원하도록 설계된 새로운 수평적 확장 가능 Git 백엔드인 Pando를 개발했습니다. 기존의 3단계 커밋 및 선행 기록 로그(write-ahead log) 패턴에서 벗어남으로써, Pando는 중앙값 푸시 지연 시간을 거의 80% 단축했으며 현재 하루에 거의 1페타바이트의 Git 데이터를 처리하면서도 표준 Git 클라이언트와의 완전한 호환성을 유지하고 있습니다.
Pando의 개발 동기
OpenAI에서 Codex를 도입하면서 동시 브랜치, 푸시, 페치 작업의 양이 크게 증가했고, 기존 소스 제어 인프라는 한계에 다다랐습니다. 이메일 기반 패치 교환의 역사에서 발전한 기존 Git 서버는 현대적인 자동화 워크플로우의 규모를 감당하기 어려웠습니다. OpenAI는 잦은 페치 지연, 병합 실패, 신뢰성 문제에 직면했으며, 기존 엔지니어링 워크플로우를 방해하지 않으면서 대규모 병렬 쓰기와 고처리량 읽기를 처리할 수 있는 시스템이 필요했습니다.
아키텍처 원칙
Pando는 일반적으로 Git 성능을 제한하는 기존의 제약 조건을 완화하여 확장성을 달성합니다:
- 인과적 일관성(Causal Consistency): 전역 조정이 필요한 저장소 전체의 일관성을 강제하는 대신, Pando는 인과적 일관성을 사용합니다. 이를 통해 관련 없는 브랜치에 대한 푸시가 병렬로 진행될 수 있습니다. 클라이언트는 개별 참조에 대해서는 직렬화 가능한 기록을 보지만, 저장소 전체적으로는 서로 다른 시점을 관찰할 수 있습니다.
- 팩파일 재사용: 기존 Git 서버는 종종 클라이언트의 로컬 기록을 기반으로 고유한 팩파일을 생성합니다. Pando는 들어오는 팩파일을 변경 불가능한 블롭(blob)으로 저장하고 이를 읽기 작업에 직접 제공합니다. 이는 비용이 많이 드는 즉석 계산의 필요성을 없애고, 동일한 데이터를 많은 클라이언트에 동시에 제공함으로써 시스템이 네트워크 대역폭을 최대한 활용할 수 있게 합니다.
기술적 구현
Pando는 푸시, 페치, 백그라운드 압축이라는 세 가지 주요 서비스를 통해 작동합니다.
푸시 확장
클라이언트가 푸시할 때, Pando는 팩파일을 단일 패스로 검증하고 수평적으로 확장 가능한 블롭 저장소로 스트리밍합니다. 그런 다음 다중 키 트랜잭션을 사용하여 메타데이터 저장소에 "참조 버전(ref version)"을 기록합니다. 광고되는 참조 세트를 제한함으로써, Pando는 클라이언트가 다른 사용자와 더 쉽게 공유하고 재사용할 수 있는 팩파일을 생성하도록 보장하며, 브랜치 수에 관계없이 광고 크기를 일정하게 유지합니다.
라인 속도 페치(Line-Rate Fetching)
페치 작업은 Git 프로토콜의 have와 want를 참조 버전 시퀀스에 매핑하여 최적화됩니다. Pando는 OpenAI가 업스트림 개선을 도운 packfile-uri 기능을 사용하여 캐시된 팩파일에 대한 링크를 반환합니다. 이를 통해 클라이언트는 지역 캐시에서 데이터를 다운로드할 수 있으며, 10 Gbps 네트워크 링크를 포화시키는 처리량을 달성합니다.
압축(Compaction)
수천 개의 작은 팩파일을 관리하는 오버헤드를 방지하기 위해, Pando는 로그 구조 병합 트리(log-structured merge-trees)와 유사한 백그라운드 압축 프로세스를 사용합니다. 이 프로세스는 팩파일을 기하학적 "커버(covers)"(L0에서 L4)로 그룹화합니다. 이러한 커버는 압축률을 향상시키고 시스템이 로그 시간 내에 페치 계획을 수행할 수 있게 하여, 저장소가 커져도 성능이 안정적으로 유지되도록 합니다.
개발 및 배포
Pando는 Rust를 사용하여 10주 만에 구축되었으며, AI 에이전트의 도움을 크게 받았습니다. 팀은 Lean 및 TLA+를 포함한 형식 검증 방법을 사용하여 시스템 속성을 증명하고 엣지 케이스를 식별했습니다. 이 시스템은 처음에 읽기/쓰기 통과 프록시로 작동하도록 배포되어 가동 중단 없이 기존 워크플로우를 원활하게 마이그레이션할 수 있었습니다.
OpenAI는 특히 packfile-uri 성능, 동시 다운로드, 페치 작업을 위한 더 나은 추적과 관련된 영역에서 업스트림 Git 프로젝트에 개선 사항을 계속 기여하고 있습니다. 팀은 현재 Pando 기술을 더 넓은 개발자 커뮤니티와 공유할 방법을 모색 중입니다.
Sources
- OriginalScaling Git at OpenAI