
무슨 일이 일어났나
구글이 오픈소스로 공개한 Copybara(코피바라)라는 도구가 다시 눈길을 끌고 있어요. 한 줄로 설명하면, 서로 다른 저장소(repository) 사이에서 코드를 옮기고 변환해주는 도구예요. 특히 회사 내부에만 있는 코드를 외부 공개용 저장소(예: GitHub)로 내보낼 때 진가를 발휘하죠. 구글이 자기네 방대한 내부 코드를 어떻게 오픈소스로 풀어내는지, 그 비법의 일부가 바로 이 도구예요.
왜 이런 도구가 필요할까
배경을 이해하려면 구글의 개발 방식을 먼저 알아야 해요. 구글은 거의 모든 코드를 하나의 거대한 저장소에 몰아넣는 모노레포(monorepo) 방식을 써요. 이게 뭐냐면, 프로젝트마다 저장소를 따로 만드는 게 아니라 회사의 수많은 프로젝트를 한 저장소 안에서 함께 관리하는 방식이에요. 내부적으로는 편하지만, 문제는 이 안의 특정 프로젝트만 외부에 오픈소스로 공개하려 할 때 생겨요.
내부 코드에는 외부에 공개하면 안 되는 것들이 잔뜩 섞여 있거든요. 내부 전용 경로, 사내 시스템 참조, 비공개 주석 같은 것들이요. 그렇다고 공개할 때마다 사람이 손으로 이런 걸 지우고 폴더 구조를 바꾸면 실수도 나고 시간도 엄청 걸려요. 게다가 내부에서 코드를 계속 고치면 그 변경을 외부 저장소에도 반복해서 반영해줘야 하는데, 이걸 수작업으로 하는 건 지옥이죠. Copybara는 바로 이 반복 작업을 자동화해줘요.
어떻게 동작하나
Copybara는 설정 파일에 '어느 저장소에서 어느 저장소로, 어떤 변환을 거쳐 옮길지'를 규칙으로 적어두는 방식이에요. 이 설정 파일은 copy.bara.sky라는 이름을 쓰고, 스타라크(Starlark)라는 파이썬 비슷한 언어로 작성해요.
여기에 다양한 변환(transformation) 규칙을 넣을 수 있어요. 예를 들면 이런 것들이죠. 내부 전용 폴더는 제외하고, 특정 디렉터리는 위치를 옮기고, 비공개 주석이나 내부 시스템 관련 코드 조각은 삭제하고, 파일 안의 특정 문자열을 다른 값으로 치환하는 식이에요. 이렇게 규칙을 한 번 잘 정의해두면, 그다음부터는 명령 한 줄로 '내부의 최신 상태를 정제해서 외부 저장소에 반영'하는 작업이 자동으로 이뤄져요.
방향도 유연해요. 내부에서 외부로 한 방향으로만 내보낼 수도 있고, 외부 기여자가 GitHub에 올린 수정 사항을 다시 내부로 가져오는 양방향 흐름도 구성할 수 있어요. 그래서 '내부가 진짜 원본이고 외부는 그 거울'인 관계를 깔끔하게 유지할 수 있죠.
업계 맥락
비슷한 일을 하는 다른 방법들과 비교하면 Copybara의 위치가 더 잘 보여요. 단순히 저장소 일부를 떼어내 옮기는 거라면 git subtree나 git filter-repo 같은 기본 도구로도 어느 정도 가능해요. 하지만 이들은 '히스토리를 자르고 옮기는' 데 초점이 맞춰져 있어서, '옮기면서 내용을 정제하고 그걸 지속적으로 반복 동기화한다'는 시나리오엔 손이 많이 가요. Copybara는 이 '지속적인 정제 + 동기화'를 규칙 기반으로 자동화한다는 점에서 결이 달라요. 실제로 구글은 Bazel, gVisor 같은 유명 오픈소스 프로젝트를 이 방식으로 내부와 외부를 맞춰가며 공개하고 있어요.
한국 개발자에게 주는 시사점
당장 써먹을 수 있는 상황은 이래요. 사내에서 개발한 라이브러리나 도구를 오픈소스로 공개하고 싶은데, 코드 곳곳에 사내 정보가 얽혀 있어 망설였던 팀이라면 Copybara가 좋은 해법이 될 수 있어요. 공개용 저장소를 매번 손으로 관리하는 대신, 정제 규칙을 코드로 정의해두면 사람의 실수 없이 일관되게 내보낼 수 있거든요.
꼭 구글처럼 거대한 모노레포가 아니어도 괜찮아요. '원본은 한 곳에 두고, 가공된 사본을 다른 곳에 자동으로 유지하고 싶다'는 요구는 생각보다 흔하거든요. 문서 저장소를 분리해 배포하거나, 내부/외부 버전을 나눠 관리하는 경우에도 이런 접근이 도움이 돼요. 무엇보다 '반복되는 수작업은 규칙으로 자동화한다'는 발상 자체가, 규모를 키우는 팀이라면 꼭 익혀둘 만한 사고방식이에요.
정리하며
핵심 한 줄: Copybara는 '내부 코드를 정제해 외부로 내보내는 반복 작업'을 규칙 기반으로 자동화해주는 구글의 도구예요. 여러분의 팀에도 사람이 매번 손으로 옮기고 지우는 저장소 동기화 작업이 있진 않나요? 그걸 코드로 규칙화한다면 어떤 부분부터 자동화하고 싶으세요?
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공