--- id: P-REINFORCE-AUTO-WIKI-ARCH-004 category: "10_Wiki/πŸ’‘ Topics/02_Architecture_Principles" confidence_score: 0.95 tags: [architecture, clean-architecture, layering, decoupling, domain-driven-design, p-reinforce] last_reinforced: 2026-05-01 --- # [[Clean Architecture]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "λΉ„μ¦ˆλ‹ˆμŠ€ 둜직(Domain)을 쀑심에 두고 UI, DB, ν”„λ ˆμž„μ›Œν¬μ™€ 같은 μ™ΈλΆ€ μ„ΈλΆ€ 사항을 μ£Όλ³€λΆ€λ‘œ λ°€μ–΄λ‚΄μ–΄, μ™ΈλΆ€ 기술의 λ³€ν™”κ°€ μ‹œμŠ€ν…œμ˜ 핡심 논리에 영ν–₯을 μ£Όμ§€ μ•Šλ„λ‘ κ²©λ¦¬ν•˜λŠ” 계측화 μ•„ν‚€ν…μ²˜μ˜ μ •μˆ˜." ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) 클린 μ•„ν‚€ν…μ²˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄μ˜ 생쑴 기간을 늘리고 기술 뢀채λ₯Ό μ œμ–΄ν•˜κΈ° μœ„ν•œ κ±°μ‹œμ  섀계 νŒ¨ν„΄μž…λ‹ˆλ‹€. 1. **μ˜μ‘΄μ„± κ·œμΉ™ (The Dependency Rule)**: * λͺ¨λ“  μ˜μ‘΄μ„±μ€ μ•ˆμͺ½(도메인/μ—”ν‹°ν‹°)을 ν–₯ν•΄μ•Ό ν•©λ‹ˆλ‹€. * λ‚΄λΆ€ 계측은 μ™ΈλΆ€ 계측(DB, Web, UI)에 λŒ€ν•΄ 아무것도 λͺ°λΌμ•Ό ν•˜λ©°, μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν†΅ν•΄μ„œλ§Œ μ†Œν†΅ν•©λ‹ˆλ‹€. 2. **계측화 ꡬ쑰**: * **Entities**: 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™ 및 데이터 λͺ¨λΈ. * **Use Cases**: μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 고유의 λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™(흐름 μ œμ–΄). * **Interface Adapters**: 데이터 λ³€ν™˜ λ ˆμ΄μ–΄ (Controller, Presenter, Gateway). * **Frameworks & Drivers**: DB, ν”„λ ˆμž„μ›Œν¬, μ™ΈλΆ€ API λ“± 기술적 μ„ΈλΆ€ 사항. 3. **μž₯점**: * ν”„λ ˆμž„μ›Œν¬ 독립성: UIλ‚˜ DB ν”„λ ˆμž„μ›Œν¬λ₯Ό ꡐ체해도 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ€ μˆ˜μ •ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. * ν…ŒμŠ€νŠΈ μš©μ΄μ„±: μ™ΈλΆ€ μš”μ†Œ 없이 핡심 둜직만 λ…λ¦½μ μœΌλ‘œ λ‹¨μœ„ ν…ŒμŠ€νŠΈκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈμ˜ 증가**: μ½”λ“œμ˜ 격리λ₯Ό μœ„ν•΄ λ‹€μˆ˜μ˜ μΈν„°νŽ˜μ΄μŠ€μ™€ 데이터 λ³€ν™˜ 객체(DTO)κ°€ ν•„μš”ν•˜κ²Œ λ˜μ–΄ μ½”λ“œλŸ‰μ΄ λŠ˜μ–΄λ‚©λ‹ˆλ‹€. ν”„λ‘œμ νŠΈμ˜ 규λͺ¨κ°€ μž‘μ„ λ•ŒλŠ” MVC보닀 λΉ„νš¨μœ¨μ μΌ 수 μžˆμŠ΅λ‹ˆλ‹€. - **ν•™μŠ΅ 곑선**: 계측 κ°„ 경계λ₯Ό μ—„κ²©νžˆ μ§€ν‚€λŠ” 섀계 철학을 νŒ€ 전체가 κ³΅μœ ν•˜κ³  μ€€μˆ˜ν•˜λŠ” 데 높은 μˆ˜μ€€μ˜ μ»¨μ„Όμ„œμŠ€μ™€ μ½”λ“œ 리뷰 μ—­λŸ‰μ΄ μš”κ΅¬λ©λ‹ˆλ‹€. ## πŸ”— 지식 μ—°κ²° (Graph) - [[SOLID Principles]]: 각 계측 λ‚΄λΆ€ 섀계λ₯Ό μ§€νƒ±ν•˜λŠ” 원칙듀. - [[Domain-Driven Design (DDD)]]: 도메인 쀑심 섀계 μ‚¬μƒκ³Όμ˜ μ‹œλ„ˆμ§€. - [[Dependency Inversion Principle (DIP)]]: 계측 κ°„ 톡신을 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 핡심 기술. - [[Software Architecture Patterns]]: MVC, Hexagonal μ•„ν‚€ν…μ²˜ λ“±κ³Όμ˜ 비ꡐ. - [[Over-engineering]]: νŒ¨ν„΄μ˜ λ§Ήλͺ©μ  적용 μ‹œ 경계해야 ν•  λΆ€μž‘μš©. ---