--- id: P-REINFORCE-AUTO-0A3765 category: "[[10_Wiki/πŸ’‘ Topics/Design & Experience]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 클린 μ•„ν‚€ν…μ²˜ (Clean Architecture)" --- # [[클린 μ•„ν‚€ν…μ²˜ (Clean Architecture)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 클린 μ•„ν‚€ν…μ²˜λŠ” λ‘œλ²„νŠΈ C. λ§ˆν‹΄(Uncle Bob)이 μ°½μ•ˆν•œ μ†Œν”„νŠΈμ›¨μ–΄ 섀계 μ² ν•™μœΌλ‘œ, μ‹œμŠ€ν…œμ„ 'κ΄€μ‹¬μ‚¬μ˜ 뢄리(Separation of Concerns)' 원칙에 따라 λͺ…ν™•ν•œ κ³„μΈ΅μœΌλ‘œ λ‚˜λˆ„λŠ” μ•„ν‚€ν…μ²˜ κ΅¬μ‘°μž…λ‹ˆλ‹€ [1-3]. 이 μ•„ν‚€ν…μ²˜λŠ” μ‹œμŠ€ν…œμ˜ 핡심인 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ ν”„λ ˆμž„μ›Œν¬, UI, λ°μ΄ν„°λ² μ΄μŠ€μ™€ 같은 μ™ΈλΆ€ 기술 μš”μ†Œλ‘œλΆ€ν„° μ™„λ²½νžˆ λΆ„λ¦¬μ‹œμΌœ μœ μ§€λ³΄μˆ˜μ„±, ν™•μž₯μ„±, 그리고 ν…ŒμŠ€νŠΈ μš©μ΄μ„±μ„ κ·ΉλŒ€ν™”ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€ [1, 4, 5]. 핡심 μ›λ¦¬λŠ” μ†ŒμŠ€ μ½”λ“œμ˜ μ˜μ‘΄μ„±μ΄ 였직 λ‚΄λΆ€μ˜ κ³ μˆ˜μ€€ μ •μ±…(λΉ„μ¦ˆλ‹ˆμŠ€ 둜직)을 ν–₯ν•˜λ„λ‘ ν†΅μ œν•˜λŠ” 'μ˜μ‘΄μ„± κ·œμΉ™(Dependency Rule)'을 μ—„κ²©νžˆ μ€€μˆ˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ [1, 6, 7]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) **1. "λ‡Œμ™€ νŒ”λ‹€λ¦¬μ˜ 뢄리" 메타포λ₯Ό ν†΅ν•œ 관심사 λΆ„λ¦¬μ˜ κ΅¬ν˜„** 클린 μ•„ν‚€ν…μ²˜λŠ” μ‹œμŠ€ν…œμ„ 'λ‡Œ(핡심 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직)'와 'νŒ”λ‹€λ¦¬(μΈν”„λΌμŠ€νŠΈλŸ­μ²˜ 및 μ™ΈλΆ€ μš”μ†Œ)'둜 μ—„κ²©ν•˜κ²Œ μ΄λΆ„ν™”ν•˜μ—¬ κ΄€μ‹¬μ‚¬μ˜ 뢄리(SoC)λ₯Ό μ‹€ν˜„ν•©λ‹ˆλ‹€ [8, 9]. * **λ‡Œ (핡심 계측):** λ„λ©”μΈμ˜ 본질적인 κ·œμΉ™μ„ λ‹΄κ³  μžˆλŠ” μ—”ν‹°ν‹°(Entities)와 이λ₯Ό μ œμ–΄ν•˜λŠ” μœ μŠ€μΌ€μ΄μŠ€(Use Cases)둜 κ΅¬μ„±λ©λ‹ˆλ‹€ [9]. λ‡Œκ°€ μ‹ μ²΄μ˜ 쀑심인 κ²ƒμ²˜λŸΌ 이 계측은 μ™ΈλΆ€ 세계(DB, UI λ“±)에 λŒ€ν•΄ μ „ν˜€ μ•Œμ§€ λͺ»ν•˜λŠ” κ°€μž₯ 독립적이고 μˆœμˆ˜ν•œ ν˜•νƒœλ₯Ό μœ μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€ [9, 10]. * **νŒ”λ‹€λ¦¬ (μ™ΈλΆ€ 계측):** μ›Ή μΈν„°νŽ˜μ΄μŠ€, λ°μ΄ν„°λ² μ΄μŠ€, μ„œλ“œνŒŒν‹° ν”„λ ˆμž„μ›Œν¬ λ“± 핡심 λ‘œμ§μ„ 감싸고 외뢀와 μ†Œν†΅ν•˜λŠ” μ €μˆ˜μ€€μ˜ μ„ΈλΆ€ μ‚¬ν•­μž…λ‹ˆλ‹€ [9, 11]. νŒ”λ‹€λ¦¬λŠ” μ–Έμ œλ“  λ‹€λ₯Έ 기술둜 ꡐ체 κ°€λŠ₯ν•˜λ„λ‘ μ‹œμŠ€ν…œμ˜ 심μž₯뢀에 'ν”ŒλŸ¬κ·ΈμΈ' ν˜•νƒœλ‘œ μ—°κ²°λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ [9, 12]. **2. μ˜μ‘΄μ„± κ·œμΉ™ (Dependency Rule)** 클린 μ•„ν‚€ν…μ²˜κ°€ λ™μž‘ν•˜κ²Œ ν•˜λŠ” κ°€μž₯ 핡심적인 κ·œμΉ™μœΌλ‘œ, λͺ¨λ“  μ†ŒμŠ€ μ½”λ“œμ˜ μ˜μ‘΄μ„±μ€ λ°˜λ“œμ‹œ λ°”κΉ₯μͺ½(μ €μˆ˜μ€€ λ©”μ»€λ‹ˆμ¦˜)μ—μ„œ μ•ˆμͺ½(κ³ μˆ˜μ€€ μ •μ±…)으둜만 ν–₯ν•΄μ•Ό ν•©λ‹ˆλ‹€ [1, 6, 7]. λ‚΄λΆ€μ˜ 원에 μ†ν•œ μ½”λ“œλŠ” μ™ΈλΆ€ 원에 μ„ μ–Έλœ ν•¨μˆ˜, 클래슀, λ³€μˆ˜ λ“± μ–΄λ– ν•œ 것도 이름쑰차 μ–ΈκΈ‰ν•΄μ„œλŠ” μ•ˆ 되며, μ™ΈλΆ€μ˜ 데이터 ν˜•μ‹μ— μ˜μ‘΄ν•΄μ„œλ„ μ•ˆ λ©λ‹ˆλ‹€ [7]. **3. 4κ°€μ§€ μ£Όμš” 동심원 계측 ꡬ쑰** 클린 μ•„ν‚€ν…μ²˜λŠ” ν†΅μƒμ μœΌλ‘œ 4κ°€μ§€ 동심원 κ³„μΈ΅μœΌλ‘œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€ [3, 7, 13]. * **μ—”ν‹°ν‹° (Entities):** 전사적인 핡심 업무 κ·œμΉ™κ³Ό 데이터λ₯Ό μΊ‘μŠν™”ν•œ κ°€μž₯ μ•ˆμͺ½μ˜ 쀑심 κ³„μΈ΅μž…λ‹ˆλ‹€ [3, 10, 13]. μ™ΈλΆ€μ˜ 무언가가 λ³€κ²½λ˜λ”λΌλ„ κ°€μž₯ 영ν–₯을 λ°›μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ [10]. * **μœ μŠ€μΌ€μ΄μŠ€ (Use Cases / Interactors):** νŠΉμ • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— νŠΉν™”λœ 업무 κ·œμΉ™μ„ ν¬ν•¨ν•˜λ©°, μ—”ν‹°ν‹°λ‘œ λ“€μ–΄μ˜€κ³  λ‚˜κ°€λŠ” 데이터 흐름을 μ‘°μ •ν•©λ‹ˆλ‹€ [3, 13, 14]. * **μΈν„°νŽ˜μ΄μŠ€ μ–΄λŒ‘ν„° (Interface Adapters):** μœ μŠ€μΌ€μ΄μŠ€μ™€ 엔티티에 νŽΈλ¦¬ν•œ ν˜•μ‹μ˜ 데이터λ₯Ό μ™ΈλΆ€ μ—μ΄μ „μ‹œ(DB, μ›Ή λ“±)κ°€ μ‚¬μš©ν•˜κΈ° νŽΈλ¦¬ν•œ ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•΄ μ£ΌλŠ” μ–΄λŒ‘ν„°(ν”„λ ˆμ  ν„°, λ·°, 컨트둀러 λ“±)λ“€μ˜ λͺ¨μž„μž…λ‹ˆλ‹€ [3, 11, 13, 14]. * **ν”„λ ˆμž„μ›Œν¬μ™€ λ“œλΌμ΄λ²„ (Frameworks & Drivers):** λ°μ΄ν„°λ² μ΄μŠ€, μ›Ή ν”„λ ˆμž„μ›Œν¬, UI 등이 μœ„μΉ˜ν•˜λŠ” κ°€μž₯ λ°”κΉ₯μͺ½μ˜ 변동성이 큰 κ³„μΈ΅μž…λ‹ˆλ‹€ [3, 11, 13]. **4. 클린 μ•„ν‚€ν…μ²˜μ˜ μ£Όμš” 이점** * **μ™„λ²½ν•œ 격리 및 ν…ŒμŠ€νŠΈ μš©μ΄μ„±:** 업무 κ·œμΉ™μ€ UI, λ°μ΄ν„°λ² μ΄μŠ€, μ›Ή μ„œλ²„ λ“±μ˜ μ™ΈλΆ€ μš”μ†Œκ°€ 없어도 λ…λ¦½μ μœΌλ‘œ ν…ŒμŠ€νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€ [4, 5, 15]. * **기술적 독립성 및 μœ μ—°μ„±:** μ‹œμŠ€ν…œμ€ νŠΉμ • ν”„λ ˆμž„μ›Œν¬μ— μ’…μ†λ˜μ§€ μ•ŠμœΌλ©°, μ™ΈλΆ€ 계측(νŒ”λ‹€λ¦¬)을 λ³€κ²½ν•˜λ”λΌλ„ λ‚΄λΆ€ 계측(λ‡Œ)의 핡심 κΈ°λŠ₯은 μ•„λ¬΄λŸ° 영ν–₯을 λ°›μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 기술 변화에 μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [4, 5, 15]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Design & Experience λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[κ΄€μ‹¬μ‚¬μ˜ 뢄리 (Separation of Concerns)]], [[μ˜μ‘΄μ„± μ—­μ „ 원칙 (Dependency Inversion Principle)]], [[단일 μ±…μž„ 원칙 (Single Responsibility Principle)]] - **Projects/Contexts:** [[μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 3계측 ꡬ쑰]], [[도메인 주도 섀계 (DDD)]], [[λ„·ν”Œλ¦­μŠ€μ˜ μ½”μŠ€λͺ¨μŠ€ ν”Œλž«νΌ 및 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ „ν™˜]] - **Contradictions/Notes:** μ†ŒμŠ€μ— λ”°λ₯΄λ©΄ 클린 μ•„ν‚€ν…μ²˜λŠ” μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 λΉ„μ•½μ μœΌλ‘œ λ†’μ—¬μ£Όμ§€λ§Œ, 초기 개발 μ‹œκ°„μ΄ μ¦κ°€ν•˜κ³  계측과 좔상화가 λ„ˆλ¬΄ λ§Žμ•„μ§ˆ 경우 μ‹œμŠ€ν…œ ꡬ쑰가 μ§€λ‚˜μΉ˜κ²Œ λ³΅μž‘ν•΄μ§€λŠ” μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§(Over-Engineering) 및 κ°„μ ‘ 참쑰에 μ˜ν•œ 가독성 μ €ν•˜λ₯Ό μœ λ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [16, 17]. λ”°λΌμ„œ κ³Όλ„ν•œ 좔상화λ₯Ό κ²½κ³„ν•˜κ³ , μ‹€μš©μ  ν•„μš”μ— 맞게 응집도와 결합도λ₯Ό κ³ λ €ν•˜μ—¬ μ•„ν‚€ν…μ²˜μ˜ κ· ν˜•μ„ λ§žμΆ”λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€ [16, 18]. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/클린 μ•„ν‚€ν…μ²˜ (Clean Architecture).md]] ---