--- id: P-REINFORCE-AUTO-417677 category: "10_Wiki/πŸ’‘ Topics/Design & Experience" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 클린 μ•„ν‚€ν…μ²˜" --- # [[클란 α„‹α…‘α„α…΅α„α…¦α†¨α„Žα…₯|클린 μ•„ν‚€ν…μ²˜]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 클린 μ•„ν‚€ν…μ²˜(Clean Architecture)λŠ” λ‘œλ²„νŠΈ C. λ§ˆν‹΄(Robert C. Martin)이 μ œμ•ˆν•œ μ†Œν”„νŠΈμ›¨μ–΄ 섀계 μ² ν•™μœΌλ‘œ, λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ·œμΉ™μ„ μ‹œμŠ€ν…œμ˜ 쀑심에 λ°°μΉ˜ν•˜λŠ” ꡬ쑰λ₯Ό κ°–μŠ΅λ‹ˆλ‹€ [1, 2]. μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ—¬λŸ¬ 동심원 κ³„μΈ΅μœΌλ‘œ λΆ„λ¦¬ν•˜μ—¬ 관심사λ₯Ό μ² μ €νžˆ λΆ„λ¦¬ν•˜λ©°, ν”„λ ˆμž„μ›Œν¬, μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(UI), λ°μ΄ν„°λ² μ΄μŠ€ λ“± μ™ΈλΆ€ μš”μ†Œλ‘œλΆ€ν„° μ‹œμŠ€ν…œμ„ μ™„μ „νžˆ λ…λ¦½μ‹œν‚€λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€ [1, 3-5]. 이 μ•„ν‚€ν…μ²˜μ˜ 핡심은 μ†ŒμŠ€ μ½”λ“œμ˜ μ˜μ‘΄μ„±μ΄ 였직 λ‚΄λΆ€μ˜ κ³ μˆ˜μ€€ μ •μ±…λ§Œμ„ ν–₯ν•΄μ•Ό ν•œλ‹€λŠ” 'μ˜μ‘΄μ„± κ·œμΉ™(Dependency Rule)'μž…λ‹ˆλ‹€ [1, 5, 6]. 이λ₯Ό 톡해 μ‹œμŠ€ν…œμ€ ν”„λ ˆμž„μ›Œν¬λ‚˜ μ™ΈλΆ€ μ—μ΄μ „μ‹œμ˜ 변경에 영ν–₯을 λ°›μ§€ μ•ŠμœΌλ©°, μœ μ§€λ³΄μˆ˜μ„±, ν™•μž₯μ„±, 그리고 ν…ŒμŠ€νŠΈ μš©μ΄μ„±μ„ κ·ΉλŒ€ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [5, 7, 8]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **핡심 λͺ©μ κ³Ό 이점:** 클린 μ•„ν‚€ν…μ²˜μ˜ 주된 λͺ©μ μ€ κ΄€μ‹¬μ‚¬μ˜ 뢄리(Separation of Concerns)λ₯Ό 톡해 μ‹œμŠ€ν…œμ„ λͺ¨λ“ˆν™”ν•˜κ³ , ν”„λ ˆμž„μ›Œν¬, UI, λ°μ΄ν„°λ² μ΄μŠ€λ‘œλΆ€ν„° 독립적인 μ‹œμŠ€ν…œμ„ λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€ [3-5]. 이λ₯Ό 톡해 κ°œλ°œμžλŠ” μ™ΈλΆ€ μš”μ†Œμ˜ κ°œμž… 없이 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ κ²©λ¦¬ν•˜μ—¬ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•  수 있으며(Testability), μ‹œμŠ€ν…œμ˜ 생λͺ…μ£ΌκΈ°λ₯Ό 늘리고 μƒˆλ‘œμš΄ μš”κ΅¬μ‚¬ν•­μ— μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•  수 μžˆλŠ” ν™•μž₯μ„±(Scalability) 및 μœ μ§€λ³΄μˆ˜μ„±(Maintainability)을 확보할 수 μžˆμŠ΅λ‹ˆλ‹€ [3, 5, 8]. * **동심원 계측 ꡬ쑰:** 클린 μ•„ν‚€ν…μ²˜λŠ” 보톡 4κ°€μ§€μ˜ κ³„μΈ΅μœΌλ‘œ μ‹œμŠ€ν…œμ„ λ‚˜λˆ•λ‹ˆλ‹€ [9, 10]. * **μ—”ν‹°ν‹° (Entities):** μ‹œμŠ€ν…œμ˜ κ°€μž₯ μ•ˆμͺ½μ— μœ„μΉ˜ν•˜λ©°, 전사적이고 κ°€μž₯ 일반적인 핡심 업무 κ·œμΉ™μ„ μΊ‘μŠν™”ν•©λ‹ˆλ‹€ [9-11]. νŽ˜μ΄μ§€ λ„€λΉ„κ²Œμ΄μ…˜μ΄λ‚˜ λ³΄μ•ˆ λ“± μ™ΈλΆ€μ˜ λ³€κ²½ 사항에 μ ˆλŒ€ 영ν–₯을 λ°›μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€ [11]. * **μœ μŠ€μΌ€μ΄μŠ€ (Use Cases):** μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— νŠΉν™”λœ 업무 κ·œμΉ™μ„ ν¬ν•¨ν•˜λ©°, μ—”ν‹°ν‹°λ‘œ λ“€μ–΄κ°€κ³  λ‚˜κ°€λŠ” λ°μ΄ν„°μ˜ 흐름을 μ‘°μ •ν•©λ‹ˆλ‹€ [9, 10, 12]. * **μΈν„°νŽ˜μ΄μŠ€ μ–΄λŒ‘ν„° (Interface Adapters):** μœ μŠ€μΌ€μ΄μŠ€λ‚˜ μ—”ν‹°ν‹°μ—κ²Œ νŽΈλ¦¬ν•œ 데이터 ν˜•μ‹μ„ λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ μ›Ή 같은 μ™ΈλΆ€ μ—μ΄μ „μ‹œκ°€ μ΄μš©ν•˜κΈ° νŽΈλ¦¬ν•œ ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” μ–΄λŒ‘ν„° 역할을 ν•©λ‹ˆλ‹€ [9, 10, 12]. ν”„λ ˆμ  ν„°(Presenter), λ·°(View), 컨트둀러(Controller) λ“±μ˜ MVC ꡬ쑰가 이곳에 μ†ν•©λ‹ˆλ‹€ [9, 12]. * **ν”„λ ˆμž„μ›Œν¬μ™€ λ“œλΌμ΄λ²„ (Frameworks & Drivers):** κ°€μž₯ λ°”κΉ₯μͺ½ κ³„μΈ΅μœΌλ‘œ, λ°μ΄ν„°λ² μ΄μŠ€, μ›Ή ν”„λ ˆμž„μ›Œν¬, UI λ“± 변동성이 맀우 큰 μ™ΈλΆ€ λ„κ΅¬λ“€λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€ [9, 10, 13]. * **핡심 섀계 원칙:** * **μ˜μ‘΄μ„± κ·œμΉ™ (Dependency Rule):** μ†ŒμŠ€ μ½”λ“œμ˜ μ˜μ‘΄μ„±μ€ λ°˜λ“œμ‹œ λ°”κΉ₯μͺ½μ—μ„œ μ•ˆμͺ½μœΌλ‘œ, 즉 κ³ μˆ˜μ€€μ˜ μ •μ±…(λΉ„μ¦ˆλ‹ˆμŠ€ 둜직)을 ν–₯ν•΄μ•Ό ν•©λ‹ˆλ‹€ [1, 5, 6]. λ‚΄λΆ€ μ›μ˜ μ½”λ“œλŠ” μ™ΈλΆ€ 원에 μ„ μ–Έλœ μ–΄λ–€ μš”μ†Œ(ν•¨μˆ˜, 클래슀, λ³€μˆ˜ λ“±)의 이름도 μ–ΈκΈ‰ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€ [5]. * **μ˜μ‘΄μ„± μ—­μ „ 원칙 (DIP) ν™œμš©:** μ œμ–΄ 흐름이 λ‚΄λΆ€μ—μ„œ μ™ΈλΆ€λ‘œ ν–₯ν•΄μ•Ό ν•  λ•ŒλŠ” μ˜μ‘΄μ„± μ—­μ „ 원칙을 μ‚¬μš©ν•˜μ—¬ μ†ŒμŠ€ μ½”λ“œ μ˜μ‘΄μ„±μ΄ μ œμ–΄ 흐름과 λ°˜λŒ€ λ°©ν–₯이 λ˜λ„λ‘ λ§Œλ“­λ‹ˆλ‹€ [14, 15]. 예λ₯Ό λ“€μ–΄ μœ μŠ€μΌ€μ΄μŠ€κ°€ ν”„λ ˆμ  ν„°λ₯Ό ν˜ΈμΆœν•΄μ•Ό ν•  경우, 직접 ν˜ΈμΆœν•˜λŠ” λŒ€μ‹  λ‚΄λΆ€ μ›μ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν˜ΈμΆœν•˜κ³  μ™ΈλΆ€ μ›μ˜ ν”„λ ˆμ  ν„°κ°€ 이λ₯Ό κ΅¬ν˜„ν•˜λ„λ‘ ν•©λ‹ˆλ‹€ [15]. * **경계λ₯Ό νš‘λ‹¨ν•˜λŠ” 데이터:** κ³„μΈ΅μ˜ 경계λ₯Ό κ°€λ‘œμ§€λ₯΄λŠ” λ°μ΄ν„°λŠ” μ—”ν‹°ν‹°λ‚˜ λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν–‰(Row)이 μ•„λ‹Œ, 격리되고 λ‹¨μˆœν•œ 데이터 ꡬ쑰(DTO λ“±)μ—¬μ•Ό ν•©λ‹ˆλ‹€ [16, 17]. * **적용 μ‹œμ˜ 과제 및 ν•œκ³„:** 클린 μ•„ν‚€ν…μ²˜λŠ” μœ μ§€λ³΄μˆ˜μ„±κ³Ό μœ μ—°μ„±μ„ κ°€μ Έμ˜€μ§€λ§Œ, λ‹€μˆ˜μ˜ 계측과 좔상화λ₯Ό λ„μž…ν•΄μ•Ό ν•˜λ―€λ‘œ 초기 개발 μ‹œκ°„μ΄ λŠ˜μ–΄λ‚˜κ³  μ‹œμŠ€ν…œμ΄ λΆˆν•„μš”ν•˜κ²Œ λ³΅μž‘ν•΄μ§€λŠ” μ˜€λ²„ μ—”μ§€λ‹ˆμ–΄λ§(Over-Engineering)을 μœ λ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [18]. λ˜ν•œ, μ—¬λŸ¬ 계측 κ°„μ˜ μƒν˜Έμž‘μš©μœΌλ‘œ 인해 톡합 ν…ŒμŠ€νŠΈμ˜ λ³΅μž‘μ„±μ΄ 증가할 수 μžˆμŠ΅λ‹ˆλ‹€ [18]. * **μ‹€μ œ 적용 사둀:** 클린 μ•„ν‚€ν…μ²˜μ˜ 원칙은 ꡬ글이 ꢌμž₯ν•˜λŠ” Android μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ²˜, iOS의 VIPER μ•„ν‚€ν…μ²˜, ASP.NET Core μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜, 그리고 Netflix의 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ 섀계 λ“± λ‹€μ–‘ν•œ ν”Œλž«νΌκ³Ό ν™˜κ²½μ—μ„œ μ‹€μ§ˆμ μœΌλ‘œ μ μš©λ˜μ–΄ κ²¬κ³ ν•œ μ‹œμŠ€ν…œ ꡬ좕에 κΈ°μ—¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [19-21]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Design & Experience λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** κ΄€μ‹¬μ‚¬μ˜ 뢄리, μ˜μ‘΄μ„± κ·œμΉ™, μ˜μ‘΄μ„± μ—­μ „ 원칙, [[SOLID α„‹α…―α†«α„Žα…΅α†¨|SOLID 원칙]] - **Projects/Contexts:** Netflix λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€, Android μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ²˜, VIPER μ•„ν‚€ν…μ²˜ - **Contradictions/Notes:** 클린 μ•„ν‚€ν…μ²˜λŠ” μ‹œμŠ€ν…œμ˜ μœ μ§€λ³΄μˆ˜μ„±κ³Ό μœ μ—°μ„±μ„ κ·ΉλŒ€ν™”ν•˜μ§€λ§Œ, λ™μ‹œμ— μ—¬λŸ¬ 계측과 μΆ”μƒν™”μ˜ μΆ”κ°€λ‘œ 인해 초기 개발 μ‹œκ°„μ΄ λŠ˜μ–΄λ‚˜κ³  ꡬ쑰가 λ³΅μž‘ν•΄μ§€λŠ” 'μ˜€λ²„ μ—”μ§€λ‹ˆμ–΄λ§'의 μœ„ν—˜μ„ λ™λ°˜ν•˜λ―€λ‘œ μ‹€μš©μ„±κ³Όμ˜ μ μ ˆν•œ κ· ν˜•μ΄ ν•„μš”ν•˜λ‹€λŠ” 점을 μ£Όμ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€ [18]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/클린 μ•„ν‚€ν…μ²˜.md ---