- 0
- 2
모노레포(Monorepo)란?
답변 확인
- 모노레포는 여러 프로젝트 또는 패키지를 하나의 코드 저장소(Repository)로 통합하여 관리하는 방식을 의미
- Mono(단일) + Repo(저장소)
1. ✅ 모노레포의 구성 방식
모노레포를 구성하는 방식은 크게 두 가지
1. 프로젝트 단위로 분리하는 구조
- 프로젝트들이 하나의 저장소 안에서 각각 독립적인 폴더로 구성
packages/
폴더 아래에 각 프로젝트 폴더가 배치되는 구조- 공통 의존성은
yarn workspaces
나npm workspaces
같은 기능을 이용해 중아에서 관리 가능 - 💡 중복된 의존성 최소화, 프로젝트 간 코드 공유가 쉬움
2. 공통 모듈을 분리하는 구조
- 공통 모듈(예: 유틸리티 함수, 스타일, 공통 컴포넌트)을 shared/ 폴더에 두고 필요할 때마다 불러오는 방식
- 공통 코드를 한 번 수정하면 모든 프로젝트에 반영되기 때문에 유지보수가 용이
- 💡 코드의 일관성을 유지하고 중복을 줄이는 데 도움을 줌
2. ✅ 모노레포의 장점
1. 일관성 있는 관리
- 여러 프로젝트를 동일한 코드베이스에서 관리할 수 있어 협업 효율성을 높여줌
- 대규모 조직에서 프로젝트 간 설정이나 공통 모듈을 쉽게 공유하고 유지할 수 있음
2.중앙화된 의존성 관리
- 공통으로 사용하는 라이브러리나 컴포넌트를 한 번만 업데이트하면 모든 프로젝트에 반영
3. 동일한 버전 관리 시스템 사용
- 프로젝트 간의 변경 사항을 쉽게 추적하고, 영향도를 명확히 확인 가능
2. ❌ 모노레포의 단점
1. 스케일링의 어려움
- 프로젝트 수가 많아질수록 빌드, 텟트 시간이 길어짐
- CI/CD 파이프라인 관리가 복잡해질 수 있음
- 이를 해결하기 위해
Nx
,Turborepo
같은 모노레포 관리 툴 사용이 필요
2. 권한 관리의 어려움
- 모든 프로젝트가 하나의 저장소에 통합되므로, 특정 팀이나 프로젝트만 접근 권한을 가지도록 설정하기 어려움
3. 작은 규모의 프로젝트에는 오히려 비효율적일 수 있음
- 단일 프로젝트 개발 환경에서는 불필요하게 복잡도를 증가시킬 수 있음
🔹 결론
📌 모노레포를 도입해야 할 때
- ✅ 여러 프로젝트가 공통 라이브러리나 설정을 공유할 때
- ✅ 프로젝트 간 협업과 유지보수를 쉽게 하고 싶을 때
- ✅ 코드의 일관성과 중앙화된 의존성 관리를 중요하게 생각할 때
📚 참고 자료
Top comments (2)
- DavidYang2월 19일
우와 댓글이다~
- Olivia2월 19일
오오 ~~ :) 너무 글 좋네용