MonoRepo란

오늘은 여러 회사에서 사용하는 monorepo에 대해서 알아보겠습니다.
 
notion image

MonoRepo란 무엇일까

MonoRepo는 Monolithic Repositories의 약자로, 하나의 리포지토리에서 여러 개의 프로젝트가 구성된 것을 의미합니다.
 

MonoRepo의 장점

보통 하나의 리포지토리 안에 하나의 프로젝트가 들어있는 것이 일반적입니다만
MonoRepo를 사용해서 여러 개의 프로젝트를 하나의 리포지토리에서 관리하면 어떤 점이 좋을까요?
 

1. 하나의 리포지토리로 여러 개의 프로젝트 관리

하나의 리포지토리가 여러 개의 프로젝트를 포함하고 있어 큰 편의성을 지닙니다.
코드를 짜는 입장에서도 IDE를 열거나, IDE에서 프로젝트를 스위치하며 개발할 필요없이 하나의 IDE에서 하위폴더로 구분된 여러 패키지들이 코드를 작성할 수 있습니다.
 

2. 중첩되는 코드의 공통화

여러 프로젝트들이 공통으로 사용해야 하는 로직이 있을 때, 이를 추가적인 패키지로 분리하여 import해서 사용할 수 있습니다.
 

3. 중첩되는 모듈은 하나만 설치해서 사용

MonoRepo 안의 여러 프로젝트들에서 모두 특정 모듈의 버전을 사용한다면, 각각의 프로젝트들에서 node를 설치할 필요 없이, root path에만 설치하고 사용할 수 있습니다.
 

MonoRepo의 단점

1. Dependency 충돌 문제

특정 프로젝트가 특정 버전의 모듈을 필요로 하는 경우, 다른 버전의 모듈을 사용하는 프로젝트와 Dependency 충돌이 발생할 수 있습니다.
 

2. 단일 리포지토리 문제

여러 프로젝트를 하나의 리포지토리에서 관리하기 때문에 오히려 관리가 어려워질 수 있습니다.
관리하는 프로젝트가 증가함에 따라 오히려 가독성이나 여러가지 측면에서 비효율적이게 될 수 있습니다.
 

3. 긴 초기 프로젝트 설정시간

MonoRepo로 관리하는 모든 프로젝트를 사용한다면 상관없지만, 그 중 일부만 필요한 경우에도 node_modules 설치가 이루어져야 합니다.
 

결론

MonoRepo를 사용하는 이유는 여러가지가 있지만, 장점만 있는 것은 아니기 때문에 프로젝트의 목적 및 환경 등 여러가지 조건을 고려해서 결정하면 좋을 것 같습니다!