Learning
토픽 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, 마이크로서비스, 코드 공유, 의존성 관리, 팀 토폴로지