🌿 중급 개발도구
Monorepo가 뭔가요?
쉽게 이해하기
집에서 서류를 정리할 때 분야별로 파일 케이스를 여러 개 쓸 수도 있고, 큰 서랍장 하나에 칸을 나눠서 넣을 수도 있잖아요. Monorepo는 '큰 서랍장 하나'에 모든 프로젝트를 넣어서 관리하는 방식이에요.
핵심 정리
여러 프로젝트를 하나의 Git 저장소에서 관리하는 방식이에요.
자세히 알아보기
Monorepo는 웹사이트, 모바일 앱, 관리자 페이지처럼 여러 프로젝트를 하나의 Git 저장소에 모아서 관리하는 전략이에요. 반대 개념은 Polyrepo(또는 Multi-repo)로, 프로젝트마다 저장소를 따로 만드는 방식이죠.
Monorepo의 장점은 코드 공유가 쉽다는 거예요. 여러 프로젝트에서 쓰는 공통 컴포넌트나 유틸 함수를 packages/shared 같은 곳에 두고, 모든 프로젝트가 참조하면 돼요. 버전 관리도 간단해서 '공통 라이브러리를 업데이트하면 모든 프로젝트에 즉시 반영'할 수 있죠. 코드 리뷰도 한 곳에서 하니까 팀 전체가 컨텍스트를 공유하기 쉬워요.
실무에서는 Turborepo, Nx, Lerna 같은 도구를 써서 Monorepo를 관리해요. 이 도구들은 '변경된 부분만 빌드'하거나 '의존성 그래프를 그려서 효율적으로 테스트'하는 기능을 제공하죠. 예를 들어 공통 컴포넌트를 수정하면 그걸 쓰는 프로젝트만 자동으로 재빌드돼요.
단점은 저장소가 커질수록 Git 명령어가 느려질 수 있다는 점이에요. Google이나 Meta처럼 수백만 줄의 코드를 Monorepo로 관리하는 회사는 별도의 버전 관리 시스템을 개발해서 쓰기도 해요. 작은 팀이라면 Monorepo가 편하지만, 프로젝트가 완전히 독립적이라면 Polyrepo가 나을 수도 있어요.