# [[Component-Based Architecture]] ## πŸ“Œ Brief Summary Component-Based Architecture(μ»΄ν¬λ„ŒνŠΈ 기반 μ•„ν‚€ν…μ²˜)λŠ” μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(UI)λ₯Ό μž¬μ‚¬μš© κ°€λŠ₯ν•œ 독립적인 μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„λ‘œ λΆ„ν•΄ν•˜μ—¬ κ΅¬μ„±ν•˜λŠ” μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μž…λ‹ˆλ‹€ [1, 2]. 이 섀계 방식은 일관성 μžˆλŠ” λ””μžμΈ μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•˜κ³ , μ½”λ“œ μž¬μ‚¬μš©μ„ μž₯λ €ν•˜λ©°, κ°œλ°œμžμ™€ λ””μžμ΄λ„ˆ κ°„μ˜ 곡톡 μ–΄νœ˜λ₯Ό ν™•λ¦½ν•˜λŠ” 데 νƒμ›”ν•œ 효과λ₯Ό λ°œνœ˜ν•©λ‹ˆλ‹€ [1]. κ·ΈλŸ¬λ‚˜ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ΄λ‚˜ μƒνƒœ(State)의 ꡬ성 방법에 λŒ€ν•΄μ„œλŠ” λͺ…ν™•ν•œ 기쀀을 μ œμ‹œν•˜μ§€ μ•ŠμœΌλ―€λ‘œ, λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” κ΅¬μ‘°ν™”λœ μ•„ν‚€ν…μ²˜λ₯Ό μΆ”κ°€λ‘œ λ„μž…ν•˜μ§€ μ•ŠμœΌλ©΄ 둜직 계측이 λ¬΄μ§ˆμ„œν•΄μ§ˆ 수 μžˆλŠ” ν•œκ³„λ₯Ό μ§€λ‹™λ‹ˆλ‹€ [1]. ## πŸ“– Core Content * **UI λΆ„ν•΄(UI Decomposition)와 λ””μžμΈ μ‹œμŠ€ν…œ μ§€ν–₯:** λ¦¬μ•‘νŠΈ(React)λŠ” 본질적으둜 μ»΄ν¬λ„ŒνŠΈ 기반으둜 μž‘λ™ν•˜λ©°, μ»΄ν¬λ„ŒνŠΈ 기반 μ•„ν‚€ν…μ²˜μ˜ 핡심 원칙은 UIλ₯Ό μ„ΈλΆ„ν™”ν•˜μ—¬ κ΅¬μ„±ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ [1, 2]. 이 κ΅¬μ‘°λŠ” μ΅œμ‹  μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€μ™€ λ””μžμΈ μ‹œμŠ€ν…œμ„ 섀계할 λ•Œ κ°€μž₯ μ ν•©ν•œ λͺ¨λΈλ‘œ ν‰κ°€λ°›μœΌλ©°, μ•„ν† λ―Ή λ””μžμΈ(Atomic Design)κ³Ό 같은 방법둠을 톡해 μ‹œκ°μ  일관성과 μ»΄ν¬λ„ŒνŠΈμ˜ κ°•λ ₯ν•œ μž¬μ‚¬μš©μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€ [1, 2]. * **λŒ€κ·œλͺ¨ ν™•μž₯μ„±μ˜ ν•œκ³„ (ꡬ쑰적 뢀쑱함):** μ»΄ν¬λ„ŒνŠΈ 기반 μ•„ν‚€ν…μ²˜λŠ” UI μš”μ†Œλ₯Ό κΉ”λ”ν•˜κ²Œ μΆ”μƒν™”ν•˜λŠ” 데 μ„±κ³΅μ μ΄μ§€λ§Œ, λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ΄λ‚˜ μƒνƒœ 관리(State Management)λ₯Ό 어디에 μ–΄λ–»κ²Œ λ°°μΉ˜ν•΄μ•Ό ν•˜λŠ”μ§€λŠ” μ˜λ„μ μœΌλ‘œ κ·œμ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ [1]. 이둜 인해 μ μ ˆν•œ μ œμ•½ 없이 κ°œλ°œμ„ μ§„ν–‰ν•˜λ©΄ 잘 μ •λˆλœ UI μ»΄ν¬λ„ŒνŠΈ μ•„λž˜μ— λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 ν˜Όλž€μŠ€λŸ½κ²Œ λ’€μ„žμ΄λŠ” ν˜„μƒμ΄ λ°œμƒν•©λ‹ˆλ‹€ [1]. λ”°λΌμ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 규λͺ¨κ°€ 컀질 경우, μ»΄ν¬λ„ŒνŠΈ 기반 방식 λ‹¨λ…μœΌλ‘œλŠ” λΆˆμΆ©λΆ„ν•˜λ©° κΈ°λŠ₯ λΆ„ν•  섀계(Feature-Sliced Design)λ‚˜ 도메인 주도 섀계(DDD)와 같은 좔가적인 μ•„ν‚€ν…μ²˜μ˜ λ„μž…μ΄ ν•„μš”ν•©λ‹ˆλ‹€ [1, 3, 4]. * **클린 μ½”λ“œμ™€ 섀계 μ›μΉ™μ˜ 적용:** μœ μ§€λ³΄μˆ˜ κ°€λŠ₯성을 높이기 μœ„ν•΄ μ»΄ν¬λ„ŒνŠΈ 섀계 μ‹œ 객체 μ§€ν–₯ 및 μ†Œν”„νŠΈμ›¨μ–΄ μ—”μ§€λ‹ˆμ–΄λ§ 원칙을 μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 개방-폐쇄 원칙(OCP)을 λ¦¬μ•‘νŠΈμ˜ `children` propμ΄λ‚˜ λ Œλ” ν”„λ‘­(render props)을 ν†΅ν•œ ν•©μ„±(Composition) κΈ°λŠ₯으둜 κ΅¬ν˜„ν•˜λ©΄, κΈ°μ‘΄ μ»΄ν¬λ„ŒνŠΈμ˜ μ†ŒμŠ€ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³ λ„ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μœ μ—°ν•˜κ²Œ ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [5]. λ˜ν•œ, μ»΄ν¬λ„ŒνŠΈκ°€ λ„ˆλ¬΄ 컀지고 μ—¬λŸ¬ μ±…μž„(데이터 페칭, μƒνƒœ 관리, λ Œλ”λ§ λ“±)을 μ§€κ²Œ 되면 단일 μ±…μž„ 원칙(SRP)에 따라 더 μž‘κ³  μ§‘μ€‘λœ μ»΄ν¬λ„ŒνŠΈλ‘œ λΆ„λ¦¬ν•˜μ—¬ 관리해야 ν•©λ‹ˆλ‹€ [6]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Atomic Design]], [[Feature-Sliced Design]], [[SOLID Principles]] - **Projects/Contexts:** [[React Application Architecture]], [[Design Systems]] - **Contradictions/Notes:** μ†ŒμŠ€μ— λ”°λ₯΄λ©΄ μ»΄ν¬λ„ŒνŠΈ 기반 μ•„ν‚€ν…μ²˜(λ˜λŠ” μ•„ν† λ―Ή λ””μžμΈ)λŠ” ν›Œλ₯­ν•œ UI μ‹œμŠ€ν…œ ꡬ좕을 κ°€λŠ₯ν•˜κ²Œ ν•˜μ§€λ§Œ, μƒνƒœ μ†Œμœ κΆŒκ³Ό λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 ꡬ성에 λŒ€ν•œ κ·œμΉ™μ΄ μ—†κΈ° λ•Œλ¬Έμ— 규λͺ¨κ°€ 큰 λ¦¬μ•‘νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ•„ν‚€ν…μ²˜λ‘œλŠ” λΆˆμΆ©λΆ„ν•˜λ‹€κ³  μ£Όμž₯ν•©λ‹ˆλ‹€ [1]. --- *Last updated: 2026-04-26*