Git을 객체 스토리지에서 구동하려면 팩파일 재설계가 필수
Key Point
Git을 객체 스토리지에서 효율적으로 구동하기 위해 팩파일 구조를 근본적으로 재설계한 사례로, 마이크로서비스 아키텍처와 클라우드 네이티브 환경에서 Git 기반 인프라를 구축하는 방식이 달라질 수 있음을 시사합니다.
핵심 요약
- Git 저장소를 객체 스토리지 위에서 구동하는 오픈소스 프로젝트 개발 중이며, 처음엔 파일시스템 추상화 계층을 사용했으나 대규모 저장소에서 성능 문제 발생.
- Git의 팩파일은 로컬 스토리지와 mmap을 전제로 설계돼 있어서, 네트워크 왕복 지연(최소 10ms)이 파일시스템 캐시(10ns)보다 백만 배 느린 것이 병목.
- 객체 스토리지에 최적화된 새로운 팩파일 포맷을 칼럼형 저장소로 구현했고, 클라이언트 수정 없이 Linux 커널 같은 대규모 저장소(1천1백만 개 객체)에서도 효과적으로 동작하도록 해결.