# 모노레포는 폴더 합치기가 아니다

> apps/packages, 계층 규칙, workspace protocol과 naming

- Canonical: https://learning.reopt.ai/en/courses/enterprise-monorepo/lessons/em-m1-concept
- Language: en
- HTML: https://learning.reopt.ai/en/courses/enterprise-monorepo/lessons/em-m1-concept

---

[Enterprise monorepo architecture](/en/courses/enterprise-monorepo) 1. 저장소 경계와 의존성 방향 1 / 9

# 모노레포는 폴더 합치기가 아니다

apps/packages, 계층 규칙, workspace protocol과 naming
Concept 45 XP 9 min

모노레포의 가치는 코드가 한곳에 있다는 사실보다 변경 관계와 검증·릴리즈를 일관되게 계산 할 수 있다는 데 있습니다. apps는 독립 배포 단위, packages는 재사용 단위로 두고 의존성은 types/config 같은 하위 계층에서 app으로만 흐르게 합니다.
경계는 배포와 책임으로 정한다 독립 배포·환경·런타임이 필요하면 app, 단독 배포 없이 여러 app이 소비하면 package입니다. 같은 계층 상호 참조는 금지하고 공개 exports만 사용합니다.

| 계층 | 예시 | 참조 규칙 |
| L0 기반 | types·config | 외부만 참조 |
| L1 인프라 | db·api-client·observability | L0만 참조 |
| L2 도메인/UI | billing·auth·ui | L0~L1 참조 |
| L3 apps | web·admin·worker | L0~L2 참조 |

- 1 배포 단위 목록화 각 app의 runtime·domain·owner를 정합니다.

- 2 패키지 책임 하나의 이유로 변경되는 코드만 묶습니다.

- 3 의존성 방향 계층 규칙과 forbidden edge를 선언합니다.

- 4 Workspace 연결 내부 package는 workspace:*와 명시적 exports를 씁니다.

실무에 남길 기준

- 모노레포의 핵심은 위치가 아니라 변경·의존·배포 관계다
- 내부 패키지는 registry가 아닌 workspace protocol로 고정한다
- 경계 규칙은 문서뿐 아니라 lint·boundary 검사로 강제한다

Got it · Continue

---

Site guide for agents: https://learning.reopt.ai/llms.txt · Sitemap: https://learning.reopt.ai/sitemap.xml · Contact: https://learning.reopt.ai/contact
