--- id: [[P-Reinforce|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|Architecture]])๋Š” ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด(Ro[[BERT|BERT]] C. Martin)์ด ์ œ์•ˆํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์ฒ ํ•™์œผ๋กœ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ์น™์„ ์‹œ์Šคํ…œ์˜ ์ค‘์‹ฌ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค [1, 2]. ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์—ฌ๋Ÿฌ ๋™์‹ฌ์› ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์ฒ ์ €ํžˆ ๋ถ„๋ฆฌํ•˜๋ฉฐ, ํ”„๋ ˆ์ž„์›Œํฌ, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI), ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ ์™ธ๋ถ€ ์š”์†Œ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ์„ ์™„์ „ํžˆ ๋…๋ฆฝ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค [1, 3-5]. ์ด ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ์€ ์†Œ์Šค ์ฝ”๋“œ์˜ ์˜์กด์„ฑ์ด ์˜ค์ง ๋‚ด๋ถ€์˜ ๊ณ ์ˆ˜์ค€ ์ •์ฑ…๋งŒ์„ ํ–ฅํ•ด์•ผ ํ•œ๋‹ค๋Š” '์˜์กด์„ฑ ๊ทœ์น™(Dependency Rule)'์ž…๋‹ˆ๋‹ค [1, 5, 6]. ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ์™ธ๋ถ€ ์—์ด์ „์‹œ์˜ ๋ณ€๊ฒฝ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์œผ๋ฉฐ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ํ™•์žฅ์„ฑ, ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 7, 8]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **ํ•ต์‹ฌ ๋ชฉ์ ๊ณผ ์ด์ :** ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ์ฃผ๋œ ๋ชฉ์ ์€ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ([[_แ„‚แ…ฌแ„‹แ…ช แ„‘แ…กแ†ฏแ„ƒแ…กแ„…แ…ตแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต_ - แ„€แ…ชแ†ซแ„‰แ…ตแ†ทแ„‰แ…กแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต (Separation of Concerns)|Separation of Concerns]])๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์„ ๋ชจ๋“ˆํ™”ํ•˜๊ณ , ํ”„๋ ˆ์ž„์›Œํฌ, UI, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ๋…๋ฆฝ์ ์ธ ์‹œ์Šคํ…œ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [3-5]. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์™ธ๋ถ€ ์š”์†Œ์˜ ๊ฐœ์ž… ์—†์ด ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฒฉ๋ฆฌํ•˜์—ฌ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(TeStability), ์‹œ์Šคํ…œ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ์š”๊ตฌ์‚ฌํ•ญ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ์„ฑ([[Scalability|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* ---