Devlery
Blog/Anthropic

하루 머지 3만 건에 git을 버린 Anthropic, Scion은 코드 없이 설계만 공개

Anthropic이 10월 13일 모노레포를 git에서 자체 버전 관리 시스템 Scion으로 옮긴 과정을 공개했습니다. 하루 머지가 5월 2,500건에서 9월 3만 건으로 늘자 미러 수백 대로 버티던 방식을 접었고, 코드는 오픈소스로 내지 않습니다.

하루 머지 3만 건에 git을 버린 Anthropic, Scion은 코드 없이 설계만 공개
AI 요약
  • Anthropic이 모노레포를 git에서 자체 시스템 Scion으로 옮겼습니다.
  • 하루 머지가 5월 2,500건에서 9월 30,401건으로 늘어난 뒤입니다.
  • Scion은 오픈소스로 나오지 않고, 공개된 것은 설계뿐입니다.

Anthropic이 2026년 10월 13일 엔지니어링 블로그에 사내 모노레포의 버전 관리를 git에서 자체 시스템 Scion으로 옮겼다고 밝혔습니다. 7명이 5개월 만에 끝냈습니다. 버전 관리 시스템은 코드가 언제 어떻게 바뀌었는지를 보관하고 여러 사람의 수정을 하나로 합쳐주는 소프트웨어입니다. 지난 15년 동안 그 자리는 사실상 git 하나였습니다.

바뀐 것은 코드를 쓰는 쪽입니다. Anthropic 모노레포에 하루 머지된 변경은 2026년 5월 약 2,500건에서 9월 3만 건 이상으로 늘었습니다. 공식 차트의 주석은 9월 9일 하루에 30,401건이 머지됐다고 적습니다. 같은 기간 사람이 올린 Pull request 막대는 거의 자라지 않았고 늘어난 쪽은 Claude가 만든 변경 요청입니다.

git이 더는 못 버틴 지점

저장소 크기부터 평범하지 않습니다. main 브랜치 히스토리가 거의 100GB이고 압축한 작업 사본만 25GB를 넘습니다. 여기에 CI 잡이 하루 약 2,500만 번 체크아웃합니다. Anthropic은 이걸 git 방식 그대로 받아내면 하루 600PB가 넘는 트래픽이 된다고 계산했습니다.

그래서 쓴 방법이 내부 git 미러였습니다. 피크 때는 수백 대를 돌렸습니다. 미러는 저장소 사본을 미리 받아 두고 CI 잡에 나눠주는 중계 서버입니다. 머지 속도가 오르자 각 미러가 들고 있는 시드는 main 끝단에서 점점 멀어졌습니다. 잡 하나가 최신 코드를 받으려면 미러에 없는 부분을 추가로 받아야 하는데, 그 간격은 머지가 늘수록 벌어집니다.

Anthropic이 Scion 이전에 쓰던 git 미러 구조. CI 잡과 개발 환경, 에이전트 샌드박스가 클러스터별 packfile 캐시와 미러 복제본을 거쳐 상위 저장소에 닿는다

근본 원인은 용량이 아니라 git의 전제였습니다. git은 분산 설계라 클론 하나하나가 오프라인에서도 쓸 수 있는 완전한 사본을 갖습니다. 사람이 노트북에서 비행기를 타던 시절에는 그게 장점이었습니다. 지금 Anthropic 저장소를 쓰는 클라이언트는 대부분 항상 온라인인 에이전트와 CI 잡입니다. 글에 적힌 문장은 이렇습니다. "지금의 병목은 사람 규모에 맞춰 만든 개발 인프라 전부입니다."

Scion이 git에서 덜어낸 것

Scion은 저장소 전체 사본을 어디에도 두지 않습니다. Anthropic은 "서버에도 저장소의 완전한 사본은 없습니다"라고 적었습니다. 히스토리 조회, blame, 커밋, 머지, 리베이스를 전부 서버가 처리하고 클라이언트는 크기가 정해진 로컬 캐시만 들고 있습니다. 작업 사본은 선택이고 필요한 디렉터리만 받습니다.

