logo

모노레포란?

모노레포란 무엇인가?

58 조회

0 추천

830 단어

5분 예상

2024. 08. 23. 게시

luasenvy 작성

CC BY-NC-SA 4.0

어원

모노레포의 모노는 모놀리스를 떠올리면 된다. 모놀리스는 하나의(mono-) 돌(lith)이라는 의미로 단 한 덩어리의 석재만을 사용하여 만든 구조물을 일컫는다. 주로 고대에 만든 돌 기둥이나 첨탑이 이에 해당한다. 스탠리 큐브릭 감독의 2001 스페이스 오디세이의 한 장면을 떠올리는 사람도 있을 것이다. 영화에서 유래한 언어는 아니지만 대표적으로 예를 들 수 있다. 아니면, 요즘에도 있는지 모르겠지만 오디오 기능중에 모노, 스테레오를 생각하면 된다. 같은 의미이다.

모놀리식 레포지토리

모노레포

사실 풀 네임은 모놀리식 레포지토리로 모놀리스처럼 그냥 저장소에 하나에 프로그램에 필요한 모든 것들이 포함되어 있는 형태를 말한다. 위 그림처럼 하나의 저장소에 관련된 모든게 저장되지만 프로그램을 실행하기 위해서 전부다 필요한 것은 아니다. 위 그림에 포함시킨 플러그인과 같이 없어도 동작하는 것들도 포함하여 관리하게 된다.

멀티 레포지토리

멀티레포

모듈별로 저장소를 따로 만들어 관리하는 방법으로 모노레포의 반대되는 개념 또는 상위호환 개념으로 소개하는 경우가 있다. 그러나 이 둘은 상하위나 반대개념이 아닌 상호보완의 관계를 가지고 있는 방법론이다. 프로젝트의 상황에 맞춰서 사용하는 것이 좋다.

모노레포의 장점과 단점

모노레포는 동일한 DevOps로 구성할 수 있고 기능을 재사용하는 집합성 프로젝트들을 관리할 때 적합하다. 의존성 간소화, 테스트 간소화, 환경 통일, 프로젝트간 리팩토리 용이성, 모듈별 개별 빌드 등 하나의 저장소에 고려해야할 요소들이 더 늘어나지만 관리포인트를 한 곳으로 집중할 수 있다.

장점만 있는 것은 아니다. 실행에 불필요한 모든 요소까지 다 포함하여 관리하기 때문에 프로젝트 구성을 위한 최초 다운로드에 큰 시간을 할애 해야할 수도 있다. 또한, 모든 협력자들이 이 저장소를 어느 정도 이해해야 작업이 가능하기 때문에 전체적인 학습 비용이 추가로 필요하다. 모노레포 전체를 함께 빌드하는 경우에는 하나의 모듈이 실패하면 프로젝트 전체가 빌드를 실패할 수 있다는 단점도 있다.

그럼에도 오늘날 네트워크 환경과 저장매체의 발달 등 단점들의 치명도가 내려가고 다양한 관리기법1이 등장한 덕택에 대규모 프로젝트의 경우 모노레포 관리기법이 큰 인기를 얻는 추세이다.

Footnotes

  1. 대표적으로 workspace, lerna, nx 등이 있다.