프론트엔드

모노레포의 개념, 장단점, 종류

프로그래머 웅쓰 2024. 2. 1. 22:46

안녕하세요 오늘은 모노레포의 기본적인 개념과 자바스크립트 패키지 매니저의 종류에 대해 알아보겠습니다.

 

모노레포 ( Mono Repository ) 란?

다수의 프로젝트가 하나의 레포지토리에 저장되는 전략을 의미합니다. 이는 코드, 의존성 및 빌드 프로세스를 중앙 집중화하여 개발 생산성과 협업을 증가시키는 목적으로 사용됩니다.

 

출처: https://levelup.gitconnected.com/moving-from-multiple-repositories-to-a-lerna-js-mono-repo-faa97aeee35b

 

기존에는 모든 프로젝트들이 분리되어 있지 않고 하나의 저장소에 다 들어가있는 Monolith 방식이 사용됐습니다. 그러나 점점 서비스 복잡도가 증가하면서 각각의 서비스 단위로 프로젝트를 생성하는 Multi(Poly) - Repo 방식으로 변화해왔습니다. 최근에는 다수의 프로젝트를 하나의 레포지토리에 모아서 의존성을 공유하는 Mono Repo 전략이 사용되는 경우를 종종 볼 수 있습니다.

 

왼( 멀티레포 ), 오 ( 모노레포 )

모노레포의 장점과 단점

장점

  • 협업 : 모든 구성원이 모든 코드에 접근 가능, 컨트리뷰터 증가, 대규모 리팩토링 가능
  • 이슈 관리 : A와 B 레포에서 같은 문제가 발생했을 경우, 공통 이슈로 해결 가능
  • 공통 환경설정 : lint, utility, document, 각종 config 파일 등 공통으로 정의 가능
  • 의존성 관리 : 공통 Package 중복 제거, 변경 시 즉시 반영

단점

  • 버전 관리 : 하나의 레포지토리 하나의 버전을 사용.
  • 액세스 권한 : 레포지토리 내부, 모든 프로젝트에 접근 가능
  • 결합도 : 의존성이 올라가면서 중복은 줄어들지만 결합도는 증가 ( 하나를 수정하면 다른 코드들도 변경 ), 에러 발생 가능
  • 사이즈 과부하 : 프로젝트 사이즈가 커질 수록 git 이나 build 과정에 더 많은 시간 소요

 

모노레포 라이브러리의 종류

 

Lerna, Yarn Berry, Turborepo, Nx 등등..

 

모노레포 라이브러리는 JS Package Manager 와 밀접한 의존성을 보입니다. yarn 과 npm 은 workspace 를 분리하여 모노레포 방식을 지원하는데요 다음시간에는 이에 대해서 자세히 알아보겠습니다.

 

오늘은 모노레포의 개념과 장단점 그리고 라이브러리 종류에 대해 알아보았습니다.