모노레포(monorepo) 란?

fzerome·2022년 12월 4일
0

멀티레포(multirepo)

장점

각 프로젝트가 고유의 저장소를 가지고, 다른 프로젝트와 의존성을 가지지 않아 독립적으로 빠른 개발이 가능하며 프로젝트 관리가 수월하다.

But 프로젝트가 많아질수록 단점이 생긴다.

  • 번거로운 프로젝트 생성 절차 (저장소 생성, 개발 환경 구축, CI/CD 구축, 빌드)
  • 각 프로젝트의 코드 컨벤션이 통일하기가 어려워진다.
  • 각 프로젝트별로 사용하는 모듈 및 버전 스택이 달라질 수 있다.
  • 오랫동안 건드리지 않은 프로젝트의 관리가 힘들어지며, 시간이 지날수록 해당 프로젝트의 레거시 파악이 어려워진다.
  • 팀원별 컨텍스트 공유가 서로 원활하지 않을 수 있다.
  • 새로운 서비스를 추가하기 위해 repository를 생성할 때마다 서비스 환경을 반복적으로 세팅해야한다.

위의 문제를 해결하기 위한 방법

모노레포(monorepo)

그렇지만 멀티레포의 단점이 모노레포의 장점이고 서로 교차하기때문에 적절한 프로젝트에서 사용해야 한다.

모노레포 구축 도구

  • pnpm
  • Turborepo
  • Nx
  • npm
  • Yarn 등

Yarn Workspace

https://dev.to/limal/simplify-your-monorepo-with-npm-7-workspaces-5gmj

  • 모노레포 내 각 프로젝트는 하나의 Repository 방식으로,
    각각 프로젝트에 node_modules를 가지고 dependency를 설치하지만,
    여러 프로젝트에서 중복으로 사용되는 모듈은 중복 설치할 필요 없이 최상단 node_modules로 hoisting을 하게 된다.
  • node_modules 디렉터리에 workspace에 대한 심볼릭 링크가 생성된다. 이를 통해 하나의 저장소에 있는 여러 프로젝트가 서로 쉽게 상호 참조할 수 있다.
  • 그러나 아직 불안정하다고 한다. (?)

참고

https://blog.mathpresso.com/%ED%8C%80%EC%9B%8C%ED%81%AC-%ED%96%A5%EC%83%81%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC-monorepo-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95-3ae1b0112f1b

https://yeoulcoding.me/298

https://d2.naver.com/helloworld/0923884

profile
프론트엔드 제롬

0개의 댓글