• 0
  • 2
March 20, 2025

모노레포(Monorepo)란?

답변 확인

  • 모노레포는 여러 프로젝트 또는 패키지를 하나의 코드 저장소(Repository)로 통합하여 관리하는 방식을 의미
  • Mono(단일) + Repo(저장소)

1. ✅ 모노레포의 구성 방식

모노레포를 구성하는 방식은 크게 두 가지

1. 프로젝트 단위로 분리하는 구조

  • 프로젝트들이 하나의 저장소 안에서 각각 독립적인 폴더로 구성
  • packages/ 폴더 아래에 각 프로젝트 폴더가 배치되는 구조
  • 공통 의존성은 yarn workspacesnpm workspaces 같은 기능을 이용해 중아에서 관리 가능
  • 💡 중복된 의존성 최소화, 프로젝트 간 코드 공유가 쉬움

2. 공통 모듈을 분리하는 구조

  • 공통 모듈(예: 유틸리티 함수, 스타일, 공통 컴포넌트)을 shared/ 폴더에 두고 필요할 때마다 불러오는 방식
  • 공통 코드를 한 번 수정하면 모든 프로젝트에 반영되기 때문에 유지보수가 용이
  • 💡 코드의 일관성을 유지하고 중복을 줄이는 데 도움을 줌

2. ✅ 모노레포의 장점

1. 일관성 있는 관리

  • 여러 프로젝트를 동일한 코드베이스에서 관리할 수 있어 협업 효율성을 높여줌
  • 대규모 조직에서 프로젝트 간 설정이나 공통 모듈을 쉽게 공유하고 유지할 수 있음

2.중앙화된 의존성 관리

  • 공통으로 사용하는 라이브러리나 컴포넌트를 한 번만 업데이트하면 모든 프로젝트에 반영

3. 동일한 버전 관리 시스템 사용

  • 프로젝트 간의 변경 사항을 쉽게 추적하고, 영향도를 명확히 확인 가능

2. ❌ 모노레포의 단점

1. 스케일링의 어려움

  • 프로젝트 수가 많아질수록 빌드, 텟트 시간이 길어짐
  • CI/CD 파이프라인 관리가 복잡해질 수 있음
  • 이를 해결하기 위해 Nx, Turborepo 같은 모노레포 관리 툴 사용이 필요

2. 권한 관리의 어려움

  • 모든 프로젝트가 하나의 저장소에 통합되므로, 특정 팀이나 프로젝트만 접근 권한을 가지도록 설정하기 어려움

3. 작은 규모의 프로젝트에는 오히려 비효율적일 수 있음

  • 단일 프로젝트 개발 환경에서는 불필요하게 복잡도를 증가시킬 수 있음

🔹 결론

📌 모노레포를 도입해야 할 때

  • ✅ 여러 프로젝트가 공통 라이브러리나 설정을 공유할 때
  • ✅ 프로젝트 간 협업과 유지보수를 쉽게 하고 싶을 때
  • ✅ 코드의 일관성과 중앙화된 의존성 관리를 중요하게 생각할 때

📚 참고 자료

Top comments (2)

  • DavidYang2월 19일

    우와 댓글이다~

  • Olivia2월 19일

    오오 ~~ :) 너무 글 좋네용