--- id: P-REINFORCE-AUTO-2298F3 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) > **ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜(Clean Architecture)**๋Š” ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด(Robert C. Martin, "Uncle Bob")์ด ๋Œ€์ค‘ํ™”ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์ฒ ํ•™์œผ๋กœ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ์น™์„ ์‹œ์Šคํ…œ์˜ ์ค‘์‹ฌ์— ๋‘์–ด ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์„ ๋†’์ด๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค [1], [2]. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์‹œ์Šคํ…œ์„ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ฑ…์ž„์„ ์ง€๋Š” ์—ฌ๋Ÿฌ ๋™์‹ฌ์› ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ **๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of Concerns)**๋ฅผ ์ด‰์ง„ํ•ฉ๋‹ˆ๋‹ค [1], [3]. ํ•ต์‹ฌ ์›์น™์ธ **'์˜์กด์„ฑ ๊ทœ์น™(Dependency Rule)'**์„ ๊ฐ•์ œํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ ์˜์กด์„ฑ์ด ์˜ค์ง ๋‚ด๋ถ€๋กœ๋งŒ ํ–ฅํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ํ”„๋ ˆ์ž„์›Œํฌ, UI, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ์˜ ์™ธ๋ถ€ ์š”์†Œ๋กœ๋ถ€ํ„ฐ ๋…๋ฆฝ์ ์ด๊ณ , ์œ ์ง€๋ณด์ˆ˜์„ฑ, ํ™•์žฅ์„ฑ ๋ฐ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์ด ๋›ฐ์–ด๋‚œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1], [4], [5], [6]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **์ฃผ์š” ์„ค๊ณ„ ์›์น™** * **์˜์กด์„ฑ ๊ทœ์น™ (Dependency Rule):** ์†Œ์Šค ์ฝ”๋“œ ์˜์กด์„ฑ์€ ๋ฐ˜๋“œ์‹œ ์™ธ๋ถ€ ๊ณ„์ธต์—์„œ ๋‚ด๋ถ€ ๊ณ„์ธต(๊ณ ์ˆ˜์ค€ ์ •์ฑ… ๋ฐฉํ–ฅ)์œผ๋กœ๋งŒ ํ–ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1], [7], [6]. ๋‚ด๋ถ€ ์›์— ์†ํ•œ ์ฝ”๋“œ๋Š” ์™ธ๋ถ€์— ์„ ์–ธ๋œ ์–ด๋–ค ๊ฒƒ(ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ณ€์ˆ˜ ๋“ฑ)์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค [6]. * **๋…๋ฆฝ์„ฑ:** ์‹œ์Šคํ…œ์€ ํŠน์ • ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, UI, ๊ทธ๋ฆฌ๊ณ  ๊ธฐํƒ€ ์™ธ๋ถ€ ์—์ด์ „์‹œ์— ์ข…์†๋˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1], [4], [5], [6]. * **ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ (Testability):** ์•„ํ‚คํ…์ฒ˜์˜ ์ค‘์‹ฌ์— ์žˆ๋Š” ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์€ UI, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์›น ์„œ๋ฒ„ ๋“ฑ์˜ ์™ธ๋ถ€ ํ™˜๊ฒฝ ์—†์ด๋„ ๊ฒฉ๋ฆฌ๋œ ์ƒํƒœ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [8], [4], [7], [6]. * **ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ 4๊ฐ€์ง€ ์ฃผ์š” ๊ณ„์ธต** * **์—”ํ‹ฐํ‹ฐ (Entities):** ๊ฐ€์žฅ ์•ˆ์ชฝ ๊ณ„์ธต์œผ๋กœ ์ „์‚ฌ์ ์ธ ํ•ต์‹ฌ ์—…๋ฌด ๊ทœ์น™์ด๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค [9], [10], [11]. ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ ๊ฐ์ฒด๋กœ, ์™ธ๋ถ€์˜ ๋ณ€๊ฒฝ(UI, ๋ณด์•ˆ ๋“ฑ)์— ์˜ํ•ด ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค [12], [11]. * **์œ ์Šค์ผ€์ด์Šค (Use Cases):** ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํŠนํ™”๋œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ๊ตฌํ˜„ํ•˜๋ฉฐ, ์—”ํ‹ฐํ‹ฐ๋กœ ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค [9], [10], [13]. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ UI ๋“ฑ ์™ธ๋ถ€ ์š”์†Œ์˜ ๋ณ€๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค [13]. * **์ธํ„ฐํŽ˜์ด์Šค ์–ด๋Œ‘ํ„ฐ (Interface Adapters):** ์œ ์Šค์ผ€์ด์Šค๋‚˜ ์—”ํ‹ฐํ‹ฐ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์›น, UI, ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ™์€ ์™ธ๋ถ€ ์—์ด์ „์‹œ์—๊ฒŒ ํŽธ๋ฆฌํ•œ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [9], [10], [13]. GUI์˜ MVC ๊ตฌ์กฐ์—์„œ ํ”„๋ ˆ์  ํ„ฐ(Presenter), ๋ทฐ(View), ์ปจํŠธ๋กค๋Ÿฌ(Controller)์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์ด ๊ณ„์ธต์— ์†ํ•ฉ๋‹ˆ๋‹ค [9], [13], [14]. * **ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋“œ๋ผ์ด๋ฒ„ (Frameworks & Drivers):** ๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ ๊ณ„์ธต์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์›น ํ”„๋ ˆ์ž„์›Œํฌ, UI ์‹œ์Šคํ…œ ๋“ฑ ๋ณ€๋™์„ฑ์ด ํฌ๊ณ  ์‹œ์Šคํ…œ์˜ ๊ตฌ์ฒด์ ์ธ ์„ธ๋ถ€ ์‚ฌํ•ญ๋“ค์ด ์œ„์น˜ํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค [9], [10], [15]. * **๊ฒฝ๊ณ„ ํšก๋‹จ (Crossing Boundaries) ๋ฐ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ** * ์ œ์–ด ํ๋ฆ„๊ณผ ์˜์กด์„ฑ์˜ ๋ฐฉํ–ฅ์ด ๋ฐ˜๋Œ€๊ฐ€ ๋˜๋Š” ์ƒํ™ฉ์—์„œ๋Š” **์˜์กด์„ฑ ์—ญ์ „ ์›์น™(DIP)**๊ณผ ๋™์  ๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ ์˜์กด์„ฑ์ด ๋‚ด๋ถ€๋ฅผ ํ–ฅํ•˜๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [16], [8], [17]. (์˜ˆ๋ฅผ ๋“ค์–ด, ์œ ์Šค์ผ€์ด์Šค๊ฐ€ ์ง์ ‘ ํ”„๋ ˆ์  ํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ , ๋‚ด๋ถ€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์™ธ๋ถ€์˜ ํ”„๋ ˆ์  ํ„ฐ๊ฐ€ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•จ) [17]. * ๊ณ„์ธต ๊ฒฝ๊ณ„๋ฅผ ๊ฐ€๋กœ์ง€๋ฅด๋Š” ๋ฐ์ดํ„ฐ๋Š” DTO(Data Transfer Object)์™€ ๊ฐ™์ด ์บก์Аํ™” ๋ฐ ๊ฒฉ๋ฆฌ๋œ ๋งค์šฐ ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ์•ผ๋งŒ ์˜์กด์„ฑ ๊ทœ์น™์„ ์œ„๋ฐฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [18]. * **๋„์ž… ์‹œ ๋„์ „ ๊ณผ์ œ ๋ฐ ํ•ด๊ฒฐ์ฑ…** * **๊ณผ์—”์ง€๋‹ˆ์–ด๋ง(Over-Engineering) ๋ฐ ์ดˆ๊ธฐ ๋น„์šฉ:** ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ์—ฌ๋Ÿฌ ๊ณ„์ธต๊ณผ ์ถ”์ƒํ™”๋ฅผ ๋„์ž…ํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ์žฅํ™ฉํ•ด์ง€๊ณ  ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [19]. * **ํ•ด๊ฒฐ์ฑ…:** ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์‹ค์งˆ์ ์ธ ์ด์ ์ด ์žˆ์„ ๋•Œ๋งŒ ๋ ˆ์ด์–ด์™€ ์ถ”์ƒํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์‹ค์šฉ์ ์ธ ์ ‘๊ทผ(Pragmatism)์ด ํ•„์š”ํ•˜๋ฉฐ, ์ ์ง„์ ์ธ ๋„์ž…์„ ํ†ตํ•ด ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค [19], [20]. * **ํ…Œ์ŠคํŠธ์˜ ๋ณต์žก์„ฑ:** ์—ฌ๋Ÿฌ ๊ณ„์ธต์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ชฉ(Mock) ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋…๋ฆฝ์ ์ธ ์ปดํฌ๋„ŒํŠธ์˜ ๋™์ž‘์— ์ดˆ์ ์„ ๋งž์ถ”๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [19]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Design & Experience ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[แ„€แ…ชแ†ซแ„‰แ…ตแ†ทแ„‰แ…กแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต(Separation of Concerns)|๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of Concerns)]], [[แ„‹แ…ดแ„Œแ…ฉแ†ซแ„‰แ…ฅแ†ผ แ„‹แ…งแ†จแ„Œแ…ฅแ†ซ แ„‹แ…ฏแ†ซแ„Žแ…ตแ†จ (Dependency Inversion Principle)|์˜์กด์„ฑ ์—ญ์ „ ์›์น™(Dependency Inversion Principle)]], [[SOLID แ„‹แ…ฏแ†ซแ„Žแ…ตแ†จ (SOLID Principles)|SOLID ์›์น™(SOLID Principles)]] - **Projects/Contexts:** ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Android Applications), iOS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ VIPER ํŒจํ„ด(VIPER Architecture), ASP.NET Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋„ทํ”Œ๋ฆญ์Šค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค(Netflix Microservices) - **Contradictions/Notes:** ์†Œ์Šค ์ถœ์ฒ˜ "Complete Guide to Clean Architecture - GeeksforGeeks"๋Š” ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์‹œ์Šคํ…œ์˜ ์žฅ๊ธฐ์ ์ธ ์œ ์ง€๋ณด์ˆ˜์„ฑ, ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ, ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ๊ฐ•์กฐํ•˜์ง€๋งŒ, ๋™์‹œ์— ๋„์ž… ์ดˆ๊ธฐ์—๋Š” ์—ฌ๋Ÿฌ ์ถ”์ƒํ™” ๊ณ„์ธต์„ ๊ตฌ์ถ•ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๊ณ  ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง(Over-Engineering)์— ๋น ์งˆ ์œ„ํ—˜์ด ์žˆ๋‹ค๊ณ  ์ง€์ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์šฉ์ ์ธ ๊ด€์ ๊ณผ์˜ ๊ท ํ˜• ์œ ์ง€๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [21], [19]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜(Clean Architecture).md ---