Monorepo 개념 정리 — Multi Repo 와의 차이
분산된 여러 저장소를 하나로 묶어 관리하는 Monorepo 의 정의, Multi Repo 와의 차이, 장단점 정리.
이 글은 2020년 5월 백업 아카이브에서 복원된 글입니다. 당시 Lerna 가 주류였고, 현재는 pnpm workspaces / Turborepo 가 널리 쓰입니다.
최근 Monorepo 의 개념을 바탕으로 모듈 프로젝트를 진행하게 되어 이번 포스트에서는 Monorepo 에 대해 알아보는 시간을 가지려 합니다.
지금까지 Monorepo 의 기초적인 개념만 알고 있었지 실제 프로젝트에 도입해볼 기회가 많지 않았습니다. NPM 모듈을 개발하면서 기존의 Multi Repo 의 '하나의 저장소에 하나의 모듈' 이란 개념으로 모듈 개발을 진행해 왔습니다.
그러던 중, 최근 신규 프로젝트를 진행하면서 Lerna 라는 버전관리 도구를 도입하게 되었고, 다시 한번 Monorepo 의 개념을 정리하게 되었습니다.
Monorepo 를 한마디로 정의하자면, 분산되어 관리되던 기존의 여러 저장소를 한 저장소에 넣어 한 번에 관리하자 입니다. 반대 개념으로 Multi Repo 가 있습니다.
Monorepo 와 Multi Repo 차이
| 구분 | 정의 |
|---|---|
| Monorepo | 분산되어 관리되는 Repository 를 하나의 Repository 안에 넣어서 관리 |
| Multi Repo | Package 들을 각각의 Repository 에서 관리 |
Monorepo 의 장점
- 하나의 저장소에서 관리하기 쉽다
- 코드의 재사용이 간편하다
- 의존성을 관리하는 부하가 적다
- 쉬운 개발환경 구축 및 빌드·테스트가 가능하다
- 프로젝트 간의 통합 테스트나 코드 검색이 단순해진다
- API 와 모든 호출자의 리팩토링을 커밋 하나로 해결할 수 있다
- 대규모 코드 리팩토링이 용이하다
- 팀 간 협업이 쉬워진다
Monorepo 의 단점
- 최신 의존성을 관리하는 메커니즘이 필요하다
- 버전 정보의 손실이 발생할 수 있다
- 프로젝트별 보안성이 부족하다
- 더 많은 스토리지가 필요하다
방명록
이 글에 대한 한 줄을 남겨주세요
불러오는 중...