모노레포

❓질문

모노레포란 무엇인가요?


💡 조사하기전 내가 알고 있던 내용

모노레포를 설명하기전에 어느 프로젝트 혹은 라이브러리를 보관을할때 깃허브 레포지토리에 저장한다고 치자 그럼 이 저장하는 방식에 따라서 갈라지는데

멀티레포는 프로젝트마다 각각의 레포지토리를 만들어 이를 보관하고 각각의 프로젝트는 독립된 버전과 의존성을 갖게된다.

모노레포는 프로젝트를 하나의 레포지토리안에서 관리하여 각각의 프로젝트는 일관된 버전을 사용하고 공유된 의존성으로 호환성을 높히기 쉬운점이 있다.

멀티레포의 장점 : 독립되어있기 때문에 각 프로젝트는 별도로 빌드되고 배포된다 프로젝트가 별도의 레포지토리를 갖고있기때문에 한 프로젝트에서 발생한 오류가 다른 프로젝트에 영향을 주지 않음.

모노레포의 장점 : 하나의 저장소에서 통합되어있기 때문에 CI/CD 측면에서 통합된 테스트를 진행하기 쉽다. 한번의 초기세팅으로 모든 프로젝트를 관리 할 수 있다 하나의 레포지토리안에 있다보니 공통적으로 사용하는 코드의 경우 재사용성을 높힐 수 있다.


🏫 정리한 내용

반대로 모노레포의 단점에는 여러 코드베이스가 하나의 레포지토리안에 있다보니 용량의 증가로 빌드 시간과 테스트 시간이 길어질 수 밖에 없습니다.
또한 CI/CD등 공용적으로 적용되고있는 파이프라인같은 경우에 복잡도가 증가할 수 있습니다.
이러한 단점을 극복하기 위해 모노레포관련 프레임워크를 사용할 수 있지만 이또한 러닝커브를 증가시킵니다.

둘째로 모든 프로젝트가 하나의 레포지토리에서 관리되다보니 관리/보안 권한에 대해서 신경을 써줘야합니다.