2026-03-27

모노레포(Monorepo)

모노레포란

여러 프로젝트나 패키지를 하나의 저장소(Repository)에서 함께 관리하는 방식

하나의 저장소 안에서

  • 웹 서비스
  • 관리자 페이지
  • 공통 UI 라이브러리
  • 유틸 패키지

등을 같이 관리 가능

repo/
 ├─ apps/
 │   ├─ web
 │   └─ admin
 ├─ packages/
 │   ├─ ui
 │   └─ utils

⇒ 관련 있는 여러 프로젝트를 하나의 레포에서 통합 관리하는 구조

왜 사용하는가

프로젝트가 커지면 여러 서비스가 같은 코드를 공유하는 경우가 많다.

예시)

  • 공통 버튼 컴포넌트
  • 디자인 시스템
  • API 타입
  • 유틸 함수

이걸 레포마다 따로 관리하면

  • 중복 코드 발생
  • 버전 관리 복잡
  • 동기화 어려움

⇒ 해결 위해 모노레포 사용

모노레포의 장점

  • 공통 코드 재사용이 쉬움 공통 컴포넌트나 유틸을 여러 프로젝트에서 함께 사용할 수 있다.
  • 일관성 있는 개발 환경 유지 eslint, prettier, tsconfig 같은 설정을 통일하기 쉽다.
  • 변경 관리가 쉬움 공통 패키지를 수정했을 때 관련 프로젝트를 같은 레포 안에서 함께 수정할 수 있다.
  • 협업 효율 향상 여러 팀이 하나의 기준 아래 작업할 수 있다.

모노레포의 단점

  • 초기 설정이 복잡함 빌드, 테스트, 의존성 관리 구조를 잘 잡아야 한다.
  • 레포 규모가 커질 수 있음 프로젝트가 많아질수록 관리가 어려워질 수 있다.
  • 빌드 최적화가 중요함 전체를 매번 빌드하면 비효율적이기 때문에 변경된 패키지만 빌드하는 전략이 필요하다.

멀티레포(Multi-repo)와의 차이

  • 모노레포
    • 하나의 저장소에 여러 프로젝트 존재
    • 공통 코드 공유 쉬움
    • 일관성 유지 용이
  • 멀티레포
    • 프로젝트마다 저장소 분리
    • 독립성 높음
    • 프로젝트 간 관리 분리 쉬움

모노레포에서 자주 쓰는 도구

  • Turborepo
  • Nx
  • pnpm workspace
  • Yarn workspace
  • Lerna

이런 도구를 사용해

  • 패키지 연결
  • 빌드 캐싱
  • 변경된 프로젝트만 실행

results matching ""

    No results matching ""