저장 단위는 changeset입니다. 첫 부모를 기준으로 바뀐 파일과 실제 내용을 가리키는 포인터를 담은 기록인데, 만드는 쪽은 클라이언트가 아니라 서버입니다. 브랜치 포인터를 옮기는 작업은 Spanner 한 행의 compare-and-swap으로 끝납니다. 클라이언트는 루트 트리에서 시작해 자기한테 없는 조각만 요청하고 서버와 무엇을 주고받을지 협상하지 않습니다. 큰 packfile 하나를 만들지 않으니 전송이 끊겨도 이어받습니다.

Scion의 3계층 구조. 클라이언트가 제어 평면으로 scion-server에, 객체 평면으로 scion-daemon과 scion-cache를 거쳐 Spanner와 클라우드 스토리지에 닿는다

읽기는 세 계층을 거칩니다. 노드마다 뜨는 scion-daemon, 리전별 scion-cache, 그리고 Spanner와 클라우드 스토리지를 읽는 권위 서버 scion-server 순입니다. 각 계층의 캐시 히트율은 99%를 넘습니다.

머지 큐에서는 업계 표준을 따르지 않았습니다. 보통 머지 큐는 저장소 전체에 락을 걸어 한 번에 하나씩 넣는데, Anthropic은 그 락을 쓰지 않고 머지 후와 배포 전 자동 테스트에 투자했습니다. 동시에 들어온 변경끼리 충돌할 수 있지만 Claude가 사람이 충돌을 발견하기도 전에 고치는 경우가 보통이라서 감수할 만하다고 판단했습니다.

코드 리뷰 도구 Antique도 같이 만들었습니다. 승인 규칙이 주석만 바뀐 변경과 민감한 로직 변경을 구분할 수 있어서 사람 리뷰어는 모든 줄을 읽는 대신 변경의 의도를 봅니다. GitHub ReviewBench에서 1위 Copilot의 재현율이 26%에 그쳤던 것처럼 자동 리뷰 혼자로는 아직 부족한데, Anthropic은 사람을 빼는 대신 사람이 볼 대상을 줄이는 쪽을 택했습니다.

Scion과 Antique 코드베이스의 주간 변경 건수. 1월 이후 12,257건이고 6월부터는 Antique 변경 요청이 대부분을 차지한다

Scion과 Antique 자체도 같은 방식으로 만들어졌습니다. 두 디렉터리에 1월 이후 들어간 변경이 12,257건입니다. 4월까지는 사람 Pull request가 대부분이었다가 6월부터는 Antique 변경 요청이 거의 전부입니다. git에서 Scion으로 데이터를 옮기는 파이프라인은 Claude Mythos Preview가 다시 썼고 메모리를 20분의 1만 쓰면서 4배 빨라졌습니다. 글에는 이런 문장도 있습니다. "엔지니어의 역할이 Claude에게 안 된다고 말하는 것일 때가 아주 많았습니다."

200분의 1

기존 git 미러 인프라 대비 CPU·메모리 사용량

분에서 초로

CI·연구 잡의 체크아웃 시간

25%
CI에서 되찾은 CPU 여유

대신 포기한 것이 오프라인입니다. Scion에는 비행기에서 커밋하는 동작이 없습니다. Anthropic은 가장 무거운 사용자인 Claude가 언제나 온라인이라 우선순위에서 뺐다고 설명했습니다.

공개된 것은 설계뿐입니다

Scion은 제품이 아닙니다. Anthropic은 오픈소스 계획을 밝히지 않았고 글에서 Scion이 "일반적인 용도에서 git을 대체할 만한 물건이 전혀 아니다"라고 못 박았습니다. 설계 개념이 성립하는 것은 정말 거대한 모노레포 하나뿐이고 도입하려면 코드 리뷰와 코드 검색과 CI까지 개발 생애주기 전체를 함께 옮겨야 하기 때문입니다.

