# [[Modular Monolith]] ## πŸ“Œ Brief Summary λͺ¨λ“ˆλŸ¬ λͺ¨λ†€λ¦¬μŠ€(Modular Monolith)λŠ” 단일 배포 μ• ν”Œλ¦¬μΌ€μ΄μ…˜(λͺ¨λ†€λ¦¬μŠ€) 내뢀에 μ—„κ²©ν•œ 경계λ₯Ό κ°€μ§„ λͺ¨λ“ˆμ„ κ²°ν•©ν•˜λŠ” ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜ μ ‘κ·Όλ²•μž…λ‹ˆλ‹€ [1]. 마이크둜 ν”„λ‘ νŠΈμ—”λ“œμ²˜λŸΌ μ—¬λŸ¬ 개의 λ…λ¦½λœ 앱을 μš΄μ˜ν•˜λŠ” λŒ€μ‹ , ν•˜λ‚˜μ˜ React μ…Έ(Shell) 앱을 μœ μ§€ν•˜λ©΄μ„œ μ£Όλ¬Έμ΄λ‚˜ 결제 같은 κΈ°λŠ₯(Feature)λ³„λ‘œ λͺ¨λ“ˆμ„ λΆ„λ¦¬ν•©λ‹ˆλ‹€ [2]. 각 λͺ¨λ“ˆμ€ κ³ μœ ν•œ UI, μƒνƒœ 관리, λΌμš°νŒ… 및 API 계측을 λ…λ¦½μ μœΌλ‘œ μ†Œμœ ν•˜λ―€λ‘œ, λŸ°νƒ€μž„ λ³΅μž‘μ„± 없이도 λͺ…ν™•ν•œ 관심사 뢄리와 κΈ°λŠ₯ μ†Œμœ κΆŒμ„ μ œκ³΅ν•©λ‹ˆλ‹€ [2, 3]. ## πŸ“– Core Content * **단일 μ…Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό ν”ŒλŸ¬κ·ΈμΈ ꡬ쑰:** ν•˜λ‚˜μ˜ μ»¨ν…Œμ΄λ„ˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 인증, μ „μ—­ λΌμš°νŒ…, λ ˆμ΄μ•„μ›ƒ λ“± 핡심 곡톡 κ΄€μ‹¬μ‚¬λ§Œ μ²˜λ¦¬ν•©λ‹ˆλ‹€. κ°œλ³„ κΈ°λŠ₯은 이 μ…Έ 앱에 λ“±λ‘λ˜λŠ” λͺ¨λ“ˆλ‘œμ„œ μž‘λ™ν•˜λ©°, 각 λͺ¨λ“ˆμ€ 자체적인 λ‚΄λΆ€ λΌμš°νŒ…κ³Ό 도메인 API μƒν˜Έμž‘μš©μ„ μ™„μ „νžˆ μ±…μž„μ§‘λ‹ˆλ‹€ [3, 4]. * **수직적 슬라이슀(Vertical Slice) μ•„ν‚€ν…μ²˜ κ²°ν•©:** 각 λͺ¨λ“ˆμ€ UIλΆ€ν„° λ°μ΄ν„°λ² μ΄μŠ€ 및 API μ—°κ²° κ³„μΈ΅κΉŒμ§€ μ•„μš°λ₯΄λŠ” 수직적 슬라이슀 ν˜•νƒœλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. 이λ₯Ό 톡해 각 도메인 κΈ°λŠ₯ λ‚΄μ˜ 응집도λ₯Ό 높이고 독립적인 κ°œλ°œμ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€ [1, 5]. * **μ—„κ²©ν•œ 경계 및 μ˜μ‘΄μ„± 관리:** μ„œλ‘œ λ‹€λ₯Έ κΈ°λŠ₯ λͺ¨λ“ˆ κ°„μ˜ 직접적인 ꡐ차 μž„ν¬νŠΈ(Cross-domain import)λŠ” μ—„κ²©νžˆ κΈˆμ§€λ©λ‹ˆλ‹€ [1, 3]. μ»΄ν¬λ„ŒνŠΈλ‚˜ λ‘œμ§μ„ κ³΅μœ ν•΄μ•Ό ν•  경우, λͺ¨λ“  λͺ¨λ“ˆμ΄ μ†ŒλΉ„ν•  수 μžˆλŠ” 곡톡 νŒ¨ν‚€μ§€(예: core λ˜λŠ” foundations 폴더)둜 λΆ„λ¦¬ν•˜μ—¬ 관리해야 ν•©λ‹ˆλ‹€ [3, 6]. * **도ꡬ와 λͺ¨λ…Έλ ˆν¬(Monorepo) ν™œμš©:** μ΄λŸ¬ν•œ κΉ¨λ—ν•œ λͺ¨λ“ˆ λΆ„λ¦¬λŠ” Turborepo, Nx, Vite λ“±κ³Ό 같은 λͺ¨λ…Έλ ˆν¬ ꡬ쑰 및 λΉŒλ“œ 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ ꡬ쑰적으둜 κ°•μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2]. 특히 Nx 같은 도ꡬλ₯Ό ν™œμš©ν•˜λ©΄ λͺ¨λ“ˆ 경계 κ·œμΉ™μ„ μ μš©ν•˜μ—¬, 잘λͺ»λœ ꡐ차 μž„ν¬νŠΈ λ°œμƒ μ‹œ 이λ₯Ό μ½”λ“œ 리뷰 전에 λΉŒλ“œ νƒ€μž„ μ—λŸ¬λ‘œ μž‘μ•„λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€ [3]. * **마이크둜 ν”„λ‘ νŠΈμ—”λ“œ(Micro-frontends) λŒ€λΉ„ 이점:** λͺ¨λ“ˆλŸ¬ λͺ¨λ†€λ¦¬μŠ€λŠ” λͺ¨λ“ˆ νŽ˜λ”λ ˆμ΄μ…˜(Module Federation), μ€‘λ³΅λœ React μΈμŠ€ν„΄μŠ€ λ‘œλ“œ, λΆ„μ‚°λœ E2E ν…ŒμŠ€νŠΈ 및 배포 κ²°ν•© λ“± 마이크둜 ν”„λ‘ νŠΈμ—”λ“œμ˜ μ „ν˜•μ μΈ μ˜€λ²„ν—€λ“œμ™€ λŸ°νƒ€μž„ λ³΅μž‘μ„±μ„ ν”Όν•˜λ©΄μ„œλ„ λͺ…ν™•ν•œ μ†Œμœ κΆŒ 경계λ₯Ό 달성할 수 있게 ν•΄μ€λ‹ˆλ‹€ [2, 7, 8]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Micro-frontends]], [[Vertical Slice Architecture]], [[Monorepo]], [[Feature-Sliced Design]] - **Projects/Contexts:** [[Scalable React Architecture]], [[Turborepo/Nx Workspace]] - **Contradictions/Notes:** 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜λŠ” κ°€μž₯ 높은 μˆ˜μ€€μ˜ 결합도 뢄리(Decoupling)λ₯Ό μ œκ³΅ν•˜μ§€λ§Œ μœ μ§€λ³΄μˆ˜μ™€ 배포의 μ˜€λ²„ν—€λ“œκ°€ 맀우 큰 반면, λͺ¨λ“ˆλŸ¬ λͺ¨λ†€λ¦¬μŠ€λŠ” μ™„μ „ν•œ 독립성을 일뢀 ν¬κΈ°ν•˜λŠ” λŒ€μ‹  단일 μ•± ν™˜κ²½μ—μ„œ 훨씬 적은 λ³΅μž‘μ„±μœΌλ‘œ μœ μ‚¬ν•œ ν™•μž₯μ„± 및 격리 효과λ₯Ό 얻을 수 μžˆλ‹€λŠ” λͺ…ν™•ν•œ νŠΈλ ˆμ΄λ“œμ˜€ν”„κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€ [2, 9]. --- *Last updated: 2026-04-26*