--- 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)|ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ (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)|๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ (Separation of Concerns)]], [[แ„‹แ…ดแ„Œแ…ฉแ†ซแ„‰แ…ฅแ†ผ แ„‹แ…งแ†จแ„Œแ…ฅแ†ซ แ„‹แ…ฏแ†ซแ„Žแ…ตแ†จ (Dependency Inversion Principle)|์˜์กด์„ฑ ์—ญ์ „ ์›์น™ (Dependency Inversion Principle)]], [[แ„ƒแ…กแ†ซแ„‹แ…ตแ†ฏ แ„Žแ…ขแ†จแ„‹แ…ตแ†ท แ„‹แ…ฏแ†ซแ„Žแ…ตแ†จ (Single Responsibility Principle)|๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (Single Responsibility Principle)]] - **Projects/Contexts:** [[แ„‹แ…ฐแ†ธ แ„‹แ…ขแ„‘แ…ณแ†ฏแ„…แ…ตแ„แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซแ„‹แ…ด 3แ„€แ…จแ„Žแ…ณแ†ผ แ„€แ…ฎแ„Œแ…ฉ|์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ 3๊ณ„์ธต ๊ตฌ์กฐ]], [[แ„ƒแ…ฉแ„†แ…ฆแ„‹แ…ตแ†ซ แ„Œแ…ฎแ„ƒแ…ฉ แ„‰แ…ฅแ†ฏแ„€แ…จ (DDD)|๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„ (DDD)]], [[แ„‚แ…ฆแ†บแ„‘แ…ณแ†ฏแ„…แ…ตแ†จแ„‰แ…ณแ„‹แ…ด แ„แ…ฉแ„‰แ…ณแ„†แ…ฉแ„‰แ…ณ แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ท แ„†แ…ตแ†พ แ„†แ…กแ„‹แ…ตแ„แ…ณแ„…แ…ฉแ„‰แ…ฅแ„‡แ…ตแ„‰แ…ณ แ„Œแ…ฅแ†ซแ„’แ…ชแ†ซ|๋„ทํ”Œ๋ฆญ์Šค์˜ ์ฝ”์Šค๋ชจ์Šค ํ”Œ๋žซํผ ๋ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ „ํ™˜]] - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋Š” ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋น„์•ฝ์ ์œผ๋กœ ๋†’์—ฌ์ฃผ์ง€๋งŒ, ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๊ณ  ๊ณ„์ธต๊ณผ ์ถ”์ƒํ™”๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์งˆ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•ด์ง€๋Š” ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง(Over-Engineering) ๋ฐ ๊ฐ„์ ‘ ์ฐธ์กฐ์— ์˜ํ•œ ๊ฐ€๋…์„ฑ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [16, 17]. ๋”ฐ๋ผ์„œ ๊ณผ๋„ํ•œ ์ถ”์ƒํ™”๋ฅผ ๊ฒฝ๊ณ„ํ•˜๊ณ , ์‹ค์šฉ์  ํ•„์š”์— ๋งž๊ฒŒ ์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์•„ํ‚คํ…์ฒ˜์˜ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค [16, 18]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ (Clean Architecture).md ---