[Git] Monorepo

여러 프로젝트를 하나의 저장소에서 관리하는 Monorepo의 개념에 대해 정리했습니다.

2026-01-12조회수 -
monorepoGit

이전에는 monorepo 방식으로만 작업했었는데,
최근 백엔드 팀원과 다른 repository로 구분하여 작업하게 되어 두 방식을 비교해보았다.

Monorepo

Monorepo는 여러 패키지/서비스를 하나의 저장소에서 관리하는 방식이다.
공통 코드 공유와 버전 관리가 쉬워지지만, 빌드/테스트 비용이 커질 수 있다.

장점

  • 공통 라이브러리 공유가 쉽다.
  • 변경 이력과 의존성 추적이 단순해진다.
  • 일관된 개발 규칙/도구를 유지할 수 있다.

단점

  • 빌드/테스트 범위가 커져 느려질 수 있다.
  • 접근 권한과 배포 흐름이 복잡해질 수 있다.

Multi-repo (Polyrepo)

Monorepo와 반대로, 하나의 프로젝트/서비스당 하나의 저장소를 운영하는 전통적인 방식이다.

장점

  • 프로젝트 간의 코드 간섭이 전혀 없어 독립적인 배포와 개발이 가능하다.
  • 해당 프로젝트의 코드만 빌드/테스트하면 되므로 초기 CI/CD 속도가 빠르다.
  • 특정 팀원에게 특정 저장소의 접근 권한만 부여하기 쉽다.

단점

  • 공통 로직(예: API 통신 모듈, UI 컴포넌트)을 매번 복사하거나 별도 라이브러리로 배포해야 한다.
  • 공통 라이브러리 버전이 올라가면 이를 사용하는 수십 개의 저장소를 일일이 수정해야 한다.
구분MonorepoMulti-repo
코드 공유매우 쉬움 (내부 참조)어려움 (NPM 배포 등 필요)
의존성 관리단일 버전 관리 (일관성)저장소별 별도 관리 (파편화)
빌드 속도프로젝트 규모에 따라 느려짐각 저장소별로 매우 빠름
도구/설정전사적으로 동일한 규칙 적용프로젝트마다 제각각일 확률 높음

결론

두 가지 방식을 비교해본 결과, 결국 중요한 것은 운영 규칙이라고 느꼈다.

프론트엔드 개발자 3명이 각자의 범위를 나누어 모노레포로 작업했을 때는 공통 컴포넌트 재사용성 덕분에 작업이 효율적이었다. 하지만 프론트엔드 작업 중 실수로 백엔드 코드가 수정되어 이슈로 고생한 적이 있다. 이를 방지하려면 저장소 분리도 방법이지만, 모노레포 내에서 CODEOWNERS 같은 권한 설정과 엄격한 코드 리뷰 절차도 있음을 알게되었다.

이후 팀 프로젝트에 컨벤션 설정 단계에서 이러한 방법을 적용해 볼 것이다.

Comments

© 2026. Kwon In. All rights reserved.