
모노레포
프로젝트별로 레포지토리를 생성하여 만드는 멀티레포와 반대되는 방식으로, 버전 관리 시스템에서 두 개 이상의 프로젝트 코드가 동일한 저장소에 저장되는 소프트웨어 개발 전략이다.
장점
- 코드 리뷰 향상
- 최신화 상태 유지
- 전체 코드의 일관성 (동일한 코드 컨벤션)
- 공유 라이브러리
- 단일 버전 관리 (버전 충돌 최소화)
단점
- 개발환경 구성의 어려움
- 높은 학습 곡선
- 코드 충돌 위험 (동시 작업)
- 코드 관리 복잡성
- 배포 복잡성
멀티레포(폴리레포)
멀티레포란 말 그대로 Repository를 각 도메인 및 기능 시스템 단위로 생성하여 운영하는 것을 말하는데, 우리가 보통 프로젝트별로 레포지토리를 생성하여 만든 것을 말한다.
각 프로젝트가 고유의 저장소를 가지게 됨으로써, 다른 프로젝트와의 의존성을 가지고 있지 않아 독립적으로 빠르게 개발이 가능하며 비교적 크기가 가벼워 프로젝트 관리 면으로 수월하다.
장점
- 모듈화
- 빠른 배포
- 더 나은 협업(충돌 최소화)
- 독립적인 테스트
- 쉬운 의존성 관리
단점
- 복잡한 버전 및 의존성 관리
- 동일 코드 중복(유지보수성이 낮아질 수 있음)
- 코드 컨벤션 통일 어려움
- 각 프로젝트별로 사용하는 모듈 및 버전 스택이 달라질 수 있음
- 오랫동안 건드리지 않은 프로젝트의 관리가 힘들어지며, 시간이 지날수록 해당 프로젝트의 Legacy 파악이 어려워질 수 있음
- 팀원별 컨텍스트 공유가 서로 원활하지 않을 수 있음