728x90

최근에 회사에서 워드프레스로 사용한 홈페이지를 자체 개발로 바꾸기 위해서
프론트, 백엔드 서비스를 만들었다.
회사를 소개하는 홈페이지라서 따로 로그인이 있는건 아니다.
그래서 모노레포방식으로 진행을 했다.
**모노레포(Monorepo)**는 'Monolithic Repository'의 줄임말로, 두 개 이상의 서로 다른 프로젝트나 패키지의 코드를 단일 버전 관리 저장소(Repository)에 함께 저장하고 관리하는 소프트웨어 개발 전략입니다.
구글(Google), 메타(Meta), 마이크로소프트(Microsoft)와 같은 대형 테크 기업들이 수십억 줄의 코드를 하나의 저장소에서 관리하는 것으로 잘 알려져 있으며, 최근에는 규모에 상관없이 많은 개발 팀에서 도입하고 있습니다.
모노레포의 주요 장점
- 코드 공유 및 재사용성 향상: 공통으로 사용하는 유틸리티 함수나 UI 컴포넌트를 별도의 패키지로 만들어 여러 프로젝트에서 쉽게 가져다 쓸 수 있습니다.
- 단일 출처 (Single Source of Truth): 의존성(Dependency) 관리가 한 곳에서 이루어지므로, 서로 다른 프로젝트에서 각기 다른 버전의 라이브러리를 사용하여 발생하는 충돌을 방지할 수 있습니다.
- 원자적 커밋 (Atomic Commits): 핵심 라이브러리의 코드를 수정할 때, 그 라이브러리를 의존하는 다른 프로젝트들의 코드도 한 번의 커밋으로 동시에 수정하고 테스트할 수 있습니다. 대규모 리팩토링이 훨씬 안전해집니다.
- 팀 간 협업 용이: 다른 팀의 코드를 쉽게 검색하고 열람할 수 있어 사일로(Silo) 현상을 줄이고 코드 리뷰가 수월해집니다.
모노레포의 단점 및 한계
- 저장소 크기 증가: 프로젝트가 커질수록 저장소의 용량도 방대해져 코드를 처음 클론(Clone)하거나 빌드하는 데 시간이 오래 걸릴 수 있습니다.
- 권한 관리의 복잡성: 단일 저장소이기 때문에 특정 프로젝트에 대해서만 접근 권한을 제한하기가 기술적으로 까다롭습니다.
- 도구 학습 곡선: 모노레포를 효율적으로 운영하려면 빌드 속도 최적화 및 의존성 분석을 위해 Nx, Turborepo, Lerna, Bazel과 같은 전문적인 빌드 도구 도입이 필수적이며, 이에 대한 학습이 필요합니다.
모노레포 vs 멀티레포 (Polyrepo) 비교
| 특징 | 모노레포 (Monorepo) | 멀티레포 (Multi-repo / Polyrepo) |
| 코드 위치 | 하나의 저장소에 모든 프로젝트 통합 | 프로젝트별로 개별 저장소 사용 |
| 의존성 관리 | 일관된 단일 버전으로 관리하기 용이함 | 각 저장소마다 개별적으로 버전 관리 |
| 리팩토링 | 여러 프로젝트에 걸친 변경을 한 번에 커밋 | 각 저장소마다 개별적으로 커밋 및 PR 생성 |
| 빌드 도구 | Nx, Turborepo 등 전문 도구 설정 필요 | 기본 도구만으로 비교적 단순하게 구성 가능 |
| 저장소 크기 | 방대해질 수 있음 (성능 이슈 발생 가능) | 각 프로젝트 크기만큼 작고 가벼움 |
프로젝트 자체가 더이상 개발할 가능성이 적고
수정을 해도 문구정도여서 모노레포를 선택해서 진행했습니다.
728x90
'Study > 개념공부' 카테고리의 다른 글
| Vitest vs Jest : 당신의 프로젝트에 적합한 테스트 프레임워크는? (1) | 2026.02.16 |
|---|---|
| [개념정리] API (0) | 2022.11.18 |
| [개념공부] controller, service, repository, dto, entity 등 무엇인가? (0) | 2022.08.25 |
| [개념] enum이 무엇일까? (0) | 2022.07.22 |
| 세션과 쿠키 동작원리 및 쿠키, 세션 정의 (0) | 2021.12.26 |