MonoRepo 모노레포란?

마라탕천재 ㅣ 2024. 9. 2. 22:39

1. 모노레포란 무엇인가?

  • 모노레포의 개념

모노레포는 여러 프로젝트의 코드를 하나의 저장소에 저장하는 소프트웨어 개발 전략으로, 2000년대 초반부터 사용되어 온 방법이다.

구글, 메타, 마이크로소프트, 우버, 에어비앤비, 트위터 등은 대규모 모노레포를 활용해 코드와 변경 사항을 효율적으로 관리하고 있다.

 

  • 모노레포를 사용하는 이유

모노레포는 여러 프로젝트의 코드를 단일 저장소에서 관리함으로써 코드 일관성을 유지하고, 코드 재사용성을 높이며, 팀 간 협업을 촉진하기 위해 사용된다. 이 방식은 2000년대 초반부터 등장하여, 대규모 기업들이 복잡한 의존성을 효과적으로 관리하고, 빌드 및 테스트 프로세스를 간소화하기 위해 채택하게 되었다.

 

  • 모노레포와 멀티리포의 차이

모노레포는 여러 프로젝트의 코드를 하나의 저장소에 통합하여 의존성 관리, 코드 공유, 빌드 및 테스트를 효율적으로 수행할 수 있게 하는 반면, 멀티레포는 각 프로젝트를 별도의 저장소에서 독립적으로 관리하여 프로젝트별로 유연한 버전 관리와 접근 제어를 가능하게 한다. 모노레포는 팀 간 협업을 용이하게 하고 대규모 코드 변경을 쉽게 처리할 수 있지만, 멀티레포는 프로젝트의 독립성을 유지하고 특정 팀의 요구에 맞게 저장소를 조정할 수 있는 장점이 있다.

 

 

2. 모노레포의 장점

1. 코드 일관성

  • 프로젝트 내에서 코드 스타일, 구조, 패턴 등이 통일되어 있는 상태를 말한다. 모노레포에서는 모든 프로젝트가 동일한 저장소에 존재하기 때문에, 코드 작성 규칙이나 라이브러리 버전 등을 중앙에서 관리할 수 있어 일관성을 유지하기 쉽다.

 

2. 코드 재사용성

  • 이미 작성된 코드를 다른 프로젝트나 모듈에서 다시 활용할 수 있는 능력을 말한다. 모노레포 환경에서는 여러 프로젝트가 같은 저장소에 있기 때문에, 공통적으로 필요한 기능이나 모듈을 쉽게 공유하고 재사용할 수 있다.

 

3. 팀간 협업 향상

  • 모노레포에서는 모든 팀이 동일한 코드베이스를 사용하므로, 서로의 작업을 쉽게 확인하고 통합할 수 있다.

 

 

3. 모노레포의 단점

  1. 저장소 크기
    • 모든 프로젝트가 단일 저장소에 포함되기 때문에, 시간이 지남에 따라 저장소의 크기가 커질 수 있다. 이로 인해 빌드 시간이 늘어날 수 있다.
  2. 복잡한 빌드 및 테스트
    • 모든 프로젝트를 동시에 빌드하고 테스트해야 할 경우, 특정 프로젝트에 대한 변경이 다른 프로젝트의 빌드 및 테스트에 영향을 줄 수 있. 이는 전체 빌드 시간을 증가시키고, 실패 원인을 찾는 데 어려움을 초래할 수 있습니다.
  3. 팀 간 의존성 관리:
    • 여러 팀이 동시에 작업할 때, 서로의 변경 사항에 의존하게 될 수 있습니다. 이는 팀 간의 조율을 필요로 하며, 의존성 충돌이 발생할 수 있습니다.