모노레포(Monorepo)

김은서·2023년 5월 2일
0

STUDY

목록 보기
1/1

모노레포

모노레포란?

버전 관리 시스템에서 두 개 이상의 프로젝트 코드가 동일한 저장소에 저장되는 소프트웨어 개발 전략,
분리된 모듈들은 모노레포에서 여전히 독자 프로젝트로 존재하지만 저장소는 같은 곳을 사용한다.

모노레포의 특징

  • 프로젝트 간의 관계
    • 단순히 여러 프로젝트가 하나의 저장소를 사용한다고 해서 모노레포 구조라고 부르기에는 부족하다.
      흔히 모노레포에서는 프로젝트 사이에 의존성이 존재하거나 같은 제품군이거나 하는 정의된 관계가 존재한다.
  • 모노레포가 해결하는 멀티레포의 문제
    • 더 쉬운 프로젝트 생성
      • 모노레포에서는 저장소 생성 및 커미터 추가 과정이 필요 없고, 개발 환경, CI/CD, 빌드, 게시 등의 과정에 기존 DevOps를 이용하므로 새 프로젝트 생성에 대한 오버헤드가 없다.
    • 더 쉬운 의존성 관리
      • 의존성 패키지가 같은 저장소에 있으므로 버전이 지정된 패키지를 npm registry와 같은 곳에 publish할 필요가 없다.
    • 단일화된 관리 포인트
      • 개발환경 및 DevOps에 대한 업데이트를 한 번에 반영할 수 있다.
    • 일관된 개발자 경험 제공
      • 애플리케이션을 일관되게 구축하고 테스트할 수 있다. 개발자는 다른 팀의 애플리케이션에 자신 있게 기여하고 변경 사항이 안전한지 확인할 수 있다.
    • 프로젝트들에 걸친 원자적 커밋
      • 커밋할 때마다 모든 것이 함께 작동한다. 변경 사항의 영향을 받는 조직에서 쉽게 변화를 확인할 수 있다.
    • 서로 의존하는 저장소들의 리팩터링 비용 감소
      • 모노레포는 대규모 변경을 훨씬 더 간단하게 만든다. 100개의 라이브러리로 만든 10개의 앱을 리팩터링하고 변경을 커밋하기 전에 모두 작동하는지 확인할 수 있다.
  • 테스트 및 빌드 범위 최소화
    • 소스 변경 시 모든 프로젝트를 다시 빌드하거나 다시 테스트하지 않는다. 대신 변경 사항의 영향을 받는 프로젝트만 다시 테스트하고 빌드한다.

0개의 댓글