멀티리포 vs 모노리포 - low-hill/Knowledge GitHub Wiki

멀티리포 vs 모노리포: 소스 리포지토리 관리 방법 비교

소개

이 문서는 소스 형상 관리 시스템에서 소스 리포지토리를 관리하는 두 가지 방법인 멀티리포(Multi-repo)와 모노리포(Mono-repo)를 비교하고 분석하여, 개발 조직이 어떤 방식을 선택해야 하는지에 대한 정보를 기술한다.

초기 프로젝트 구조

  • 초기에는 모노리딕 시스템으로 서비스를 구현한다.
  • 프로젝트의 크기와 개발자 수가 적기 때문에 모든 것을 한 곳에서 처리하는 것이 효율적입니다.
  • 따라서 시스템 자체가 하나이므로 리포지토리도 하나로 관리됩니다.

프로젝트 거대화

  • 프로젝트가 거대화되면서 모노리딕 시스템은 높은 결합도와 낮은 응집력이 발생한다.
  • 이를 해결하기 위해 개발 조직은 각 부분을 도메인 별로 분리하여 마이크로 서비스로 구성한다.
  • 이때 개발 조직은 각 서비스를 하나의 리포지토리에서 관리할지, 각각 다른 리포지토리에서 관리할지를 결정한다.

멀티리포 vs 모노리포

  • 리포지토리를 관리하는 방식은 시스템의 각 모듈을 개별 리포지토리에서 관리할지, 하나의 리포지토리에서 관리할지에 따라 달라집니다.
  • 멀티리포: 각 서비스별로 리포지토리를 만들어서 관리합니다.
    • 서비스 간의 연동이 소스 단위로 이루어지지 않습니다.
    • 각 서비스가 별도의 폴더로 구성됩니다.
  • 모노리포: 모든 서비스를 하나의 리포지토리에서 일괄 관리합니다.
    • 서비스 간의 연동이 소스 단위로 이루어집니다.
    • 최상위 폴더부터 트리 구조로 서비스 폴더가 구성됩니다.

장단점 비교

멀티리포

장점

  • 강한 오너쉽 확보
  • 각 리포지토리에 오너를 지정 가능
  • 마스터 코드의 깨짐 가능성이 적음
  • 형상 관리 및 CI 속도가 빠름

단점

  • 코드 재사용이 어려움
  • 코드 리뷰가 분산됨
  • 버전 연동이 깨질 위험이 있음
  • 디펜던시 관리가 어려움

모노리포

장점

  • 지속적인 소스의 무결성 보장
  • 코드의 공유와 재사용이 용이
  • 의존성 관리가 쉬움
  • 팀 간 협업이 쉬움

단점

  • 무분별한 의존성 연결 가능
  • 형상 관리 및 CI 속도 저하

결론

멀티리포와 모노리포는 소스 리포지토리를 관리하는 방식에 있어 각각의 장단점을 가지고 있습니다. 개발 조직은 시스템의 구조와 규모를 고려하여 적절한 방식을 선택해야 합니다.

Reference: