Monorepo와 Multirepo

jellyjw·2022년 12월 29일
1
post-thumbnail

Monorepo와 Multirepo의 차이

프로젝트를 진행하며 시스템의 각 모듈을 개별 repo에서 관리할 것인지, 하나의 repo에서 관리할 것인지에 따라 모노레포 / 멀티레포 로 나뉘게 된다.

이 때 나눠서 관리하는 것을 멀티레포, 하나의 저장소에서 관리하는 것을 모노레포라고 한다.

Monorepo

Monorepo는 하나의 repository에서 두개 이상의 프로젝트를 관리하는 것을 뜻한다. 여러 프로젝트가 하나의 저장소를 사용한다고 무조건 모노레포라고 할 수는 없고 프로젝트 사이 의존성이 존재하거나 하는 관계가 존재한다.

서비스 연동이 소스 단위로 이루어지며, 최상위 폴더부터 트리 구조로 구성된다.

장점

  • 항상 모든 서비스가 연동된 상태를 유지하여 지속적인 소스의 무결성을 보장한다.
  • 모든 서비스가 연동된 상태에서 하나의 버전으로 관리가 가능하여 통합 버전관리가 가능하다.
  • 소스 단위의 연동이 이루어져 코드 공유 및 재사용이 용이하다.
  • 하나의 repo에서 작업하기 때문에 프로젝트 팀 간의 협업이 쉽다.
  • 한 번의 코드 리뷰에 모든 변화가 요약된다.

단점

  • 의존성 연결이 쉬워 과도한 의존 관계가 나타날 수 있다.
  • 레파지토리 크기가 크기 때문에 형상관리 및 CI 속도 저하가 발생한다.

Multirepo

멀티레포는 시스템의 서비스별로 repo 를 각자 만들어서 관리하여 별도의 폴더로 구성된다.

장점

  • 자율성이 높아 강한 오너쉽 확보가 가능하다.
  • 코드 베이스가 나뉘어 있어 협업시 충돌이 일어날 확률이 적다.
  • 레파지토리의 크기가 작아 형상관리 및 CI 속도가 빠르다.

단점

  • 코드 재사용이 쉽지 않고 코드가 중복될 확률이 높아진다.
  • 하나의 peature 개발을 위해 여러 repo에 merge를 해야 한다.
  • 코드 리뷰가 나누어진다.
  • 프로젝트가 커질 경우 의존 그래프가 매우 복잡해진다.
  • 프로젝트 생성시마다 환경 세팅 등 번거로운 과정을 매번 거쳐야 한다.

Yarn Package

Yarn은 Facebook에서 개발한 자바스크립트의 패키지 매니저로, 더욱 빠르게 패키지를 설치할 수 있으며 의존성 관리를 다양한 디바이스에서 일관성 있게 할 수 있다.
yarn 설치 방법은 다음 명령어로 가능하다.

npm install -g yarn

yarn 공식 홈페이지
공식 홈페이지에서 'react emotion' 을 검색하면 1,121개의 패키지가 나온다. 이렇게 필요한 라이브러리들을 각각 설치하지 않고 패키지매니저를 이용하면 손쉽게 명령어로 내가 원하는 조합의 패키지를 설치할 수 있다.

원하는 패키지를 선택하면 간단한 설명과 함께 설치 명령어가 제공되어 입력하기만 하면 자동으로 설치된다.

profile
남는건 기록뿐👩🏻‍💻

0개의 댓글