모노레포란 무엇인가요
모노레포는 여러 프로젝트 또는 패키지를 하나의 코드 저장소에서 통합 관리하는 방식입니다.
구성 방식
대표적으로 프로젝트 단위로 폴더를 나누고, 공통 모듈을 별도 패키지로 분리합니다.
repo/
apps/
web/
admin/
packages/
ui/
utils/
여러 앱은 packages의 공통 UI, 유틸리티, 설정 패키지를 가져다 사용할 수 있습니다. 의존성은 npm, yarn, pnpm의 workspace 기능으로 중앙에서 관리할 수 있습니다.
장점
- 여러 프로젝트의 코드와 설정을 일관되게 관리할 수 있습니다.
- 공통 모듈을 한 번 수정하면 관련 프로젝트에 함께 반영하기 쉽습니다.
- 프로젝트 간 변경 이력을 하나의 저장소에서 추적할 수 있습니다.
- 대규모 리팩터링이나 공통 규칙 적용이 편리합니다.
단점
- 코드베이스가 커지면 빌드와 테스트 시간이 늘어날 수 있습니다.
- 특정 팀이나 프로젝트 단위로 권한을 나누기 어렵습니다.
- CI/CD 파이프라인과 의존성 그래프 관리가 복잡해질 수 있습니다.
- 이를 줄이기 위해 Nx, Turborepo 같은 도구로 변경된 프로젝트만 빌드하거나 캐시를 활용합니다.
정리
모노레포는 여러 프로젝트를 하나의 저장소에서 관리해 공유와 일관성을 높이는 방식입니다. 다만 규모가 커질수록 빌드 최적화, 권한 관리, CI/CD 설계가 함께 필요합니다.