항목내용
대상Anthropic 사내 전용. 외부 조직 제공 계획 없음
요금제·가격판매하지 않음
한국 사용 가능해당 없음. 지역과 무관하게 누구도 쓸 수 없음
필요 조건없음. 공개된 것은 설계 서술과 다이어그램뿐

같은 문제를 푼 제품이 하나 나와 있습니다. Cursor가 2026년 8월 공개한 Origin은 git 호환을 유지한 저장소 서비스로, 푸시를 S3에 불변 write-ahead log로 쌓고 로컬 NVMe 저장소를 캐시로 씁니다. 베타이고 유료 Cursor 요금제에 포함되지만 어느 요금제인지는 공개 자료에 없습니다. 두 회사가 같은 압력에 정반대로 답했으니 고를 때 기준도 갈립니다. Anthropic은 거대 모노레포 하나를 전제로 git과 갈라섰고 Cursor는 에이전트가 만드는 일회성 소형 저장소가 수없이 생기는 쪽을 전제로 git 호환을 지켰습니다.

GitHub에는 Anthropic 설계를 따랐다고 소개하는 openscion이라는 Rust 구현도 올라와 있습니다. GPL-3.0에 커밋 118개, 별 39개 규모이고 Anthropic 관여 여부는 적혀 있지 않습니다. 벤치마크는 합성 저장소에서 직접 잰 값이라 Anthropic이 공개한 수치와 비교할 근거가 없습니다.

"그래서 SVN 아닌가"라는 반론

Hacker News 원문 스레드는 858점에 댓글 953개가 달렸습니다. 가장 많이 나온 반응은 중앙 집중식으로 돌아간 것 아니냐는 지적이었습니다. 한 사용자는 "그래서 Anthropic이 SVN을 재발명했다는 건가"라고 적었고 다른 사용자는 SVN보다 Perforce에 가깝다고 답했습니다. Simon Willison도 Subversion 계열의 중앙 집중식 소스 컨트롤을 다시 만든 것처럼 들린다고 썼습니다. 이건 Anthropic의 주장이 아니라 읽는 쪽의 평가입니다.

기술적으로 가장 날카로운 반대는 커밋을 서버에서 만드는 설계였습니다. 로컬 히스토리가 있어야 작업을 다시 쓰고 버릴 수 있는데 그 장점까지 같이 버리지 말라는 주장입니다. 사람 개발자에게는 유효한 지적이고 Anthropic의 답은 자기네 주 사용자가 사람이 아니라는 사실 자체입니다.

출처 표기를 둘러싼 지적도 나왔습니다. Meta에서 Mononoke 소스 컨트롤 서버를 만든 개발자 Rain이 10월 14일 글을 올렸습니다. Scion의 파생 데이터 분리, blame과 경로 히스토리 인덱스, 비동기 계산, 클라이언트에 내부 구조를 숨기는 방식이 Mononoke와 겹친다고 짚었습니다. 글에 Sapling은 "힘들게 얻은 교훈"으로만 언급되고 Mononoke는 한 번도 나오지 않습니다. Rain은 "표절에 가깝다"는 표현을 쓰면서도 설계를 베낀 것 자체는 문제 삼지 않는다고 밝혔습니다. 이 글도 Hacker News에서 67점을 받았습니다.

Scion을 쓸 수 있는 사람은 없지만 Anthropic이 수치로 짚은 병목 하나는 git을 그대로 둔 채 오늘 재볼 수 있습니다. CI 잡이 여전히 전체 히스토리를 받고 있다면 --filter=blob:none 부분 클론과 sparse checkout으로 바꿔 체크아웃 시간을 측정해 보면 됩니다. 하루 2,500만 번 체크아웃에서 600PB라는 추정이 나온 것도 잡마다 저장소를 통째로 받는 그 동작 때문입니다.