안녕하세요 오늘은 모노레포의 기본적인 개념과 자바스크립트 패키지 매니저의 종류에 대해 알아보겠습니다.
모노레포 ( Mono Repository ) 란?
다수의 프로젝트가 하나의 레포지토리에 저장되는 전략을 의미합니다. 이는 코드, 의존성 및 빌드 프로세스를 중앙 집중화하여 개발 생산성과 협업을 증가시키는 목적으로 사용됩니다.
기존에는 모든 프로젝트들이 분리되어 있지 않고 하나의 저장소에 다 들어가있는 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 를 분리하여 모노레포 방식을 지원하는데요 다음시간에는 이에 대해서 자세히 알아보겠습니다.
오늘은 모노레포의 개념과 장단점 그리고 라이브러리 종류에 대해 알아보았습니다.
'프론트엔드' 카테고리의 다른 글
Sentry 를 알아보자 - (2) Transaction, Span 직접 생성해보기 (0) | 2024.02.05 |
---|---|
Sentry 를 알아보자 - (1) Trace, Transaction, Span 이란? (0) | 2024.02.04 |
Docker-Compose Nginx, Certbot 컨테이너로 HTTPS 웹서버 설정하기 (0) | 2022.01.23 |
자바스크립트로 브라우저 라우팅 구현하기 (0) | 2022.01.02 |
TypeScript를 활용한, FLUX 패턴 적용하기 (0) | 2022.01.02 |