--- id: P-REINFORCE-AUTO-55088F category: "[[10_Wiki/๐Ÿ’ก Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of Concerns)" --- # [[๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of Concerns)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of Concerns, SoC)๋Š” ๋ณต์žกํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ์ž‘๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ๊ฐœ๋ณ„ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด, ๊ฐ ๋ถ€๋ถ„์ด ๋‹จ์ผํ•œ ๊ธฐ๋Šฅ์  ์ธก๋ฉด์ด๋‚˜ '๊ด€์‹ฌ์‚ฌ'๋งŒ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ํ•ต์‹ฌ ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ ์›์น™์ž…๋‹ˆ๋‹ค [1-3]. 1974๋…„ ์—์ธ ํ—ˆ๋ฅด ๋ฐ์ดํฌ์ŠคํŠธ๋ผ(Edsger W. Dijkstra)๊ฐ€ ์ธ๊ฐ„์˜ ์ธ์ง€์  ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ  ๋ณต์žก์„ฑ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ฒ˜์Œ ์ œ์•ˆํ•œ ์ฒ ํ•™์— ๊ธฐ์›์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [4-6]. ์ด ์›์น™์€ ๋ชจ๋“ˆ ๋‚ด์˜ ์‘์ง‘๋„(Cohesion)๋ฅผ ๋†’์ด๊ณ  ๋ชจ๋“ˆ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„(Coupling)๋ฅผ ๋‚ฎ์ถ”์–ด ์‹œ์Šคํ…œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์žฌ์‚ฌ์šฉ์„ฑ, ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ ๋ฐ ํ™•์žฅ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค [7-10]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **์ฃผ์š” ๊ฐœ๋… ๋ฐ ์ฒ ํ•™**: * **๊ด€์‹ฌ์‚ฌ(Concern)์˜ ์ •์˜**: ์‹œ์Šคํ…œ ๋‚ด์˜ ํŠน์ •ํ•œ ๊ธฐ๋Šฅ์  ์ธก๋ฉด, ๋™์ž‘ ๋˜๋Š” ์ฑ…์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋ Œ๋”๋ง, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ ๋“ฑ) [3, 11, 12]. * **์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„**: ์ข‹์€ SoC ์„ค๊ณ„๋Š” ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ์š”์†Œ๋“ค์ด ํ•˜๋‚˜์˜ ๋ช…ํ™•ํ•œ ๋ชฉ์ ์„ ์œ„ํ•ด ํ˜‘๋ ฅํ•˜๋Š” '๋†’์€ ์‘์ง‘๋„(High Cohesion)'์™€, ๋ชจ๋“ˆ ๊ฐ„ ์ƒํ˜ธ ์˜์กด์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋Š” '๋‚ฎ์€ ๊ฒฐํ•ฉ๋„(Low Coupling)'๋ฅผ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค [7-10, 13]. * **๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•œ ์ด์ **: * **์œ ์ง€๋ณด์ˆ˜ ๋ฐ ํ™•์žฅ์„ฑ์˜ ํ–ฅ์ƒ**: ์‹œ์Šคํ…œ์˜ ํ•œ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ(์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ)์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์–ด, ๋ณ€ํ™”ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์•ˆ์ „ํ•˜๊ฒŒ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [14-16]. * **๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ**: ๊ฐœ๋ณ„ ๋ชจ๋“ˆ์ด ์™ธ๋ถ€ ์ธํ”„๋ผ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, UI ๋“ฑ)์™€ ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ๊ฐ€์งœ ๊ฐ์ฒด(Mock)๋‚˜ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•œ ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์ˆ˜์›”ํ•ด์ง‘๋‹ˆ๋‹ค [16, 17]. * **๋ณ‘๋ ฌ ๊ฐœ๋ฐœ ๋ฐ ํ˜‘์—… ํšจ์œจ์„ฑ**: ์—ญํ• ์˜ ๊ฒฝ๊ณ„๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค์ •๋˜๋ฏ€๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๋‚˜ ํŒ€์ด ์„œ๋กœ์˜ ์ž‘์—…์— ๊ฐ„์„ญํ•˜์ง€ ์•Š๊ณ  ๋™์‹œ์— ๋ณ‘๋ ฌ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [14, 17, 18]. * **์‹ค๋ฌด ์ ์šฉ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด**: * **์›น ํ‘œ์ค€ ๊ธฐ์ˆ **: ์›น ๊ฐœ๋ฐœ์—์„œ ๊ตฌ์กฐ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” HTML, ํ‘œํ˜„์„ ๋‹ด๋‹นํ•˜๋Š” CSS, ๋™์  ๋™์ž‘์„ ๋‹ด๋‹นํ•˜๋Š” JavaScript๋กœ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๊ณ ์ „์ ์ธ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค [19-21]. * **๊ณ„์ธตํ™” ์•„ํ‚คํ…์ฒ˜ (Layered Architecture)**: ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ณ„์ธต, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ณ„์ธต, ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต ๋“ฑ ๋…ผ๋ฆฌ์  ์ธต์œผ๋กœ ๋‚˜๋ˆ„์–ด ์—ญํ• ๊ณผ ์ฑ…์ž„์„ ์—„๊ฒฉํžˆ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [22-25]. MVC(Model-View-Controller) ํŒจํ„ด์ด ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค [22, 26]. * **๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ (MSA)**: ๊ฑฐ๋Œ€ํ•œ ๋ชจ๋†€๋ฆฌ์‹(Monolithic) ์‹œ์Šคํ…œ์„ ์ž‘๊ณ  ๋…๋ฆฝ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ(๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค)๋“ค๋กœ ์ชผ๊ฐœ์–ด ๋ถ„๋ฆฌํ•˜๋Š” ์ ‘๊ทผ๋ฒ•์ž…๋‹ˆ๋‹ค [22, 27-29]. * **ํ•œ๊ณ„ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ**: * **๊ณผ๋„ํ•œ ๋ถ„๋ฆฌ์˜ ๋ถ€์ž‘์šฉ**: ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋งน๋ชฉ์ ์œผ๋กœ ํ˜น์€ ์ง€๋‚˜์น˜๊ฒŒ ์ž˜๊ฒŒ ์ชผ๊ฐœ๋ฉด ์ถ”์ƒํ™” ๊ณ„์ธต์ด ๋Š˜์–ด๋‚˜๊ณ  ๊ฐ„์ ‘ ์ฐธ์กฐ๊ฐ€ ์ฆ๊ฐ€ํ•ด, ์˜คํžˆ๋ ค ์ฝ”๋“œ์˜ ์‹คํ–‰ ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” '์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง'์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [30, 31]. * **์กฐ์ • ๋ฐ ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ**: ๋ถ„๋ฆฌ๋œ ๋ชจ๋“ˆ์ด๋‚˜ ์„œ๋น„์Šค ๊ฐ„์— ํ†ต์‹ ํ•ด์•ผ ํ•  ์ผ์ด ๋Š˜์–ด๋‚˜๋ฉฐ, ํŠนํžˆ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ๋ฐ ์ง๋ ฌํ™” ๋น„์šฉ ๋“ฑ ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋™๋ฐ˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [30, 32, 33]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)]], [[์‘์ง‘๋„(Cohesion)์™€ ๊ฒฐํ•ฉ๋„(Coupling)]], [[๊ณ„์ธตํ™” ์•„ํ‚คํ…์ฒ˜(Layered Architecture)]] - **Projects/Contexts:** [[๋„ทํ”Œ๋ฆญ์Šค(Netflix)์˜ ์ฝ”์Šค๋ชจ์Šค(Cosmos) ํ”Œ๋žซํผ๊ณผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ „ํ™˜]], [[์Šคํฌํ‹ฐํŒŒ์ด(Spotify)์˜ ๋งˆ์ดํฌ๋กœ ํ”„๋ก ํŠธ์—”๋“œ ๋ฐ ์Šค์ฟผ๋“œ ๋ชจ๋ธ]], [[HTML, CSS, JavaScript์˜ ์›น ํ‘œ์ค€ 3์š”์†Œ ๋ถ„๋ฆฌ]] - **Contradictions/Notes:** ๋งŽ์€ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ์€ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ์„ ์ œ์ ์œผ๋กœ ์—„๊ฒฉํžˆ ์„ค๊ณ„ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•˜์ง€๋งŒ, ์ผ๋ถ€ ์ „๋ฌธ๊ฐ€๋“ค์€ ์ฝ”๋“œ ์ž‘์„ฑ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์™„๋ฒฝํ•˜๊ฒŒ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์˜ˆ์ธกํ•˜์—ฌ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค [34, 35]. ๋Œ€์‹ , ์œ ์‚ฌํ•œ ์ฝ”๋“œ๊ฐ€ 3๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋  ๋•Œ ์ถ”์ถœํ•˜๋Š” 'Rule of Three'์ฒ˜๋Ÿผ, ๋ฐ˜๋ณต๋˜๋Š” ํŒจํ„ด์„ ํ™•์ธํ•œ ๋’ค์— ๊ฒฝํ—˜์ ์œผ๋กœ ์‚ฌํ›„์— ๋ถ„๋ฆฌํ•˜๋Š” ์‹ค์šฉ์ ์ด๊ณ  ์ ์ง„์ ์ธ ์ ‘๊ทผ(DRY ์›์น™๊ณผ ๋ณ‘ํ–‰)์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค [31, 35, 36]. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of Concerns).md]] ---