MonoRepo

sumnie·2022년 11월 17일
0
post-thumbnail

MonoRepo

MonoRepo(Monolithic Repositories)란?

모노레포 구조는 두 개 이상의 프로젝트가 동일한 저장소에 저장되는 소프트웨어 개발 전략이다. 즉 하나의 레포지토리에서 여러개의 프로젝트가 들어있는 것이다.
단순히 여러 프로젝트가 하나의 저장소를 사용한다고 해서 모노레포라고 하긴 어렵다. 모노레포에서는 프로젝트 사이에 의존성이나 같은 제품군이거나 하는 관계가 존재해야한다. 그리고 모노레포가 이러한 관계를 효율적으로 관리해주는 것이다.

MonoRepo를 사용하는 이유

PolyRepo (MultiRepo)

우리는 일반적으로 하나의 레포지토리 안에 하나의 프로젝트로 구성되어 있는 폴리레포 (Poly Repo) 방식을 사용하고 있다. 멀티레포 방식은 독립적이여서 다른 프로젝트의 영향을 받지 않고 빠르게 개발이 가능하지만 여러 문제점이 있다.

폴리레포의 문제점

  • 코드 중복
  • 코드 공유 어려움
  • 버전관리 어려움
  • 일관되지 않은 빌드, 배포 명령어
  • 번거로운 프로젝트 생성

모노레포의 장점

모노레포는 위와 같은 폴리레포의 문제점을 해결 할 수 있다.

  • 더 쉽게 프로젝트를 생성
  • 관리 포인트들을 한 번에 반영 예시)외부 라이브러리를 사용하는 경우 버전을 맞추기 용이
  • 커밋할 때마다 모든 것이 함께 작동하기 때문에 변경 사항의 영향을 받는 조직에서 쉽고 빠르게 변화를 줄 수 있고 더불어 리팩토링 비용을 감소
  • 다른 팀원이 만든 코드를 필요시에 공유하고 재사용할 수 있어 업무 효율을 높일 수 있다. 그렇다고 소스 변경 시 모든 프로젝트를 다시 빌드하거나 다시 테스트하지 않는다. 영향을 받는 프로젝트만 다시 테스트하고 빌드한다.

MonoRepo를 사용하면 좋은 상황

위 설명대로라면 모노레포가 멀티레포보다 나아 보이지만 항상 그렇지는 않다. 중요한건 프로젝트 사이의 관계이다!

  • 유사한 제품의 집합
  • 여러 프로젝트의 변화를 한눈에 파악해야 할 때
  • 호스트 애플리케이션을 플러그인 등으로 확장할 때
  • 공통 기능을 재사용하는 관련된 프로젝트의 집합
  • 유사한 DevOps로 구성된 프로젝트의 집합

MonoRepo 자료 및 사례

구글이 모노레포를 어떻게 왜 사용하는지에 대한 문서 : https://dl.acm.org/doi/pdf/10.1145/2854146
Turborepo로 모노레포 개발경험 공유한 blog : https://engineering.linecorp.com/ko/blog/monorepo-with-turborepo
모노레포 구축 사례 : https://helloinyong.tistory.com/334




참고자료 : 모노레포의 문제점,모노레포 개념1,모노레포 개념2

profile
모두가 행복했으면 좋겠어🌈

0개의 댓글