GitHub, 5,000개 동시 에이전트와 초당 7,200회 푸시를 처리하는 새 Git 스토리지 아키텍처 공개
Inside GitHub’s new Git storage architecture
GitHub가 GitHub Universe에서 새 Git 스토리지 아키텍처를 발표했다. 내부 테스트에서 하나의 저장소에 5,000개의 동시 에이전트가 작업하며 초당 7,200회 푸시를 처리하면서도 읽기 트래픽을 일정한 낮은 지연 시간으로 제공할 수 있음을 보였다. 이 아키텍처는 초당 수천 건의 쓰기를 처리하고 읽기는 수요에 따라 확장되도록 설계됐다. 핵심 원칙은 조정(coordination)을 최소화하고 스토리지와 컴퓨트를 분리하는 것이다. Git 객체는 불변이고 내용으로 이름이 붙기 때문에 여러 작성자가 합의 없이 동시에 저장할 수 있으며, 합의가 필요한 부분은 크기가 작은 참조(reference) 업데이트뿐이다. 이를 위해 99.99999%의 저장소를 Azure로 옮기고, Azure Blob Storage 기반의 가상 레플리카를 구성했다. 개발자 입장에서 Git 사용 방식(push, fetch, branch)과 보호 설정은 그대로 유지된다. 기사는 설계 목표로 저장소 단위에서 현재 대비 최소 두 자릿수 높은 규모를 잡았다고 밝혔다. 가장 바쁜 GitHub.com 저장소도 현재는 한 번에 수십 건 수준의 쓰기를 받는다고 설명한다. 이 설계명은 'Project Rubicon'이며, 요청은 Spokes가 라우팅하고 가상 레플리카 집합이 읽기와 쓰기 데이터를 처리하는 구조다.
에이전트가 하나의 저장소에 대량으로 푸시하고 CI와 배포 시스템이 같은 커밋을 반복해서 가져오는 환경에서는, 초당 7,200회 푸시 같은 수치가 모노레포 운영 기준을 가늠하는 참고치가 된다.
원문 출처
GitHub Blog