# [[Micro-frontends]] ## πŸ“Œ Brief Summary 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ(Micro-frontends)λŠ” ν˜„λŒ€ λŒ€κ·œλͺ¨ μ—”ν„°ν”„λΌμ΄μ¦ˆ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ—¬λŸ¬ λͺ¨λ“ˆμ΄ κ³΅μ‘΄ν•˜λ„λ‘ μ‹œμŠ€ν…œμ„ κ΅¬μ„±ν•˜λŠ” μ•„ν‚€ν…μ²˜ ν‘œμ€€μž…λ‹ˆλ‹€ [1]. 이 κ΅¬μ‘°λŠ” λͺ¨λ…Έλ ˆν¬(Monorepo) μ•„ν‚€ν…μ²˜μ™€ κ²°ν•©λ˜μ–΄ μ‚¬μš©λ˜λŠ” κ²½μš°κ°€ 많으며, μœ μ—°ν•˜κ³  λ―Όμ²©ν•œ κ°œλ°œμ„ κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€ [1]. κ·ΈλŸ¬λ‚˜ μ μ ˆν•œ μ»΄ν¬λ„ŒνŠΈ μ „λž΅μ΄ λ™λ°˜λ˜μ§€ μ•ŠμœΌλ©΄ μ‚¬μš©μž κ²½ν—˜μ˜ νŒŒνŽΈν™”λ‚˜ μ „μ—­ μŠ€νƒ€μΌ μ˜€μ—Ό(Global pollution)κ³Ό 같은 μ‹¬κ°ν•œ 기술 뢀채λ₯Ό μœ λ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1-3]. ## πŸ“– Core Content * **λŒ€κ·œλͺ¨ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ•„ν‚€ν…μ²˜ ν‘œμ€€** ν˜„λŒ€ μ—”ν„°ν”„λΌμ΄μ¦ˆκΈ‰ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν™˜κ²½μ—μ„œ 마이크둜 ν”„λ‘ νŠΈμ—”λ“œμ™€ λͺ¨λ…Έλ ˆν¬ μ•„ν‚€ν…μ²˜λŠ” ν‘œμ€€μœΌλ‘œ 자리 μž‘μ•˜μŠ΅λ‹ˆλ‹€ [1]. μ΄λŸ¬ν•œ λ³΅μž‘ν•œ 닀쀑 λͺ¨λ“ˆ μ‹œμŠ€ν…œμ—μ„œλŠ” μ»΄ν¬λ„ŒνŠΈ ν™•μž₯ 및 관리 μ „λž΅μ΄ νŒ€μ˜ 개발 민첩성을 μœ μ§€ν• μ§€, μ•„λ‹ˆλ©΄ 기술 λΆ€μ±„λ‘œ 인해 λ§ˆλΉ„λ μ§€λ₯Ό κ²°μ •μ§“λŠ” 핡심 μš”μ†Œκ°€ λ©λ‹ˆλ‹€ [1]. * **단일 μ§„μ‹€ 곡급원(Single Source of Truth)을 ν†΅ν•œ 일관성 확보** 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ 것은 μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ 같은 단일 μ§„μ‹€ 곡급원을 κ°•μ œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ [2]. 이λ₯Ό 톡해 μ„œλ‘œ λ‹€λ₯Έ 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ 간에도 λ§€λ„λŸ¬μš΄ μ‚¬μš©μž κ²½ν—˜(UX)을 μœ μ§€ν•  수 있으며, μ—¬λŸ¬ λͺ¨λ“ˆμ΄ 마치 μ™„μ „νžˆ λ‹€λ₯Έ μ•±μ²˜λŸΌ λŠκ»΄μ§€λŠ” ν˜„μƒμ„ λ°©μ§€ν•˜μ—¬ μ‚¬μš©μžμ˜ μ‹ λ’°λ₯Ό ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€ [2]. * **μŠ€νƒ€μΌ μΊ‘μŠν™”μ™€ 격리** 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜κ°€ λ„μž…λ¨μ— 따라, ν•œ λͺ¨λ“ˆμ˜ μŠ€νƒ€μΌ 변경이 λ‹€λ₯Έ λͺ¨λ“ˆμ˜ λ ˆμ΄μ•„μ›ƒμ„ 우발적으둜 λ§κ°€λœ¨λ¦¬λŠ” 'μ „μ—­ μ˜€μ—Ό(Global pollution)'의 μœ„ν—˜μ΄ κ·Έ μ–΄λŠ λ•Œλ³΄λ‹€ λ†’μ•„μ‘ŒμŠ΅λ‹ˆλ‹€ [3]. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ CSS μœ μΆœμ„ 막고 μ»΄ν¬λ„ŒνŠΈ 경계 λ‚΄μ—μ„œ μŠ€νƒ€μΌμ„ μ—„κ²©νžˆ μΊ‘μŠν™”ν•˜λŠ” 기술(예: Vue의 `scoped` 속성 λ“±)이 ν•„μˆ˜μ μœΌλ‘œ μš”κ΅¬λ©λ‹ˆλ‹€ [3]. ## βš–οΈ Trade-offs & Caveats * **νŒŒνŽΈν™”(Fragmentation) ν˜„μƒμ˜ μœ„ν—˜** 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ μ‹œμŠ€ν…œμ—μ„œλŠ” λͺ¨λ“ˆλ³„λ‘œ 개발이 λΆ„μ‚°λ˜κΈ° λ•Œλ¬Έμ— μΌκ΄€λœ λ””μžμΈ μ‹œμŠ€ν…œμ΄λ‚˜ μ»΄ν¬λ„ŒνŠΈ 정책이 μ—†μœΌλ©΄ 각 λͺ¨λ“ˆμ˜ UI/UXκ°€ 제각각 λΆ„λ¦¬λ˜μ–΄ λ³΄μ΄λŠ” 'νŒŒνŽΈν™”' λ¬Έμ œκ°€ λ°œμƒν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€ [2]. * **μ „μ—­ μŠ€νƒ€μΌ μ˜€μ—Ό(Global Pollution)에 μ·¨μ•½** λ…λ¦½μ μœΌλ‘œ 개발된 λͺ¨λ“ˆλ“€μ΄ ν•œ 화면에 쑰립될 λ•Œ CSS 클래슀 이름이 μΆ©λŒν•˜κ±°λ‚˜ μŠ€νƒ€μΌμ΄ λˆ„μˆ˜(CSS leakage)될 수 μžˆμŠ΅λ‹ˆλ‹€ [3]. μŠ€μ½”ν”„(Scoped) 처리 없이 마이크둜 ν”„λ‘ νŠΈμ—”λ“œλ₯Ό κ΅¬μ„±ν•˜λ©΄ 예기치 μ•Šκ²Œ λ‹€λ₯Έ λͺ¨λ“ˆμ˜ λ ˆμ΄μ•„μ›ƒμ΄ λΆ•κ΄΄λ˜λŠ” 치λͺ…적인 λΆ€μž‘μš©μ„ κ²ͺ을 수 μžˆμŠ΅λ‹ˆλ‹€ [3]. ## πŸ”— Knowledge Connections ### Related Concepts #### [μ•„ν‚€ν…μ²˜/기반 기술] - [[Monorepo architectures]] - μ—°κ²° 이유: λŒ€κ·œλͺ¨ 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ ν™˜κ²½μ„ ꡬ좕할 λ•Œ ν‘œμ€€μ μœΌλ‘œ ν•¨κ»˜ μ±„νƒλ˜λŠ” μ €μž₯μ†Œ 관리 κ΅¬μ‘°μž…λ‹ˆλ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 마이크둜 ν”„λ‘ νŠΈμ—”λ“œλ₯Ό κ΅¬μ„±ν•˜λŠ” μ—¬λŸ¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(예: κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ, 고객 포털 λ“±)κ³Ό 곡유 UI νŒ¨ν‚€μ§€(예: `packages/ui`)λ₯Ό 단일 μ €μž₯μ†Œ λ‚΄μ—μ„œ μ–΄λ–»κ²Œ 효율적으둜 μ—°λ™ν•˜κ³  λΉŒλ“œν•˜λŠ”μ§€ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [4]. #### [κ΅¬ν˜„/ν™œμš© 도ꡬ] - [[Scoped Styles]] - μ—°κ²° 이유: 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ 간에 ν”νžˆ λ°œμƒν•˜λŠ” 'μŠ€νƒ€μΌ 유좜'κ³Ό 'μ „μ—­ μ˜€μ—Ό'을 λ°©μ§€ν•˜κΈ° μœ„ν•œ ν•„μˆ˜μ μΈ λ°©μ–΄ μˆ˜λ‹¨μž…λ‹ˆλ‹€ [3]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ‹€μ–‘ν•œ 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ λͺ¨λ“ˆμ΄ λ™μΌν•œ 화면에 λ Œλ”λ§λ  λ•Œ, κ³ μœ ν•œ 데이터 속성(data attribute) 등을 톡해 μ‹œκ°μ  독립성과 μ•ˆμ „μ„±μ„ μœ μ§€ν•˜λŠ” 원리λ₯Ό νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. - [[Reusable Components]] - μ—°κ²° 이유: 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ μ „λ°˜μ—μ„œ UX νŒŒνŽΈν™”λ₯Ό λ°©μ§€ν•˜λŠ” '단일 μ§„μ‹€ 곡급원'의 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€ [2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λΆ„μ‚°λœ ν”„λ‘ νŠΈμ—”λ“œ λͺ¨λ“ˆλ“€μ΄ μ–΄λ–»κ²Œ 쀑볡 λ‘œμ§μ„ 쀄이고, μΌκ΄€λœ λ””μžμΈ μ‹œμŠ€ν…œμ˜ 무결성(Integrity)을 μœ μ§€ν•˜λŠ”μ§€ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [2]. ### Deeper Research Questions - 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ κ°„μ˜ 'μ „μ—­ μ˜€μ—Ό(Global pollution)'을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ `scoped` μŠ€νƒ€μΌ 이외에 μ μš©ν•  수 μžˆλŠ” ν˜„λŒ€μ μΈ CSS μ•„ν‚€ν…μ²˜ μ „λž΅μ€ 무엇인가? [3] - μ„œλ‘œ λ‹€λ₯Έ 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ λͺ¨λ“ˆμ΄ 톡합될 λ•Œ, 곡유 μ»΄ν¬λ„ŒνŠΈ 라이브러리의 버전 뢈일치둜 μΈν•œ μΆ©λŒμ„ λ°©μ§€ν•˜λŠ” λͺ¨λ…Έλ ˆν¬ 배포 μ „λž΅μ€ 무엇인가? [1, 5] - 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ ν™˜κ²½μ—μ„œ 단일 μ§„μ‹€ 곡급원 역할을 ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈκ°€ λ³€κ²½λ˜μ—ˆμ„ λ•Œ, 전체 μ‹œμŠ€ν…œμ˜ UX νŒŒνŽΈν™”λ₯Ό 막기 μœ„ν•œ ν…ŒμŠ€νŠΈ/검증 μžλ™ν™” 방법은 무엇인가? [2, 6] - 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ λ‹¨μœ„λ‘œ λ Œλ”λ§μ„ λΆ„ν• ν•  λ•Œ 초기 λ‘œλ”© 및 Core Web Vitals μ„±λŠ₯ μ΅œμ ν™”μ— λ―ΈμΉ˜λŠ” 영ν–₯은 μ–΄λ– ν•œκ°€? [7] - λͺ¨λ…Έλ ˆν¬μ™€ 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ κ΅¬μ‘°μ—μ„œ 곡톡 둜직(Composable, ν›… λ“±)을 λΆ„λ¦¬ν•˜μ—¬ κ³΅μœ ν•  λ•Œμ˜ 기술적 κ²½κ³„λŠ” μ–΄λ–»κ²Œ μ„€μ •ν•΄μ•Ό ν•˜λŠ”κ°€? [1, 8] ### Practical Application Contexts - **Implementation:** Vue의 `scoped` 속성 등을 ν™œμš©ν•˜μ—¬, 각 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ λͺ¨λ“ˆμ΄ κ³ μœ ν•œ CSS μŠ€μ½”ν”„λ₯Ό 갖도둝 κ΅¬ν˜„ν•¨μœΌλ‘œμ¨ λ‹€λ₯Έ λͺ¨λ“ˆμ˜ μŠ€νƒ€μΌμ„ λ§κ°€λœ¨λ¦¬μ§€ μ•Šλ„λ‘ λ°©μ–΄ν•©λ‹ˆλ‹€ [3]. - **System Design:** λŒ€κ·œλͺ¨ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—¬λŸ¬ 개의 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ λͺ¨λ“ˆλ‘œ λΆ„ν• ν•˜κ³ , 이λ₯Ό Turborepoλ‚˜ Nx 같은 λͺ¨λ…Έλ ˆν¬ μ•„ν‚€ν…μ²˜λ‘œ λ¬Άμ–΄ 곡유 νŒ¨ν‚€μ§€(UI μ»΄ν¬λ„ŒνŠΈ λ“±)λ₯Ό μ€‘μ•™μ—μ„œ κ΄€λ¦¬ν•˜λ„λ‘ μ„€κ³„ν•©λ‹ˆλ‹€ [1, 4]. - **Operation / Maintenance:** κ°œλ³„ 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ νŒ€μ΄ 각자 κΈ°λŠ₯을 κ°œλ°œν•˜λ˜, μž¬μ‚¬μš© κ°€λŠ₯ν•œ 곡톡 μ»΄ν¬λ„ŒνŠΈ(단일 μ§„μ‹€ 곡급원)λ₯Ό ν™œμš©ν•˜λ„λ‘ 정책을 κ°•μ œν•˜μ—¬ μœ μ§€λ³΄μˆ˜ μ‹œ λ””μžμΈμ˜ νŒŒνŽΈν™”λ₯Ό λ°©μ§€ν•©λ‹ˆλ‹€ [2]. - **Learning Path:** μ»΄ν¬λ„ŒνŠΈ μž¬μ‚¬μš©μ„± μ΅œμ ν™” $\rightarrow$ μ „μ—­ μŠ€νƒ€μΌ 격리 기법(Scoped CSS) ν•™μŠ΅ $\rightarrow$ λͺ¨λ…Έλ ˆν¬λ₯Ό ν†΅ν•œ μ˜μ‘΄μ„± κ·Έλž˜ν”„ 관리 $\rightarrow$ 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ μ‹œμŠ€ν…œ μ—°λ™μ˜ μˆœμ„œλ‘œ ν•™μŠ΅μ„ μ§„ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2-4]. - **My Project Relevance:** λ‹€μˆ˜μ˜ νŒ€μ΄ λΆ„μ‚°ν•˜μ—¬ κ°œλ°œν•˜λŠ” λŒ€κ·œλͺ¨ μ›Ή μ‹œμŠ€ν…œμ„ ν•˜λ‚˜λ‘œ 톡합해야 ν•  λ•Œ, UI 뢈일치λ₯Ό 막고 배포 및 μŠ€νƒ€μΌ 좩돌둜 μΈν•œ 기술 뢀채λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ μ•„ν‚€ν…μ²˜ μ°Έμ‘° κΈ°μ€€μœΌλ‘œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ### Adjacent Topics - [[Monorepo]] - ν™•μž₯ λ°©ν–₯: 마이크둜 ν”„λ‘ νŠΈμ—”λ“œλ₯Ό ν˜ΈμŠ€νŒ…ν•˜κ³  곡유 μ»΄ν¬λ„ŒνŠΈλ₯Ό μ§€λŠ₯적으둜 캐싱, λΉŒλ“œ(예: Turborepo)ν•˜λŠ” μ €μž₯μ†Œ μΈν”„λΌμŠ€νŠΈλŸ­μ²˜ μˆ˜μ€€μœΌλ‘œ 연ꡬλ₯Ό ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [4]. - [[Design System]] - ν™•μž₯ λ°©ν–₯: 마이크둜 ν”„λ‘ νŠΈμ—”λ“œ ν™˜κ²½μ—μ„œ μ‹œμŠ€ν…œ νŒŒνŽΈν™”λ₯Ό 막기 μœ„ν•œ λ””μžμΈ μ‹œμŠ€ν…œ 무결성(Integrity) μ „λž΅ 및 κ·œκ²©ν™”λœ 곡톡 UI μ»΄ν¬λ„ŒνŠΈ κ΅¬μΆ•λ‘ μœΌλ‘œ λ²”μœ„λ₯Ό λ„“νž 수 μžˆμŠ΅λ‹ˆλ‹€ [2]. --- *Last updated: 2026-05-03*