토픽 118 / 192·소프트웨어 표준과 법제도
Monorepo vs Polyrepo
Monorepo vs Polyrepo
소스 코드 저장소 구성 전략으로, Monorepo는 여러 프로젝트를 단일 저장소에 관리하고, Polyrepo는 프로젝트별 별도 저장소를 사용하며, 각각 코드 공유, 의존성 관리, 팀 협업, CI/CD 방식에 차이가 있음
목적: 코드 관리 전략 결정, 의존성 관리, 팀 협업, CI/CD 효율화
Monorepo(모노레포)
- •정의: 여러 프로젝트/서비스를 하나의 저장소에서 관리
- •장점: 코드 공유 용이, 원자적 커밋(여러 프로젝트 동시 변경), 리팩토링 용이, 통합 CI/CD, 의존성 버전 일관성
- •단점: 저장소 크기 증가, 빌드 시간 증가, 접근 권한 관리 어려움, 도구 지원 필요
- •도구: Nx, Turborepo, Lerna, Bazel, Rush, Yarn Workspaces
- •사례: Google, Meta, Microsoft, Uber
Polyrepo(폴리레포)
- •정의: 프로젝트/서비스별 별도 저장소 관리
- •장점: 팀 독립성, 저장소 크기 작음, 접근 권한 명확, 독립 릴리스, 기술 스택 자유
- •단점: 코드 공유 어려움(중복), 의존성 버전 관리 복잡, 크로스-레포 변경 어려움, 통합 테스트 복잡
- •사례: 대부분의 전통적 조직
비교
선택 기준
- •Monorepo: 코드 공유 많음, 통합 팀, 일관성 중요, 원자적 변경 필요
- •Polyrepo: 팀 독립성, 기술 스택 다양, 접근 제어 필요, 작은 저장소 선호
하이브리드: 공유 라이브러리는 Monorepo, 서비스는 Polyrepo (실용적 접근)
기술요소: Nx, Turborepo, Lerna, Bazel, Incremental Build, Code Ownership
연관: Git, CI/CD, 마이크로서비스, 코드 공유, 의존성 관리, 팀 토폴로지