--- id: wiki-2026-0508-breaking-dependencies title: Breaking Dependencies category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [uncategorized] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Breaking Dependencies]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) 'Breaking Dependencies(์˜์กด์„ฑ ์ œ๊ฑฐ)'๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ์„ ๋ฐฉํ•ดํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์˜ ์œ ์—ฐ์„ฑ์„ ์ €ํ•ดํ•˜๋Š” ์ฝ”๋“œ ๊ฐ„์˜ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ๋Š์–ด๋‚ด๋Š” ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์ด๋‹ค [1-3]. ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด๋‚˜ ์™ธ๋ถ€ ์„œ๋“œํŒŒํ‹ฐ ์„œ๋ฒ„ ํ˜ธ์ถœ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฌด๊ฑฐ์šด ์ž์›์„ ์‹๋ณ„ํ•˜๊ณ , ์ด๋ฅผ ๊ฐ€์งœ ๊ฐ์ฒด(Mock) ๋“ฑ ๊ฐ€๋ฒผ์šด ๋Œ€์ฒด๋ฌผ๋กœ ๊ต์ฒดํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋œ๋‹ค [1-3]. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์— ์•ˆ์ „ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๊ถ๊ทน์ ์œผ๋กœ ๋” ํฐ ๊ทœ๋ชจ์˜ ๋ฆฌํŒฉํ† ๋ง๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ•  ์ˆ˜ ์žˆ๋‹ค [2, 4, 5]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๋”œ๋ ˆ๋งˆ ๊ทน๋ณต์˜ ํ•ต์‹ฌ**: ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฆฌํŒฉํ† ๋งํ•˜๋ ค๋ฉด ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์ˆ˜์ ์ด์ง€๋งŒ, ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๋จผ์ € ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด ๋ณต์žกํ•œ ์˜์กด์„ฑ์„ ๋Š์–ด๋‚ด์•ผ ํ•˜๋Š” ๋ชจ์ˆœ์ ์ธ ์ƒํ™ฉ์— ์ง๋ฉดํ•˜๊ฒŒ ๋œ๋‹ค [2, 6]. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ์„ ๊ฐ€๋กœ๋ง‰๋Š” ๋ฌธ์ œ์˜ 99%๋Š” ์˜์กด์„ฑ ๋ฌธ์ œ(Dependency Problem)๋กœ ๊ท€๊ฒฐ๋˜๋ฉฐ, ์™ธ๋ถ€ API ํ˜ธ์ถœ, ์ „์—ญ ์˜์กด์„ฑ(Global Dependency), ํ˜น์€ ์ƒ์„ฑํ•˜๊ธฐ ๊นŒ๋‹ค๋กœ์šด ๋งค๊ฐœ๋ณ€์ˆ˜ ๋“ฑ์ด ์ด์— ํ•ด๋‹นํ•œ๋‹ค [1, 7]. ์˜์กด์„ฑ ์ œ๊ฑฐ๋Š” ์ด ๋”œ๋ ˆ๋งˆ๋ฅผ ๋ŒํŒŒํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๊ด€๋ฌธ์ด๋‹ค [2]. * **์ ‘์ (Seam)์˜ ์‹๋ณ„๊ณผ ํ™œ์šฉ**: ์˜์กด์„ฑ์„ ๋Š๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ ์ธ '์ ‘์ (Seam)'์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค [1, 2, 4]. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ํ™•์žฅ(Extend)ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์‹ค์ œ DB์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋„๋ก ๋ฉ”์„œ๋“œ์˜ ๋™์ž‘์„ ๋ฎ์–ด์“ฐ๋Š” ๋ฐฉ์‹์„ ์ทจํ•ด ์˜์กด์„ฑ์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค [8, 9]. * **์˜์กด์„ฑ ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ๊ตฌ์ฒด์  ๊ธฐ๋ฒ•๋“ค**: ๋งˆ์ดํด ํŽ˜๋”์Šค(Michael Feathers)๋Š” ์•ˆ์ „ํ•˜๊ฒŒ ์˜์กด์„ฑ์„ ๋Š์–ด๋‚ด๊ธฐ ์œ„ํ•œ 24๊ฐ€์ง€์˜ '์˜์กด์„ฑ ์ œ๊ฑฐ ๊ธฐ๋ฒ•(Dependency-Breaking Techniques)' ์นดํƒˆ๋กœ๊ทธ๋ฅผ ์ œ์‹œํ•œ๋‹ค [10]. ์—ฌ๊ธฐ์—๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ์ ์‘์‹œํ‚ค๊ธฐ(Adapt Parameter), ๋ฉ”์„œ๋“œ ๊ฐ์ฒด ์ถ”์ถœ(Break Out Method Object), ์ธํ„ฐํŽ˜์ด์Šค ์ถ”์ถœ(Extract Interface), ์ธ์Šคํ„ด์Šค ์œ„์ž„์ž ๋„์ž…(Introduce Instance Delegator), ์ƒ์„ฑ์ž/๋ฉ”์„œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”(Parameterize Constructor/Method), ํ•˜์œ„ ํด๋ž˜์Šคํ™” ๋ฐ ๋ฉ”์„œ๋“œ ์žฌ์ •์˜(Subclass and Override Method) ๋“ฑ์˜ ์‹ค์šฉ์ ์ธ ํŒจํ„ด๋“ค์ด ํฌํ•จ๋œ๋‹ค [11, 12]. * **๋ชจ๋“ˆ ๋ฐ ์•„ํ‚คํ…์ฒ˜ ์ˆ˜์ค€์˜ ์˜์กด์„ฑ ์ œ๊ฑฐ**: ์˜์กด์„ฑ ๋ถ„๋ฆฌ๋Š” ๋‹จ์ผ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์„œ๋“œ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ ๋ชฉ์ ์„ ๋„˜์–ด, ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ์‚ฌ์šฉ๋œ๋‹ค. ์œˆ๋„์šฐ(Windows) ๋ฆฌํŒฉํ† ๋ง ์‚ฌ๋ก€์—์„œ๋Š” ์—ฌ๋Ÿฌ ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฐ„์— ๋ณต์žกํ•˜๊ฒŒ ์–ฝํ˜€ ์žˆ๋˜ ์›์น˜ ์•Š๋Š” ๋ชจ๋“ˆ ๊ฐ„ ์˜์กด์„ฑ(inter-module dependencies)์„ ๋Š์–ด๋‚ด๊ธฐ ์œ„ํ•ด ํŠน์ • API ๊ธฐ๋Šฅ์„ ๋‹ค๋ฅธ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ด๋™์‹œํ‚ค๊ณ  ๋ถ„ํ• ํ•˜๋Š” ์‹œ์Šคํ…œ ๊ทœ๋ชจ์˜ ๋ฆฌํŒฉํ† ๋ง์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค [13, 14]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) * **์ฝ”๋“œ์˜ ๋ฏธํ•™์  ์†์ƒ**: ๊ธฐ์กด ์ฝ”๋“œ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ณผ์ •์—์„œ, ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ์ž„์‹œ์ ์ธ ๊ฐ„์ ‘ ๊ณ„์ธต์ด๋‚˜ ๋ถˆํ•„์š”ํ•ด ๋ณด์ด๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ฆฌํŒฉํ† ๋ง์˜ ํŠน์ • ๋‹จ๊ณ„์—์„œ๋Š” ์ฝ”๋“œ๊ฐ€ ์ด์ „๋ณด๋‹ค ๋ฏธํ•™์ ์œผ๋กœ ์•ฝ๊ฐ„ ๋” ์ง€์ €๋ถ„ํ•ด์ง€๊ฑฐ๋‚˜(uglier) ๋ณต์žกํ•ด์ง€๋Š” ์ œ์•ฝ์ด ๋ฐœ์ƒํ•œ๋‹ค [15, 16]. * **๋ณ‘์ ์ธ ์ฝ”๋“œ ๋ฒ ์ด์Šค์—์„œ์˜ ์–ด๋ ค์›€**: ์šด์ด ์ข‹๋‹ค๋ฉด ์˜์กด์„ฑ์ด ์ž‘๊ณ  ๊ตญ์†Œ์ ์œผ๋กœ ๋ชจ์—ฌ์žˆ์ง€๋งŒ, ์ฝ”๋“œ๊ฐ€ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ง๊ฐ€์ง„ ๋ณ‘์ ์ธ(pathological) ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ์˜์กด์„ฑ์ด ์ˆ˜์—†์ด ๋งŽ๊ณ  ์ฝ”๋“œ ์ „๋ฐ˜์— ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ํผ์ ธ ์žˆ์–ด ์ด๋ฅผ ๋Š์–ด๋‚ด๋Š” ๊ณผ์ • ์ž์ฒด๊ฐ€ ๊ทน๋„๋กœ ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ  ์˜ค๋žœ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ๋‹ค [5]. * **์ „์ฒ˜๋ฆฌ๊ธฐ ๋ฐ ๋ง์ปค ์ ‘์ ์˜ ๋ถ€์ž‘์šฉ**: ๊ฐ์ฒด ์ ‘์ (Object Seams)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” C/C++ ๊ฐ™์€ ์–ธ์–ด์—์„œ ์ „์ฒ˜๋ฆฌ๊ธฐ ๋งคํฌ๋กœ๋‚˜ ๋ง์ปค๋ฅผ ํ™œ์šฉํ•ด ์˜์กด์„ฑ์„ ๋Š๋Š” ๋ฐฉ์‹(Preprocessing / Link Seams)์€ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ๊ณผ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ ์ฐจ์ด๋ฅผ ๋ถˆ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด, ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“  ๊นŒ๋‹ค๋กœ์šด ๋ฒ„๊ทธ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค [17, 18]. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ํ…Œ์ŠคํŠธ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ๋„ ์ €ํ•˜์‹œํ‚ค๋ฏ€๋กœ ๋” ๋‚˜์€ ๋Œ€์•ˆ์ด ์—†๋Š” ์ตœํ›„์˜ ์ˆ˜๋‹จ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค [19]. --- *Last updated: 2026-05-03* ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Parent:** [[10_Wiki/Topics]] - **Related:** *(TODO: ์ตœ์†Œ 2๊ฐœ)* - **Opposite / Trade-off:** *(TODO)* - **Raw Source:** ์ง์ ‘ ์ž…๋ ฅ ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*