--- id: P-REINFORCE-WIKI-3576D819 category: "10_Wiki/๐Ÿ’ก Topics/01_Process_Methodology" confidence_score: 0.95 tags: ['refactoring', 'strangler-fig-pattern', 'ports-and-adapters-(hexagonal-architecture)', 'software-architecture-erosion', 'technical-debt', 'process-methodology'] last_reinforced: 2026-05-02 --- # [[Refactoring]] ## ๐Ÿ“Œ Brief ์‹ Summary ๋ฆฌํŒฉํ† ๋ง(Refactoring)์€ ๋ณ€ํ™”ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์‹œ์Šคํ…œ ํ™•์žฅ์— ๋Œ€์‘ํ•˜๊ณ  ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ธฐ์กด ์ฝ”๋“œ๋‚˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์ง„์ ์œผ๋กœ ์žฌ๊ตฌ์กฐํ™”ํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [1, 2]. ์ดˆ๊ธฐ MVP ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์„ ํƒํ•œ ๋‹จ์ˆœํ•œ ์•„ํ‚คํ…์ฒ˜(์˜ˆ: ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜)๊ฐ€ ์‹œ์Šคํ…œ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ํ•œ๊ณ„์— ๋ถ€๋”ชํž ๋•Œ, ๋ณด๋‹ค ๋ชจ๋“ˆํ™”๋˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜(์˜ˆ: ํ—ฅ์‚ฌ๊ณ ๋‚ , ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค)๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜์ ์ธ ์ง„ํ™” ๋‹จ๊ณ„๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [2-4]. ## ๐Ÿ“– Core Content - **์•„ํ‚คํ…์ฒ˜ ์ง„ํ™”์™€ ๊ธฐ์ˆ  ๋ถ€์ฑ„ ํ•ด์†Œ:** ์Šคํƒ€ํŠธ์—…์ด๋‚˜ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋Š” ๋น ๋ฅธ ์ถœ์‹œ๋ฅผ ์œ„ํ•ด ๋‹จ์ˆœํ•œ ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜(Layered Architecture)๋‚˜ ๋ชจ๋†€๋ฆฌ์‹(Monolithic) ๊ตฌ์กฐ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค [4, 5]. ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ์ด ์„ฑ์žฅํ•˜๊ณ  ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•  ๋•Œ, ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ์‹ฌ๊ฐํ•œ ๊ธฐ์ˆ  ๋ถ€์ฑ„์™€ ๋ณด์•ˆ ๋ถ€์ฑ„๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ—ฅ์‚ฌ๊ณ ๋‚ (Hexagonal)์ด๋‚˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋กœ์˜ ๋ฆฌํŒฉํ† ๋ง์ด ๋ถˆ๊ฐ€ํ”ผํ•ฉ๋‹ˆ๋‹ค [1, 3]. - **์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜(Incremental Refactoring):** ์•„ํ‚คํ…์ฒ˜ ๋ฆฌํŒฉํ† ๋ง์€ ์œ„ํ—˜์„ฑ์ด ํฐ "๋น…๋ฑ…(Big bang)" ๋ฐฉ์‹์˜ ์ „๋ฉด ์žฌ๊ตฌ์ถ•์„ ํ”ผํ•˜๊ณ  ์ ์ง„์ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค [6]. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ํฌํŠธ์™€ ์–ด๋Œ‘ํ„ฐ(Ports/Adapters)๋ฅผ ๋„์ž…ํ•˜์—ฌ ๊ธฐ์กด ๋ ˆ๊ฑฐ์‹œ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ์„œ์„œํžˆ ๋‚ฎ์ถ”๊ฑฐ๋‚˜ [6, 7], ์ŠคํŠธ๋žญ๊ธ€๋Ÿฌ ํ”ผ๊ทธ ํŒจํ„ด(Strangler Fig Pattern)์„ ํ™œ์šฉํ•ด ๋ชจ๋†€๋ฆฌ์‹ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ ์ง„์ ์œผ๋กœ ์„œ๋ฒ„๋ฆฌ์Šค ์„œ๋น„์Šค๋กœ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ์‹์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [8]. - **์•ˆ์ „ํ•œ ๋ฆฌํŒฉํ† ๋ง์„ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„:** ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜(Clean Architecture)๋‚˜ ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜์™€ ๊ฐ™์ด ๋„๋ฉ”์ธ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฒฉ๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋Š”, ๊ธฐ์ˆ ์ด๋‚˜ ํ”„๋กœํ† ์ฝœ์— ๊ด€๊ณ„์—†์ด ๋‚ด๋ถ€ ๋กœ์ง์„ ๋ณดํ˜ธํ•˜๋ฏ€๋กœ ์ตœ์†Œํ•œ์˜ ์œ„ํ—˜์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ฆฌํŒฉํ† ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [9]. - **์•„ํ‚คํ…์ฒ˜ ์นจ์‹(Architecture Erosion)์— ๋Œ€ํ•œ ์น˜๋ฃŒ์  ์กฐ์น˜:** ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์˜๋„๋œ ์„ค๊ณ„์™€ ์‹ค์ œ ๊ตฌํ˜„ ์‚ฌ์ด์— ๊ฒฉ์ฐจ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” '์•„ํ‚คํ…์ฒ˜ ์นจ์‹'์„ ๊ฒช๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [10]. ๊ธฐ์ˆ  ๋ถ€์ฑ„ ๋ˆ„์  ๋“ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ด๋Ÿฌํ•œ ์นจ์‹์„ ํ•ด๊ฒฐํ•˜๊ณ  ์‹œ์Šคํ…œ์„ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ์š” ์น˜๋ฃŒ์  ์กฐ์น˜(Remedial measures)๋กœ ๋ฆฌํŒฉํ† ๋ง๊ณผ ์žฌ์„ค๊ณ„(Redesign)๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค [11]. ## โš–๏ธ Trade-offs & Caveats - **๊ฐœ๋ฐœ ์ค‘ยทํ›„๋ฐ˜๋ถ€์˜ ๋†’์€ ๋ณต์žก์„ฑ:** ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ํฐ ๊ทœ๋ชจ์˜ ๋ฆฌํŒฉํ† ๋ง์„ ๊ฐœ๋ฐœ ์ค‘ยทํ›„๋ฐ˜๋ถ€์— ์‹œ๋„ํ•  ๊ฒฝ์šฐ, ์ด๋ฏธ ๊ตฌ์ถ•๋œ ์˜์กด์„ฑ๊ณผ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๋ณต์žก์„ฑ์œผ๋กœ ์ธํ•ด ์ƒ๋‹นํ•œ ๊ณ ํ†ต๊ณผ ๋ง‰๋Œ€ํ•œ ๋…ธ๋ ฅ์ด ์ˆ˜๋ฐ˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 12]. - **๊ฐ•ํ•œ ๊ฒฐํ•ฉ(Tight Coupling) ํ™˜๊ฒฝ์—์„œ์˜ ๋ฆฌํŒฉํ† ๋ง ์ทจ์•ฝ์„ฑ:** ๊ฒฝ๊ณ„๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ•ด์ง„ ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜๋‚˜ ๊ตฌ์กฐ๊ฐ€ ์—‰ํ‚จ ๋ชจ๋†€๋ฆฌ์‹ ์‹œ์Šคํ…œ์—์„œ๋Š”, ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์œผ๋กœ ์ธํ•ด ๋ฆฌํŒฉํ† ๋ง ์‹œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ๊นจ์ง€๊ธฐ ์‰ฝ๊ณ (brittle), ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์—ฐ์‡„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์œ„ํ—˜์ด ํฝ๋‹ˆ๋‹ค [13, 14]. - **๋น„์šฉ๊ณผ ์‹œ๊ฐ„์˜ ์ œ์•ฝ:** ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ƒํ™˜ํ•˜๊ณ  ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•˜์ง€๋งŒ, ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์„œ๋น„์Šค ๋ถ„๋ฆฌ(์˜ˆ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค)๋ฅผ ์—ผ๋‘์— ๋‘์ง€ ์•Š๊ณ  ๋งŒ๋“ค์–ด์ง„ ๋ชจ๋†€๋ฆฌ์‹ ์‹œ์Šคํ…œ์„ ๋ถ„ํ•ดํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํ•œ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„๊ณผ ์šด์˜ ์ธํ”„๋ผ ๋ณ€๊ฒฝ ๋น„์šฉ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค [2, 15]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [๋งˆ์ด๊ทธ๋ ˆ์ด์…˜/์ „ํ™˜ ์ „๋žต] - [[Strangler Fig Pattern]] - ์—ฐ๊ฒฐ ์ด์œ : ๊ธฐ์กด ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜์—์„œ ์„œ๋ฒ„๋ฆฌ์Šค๋‚˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํŒจํ„ด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [8]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์˜ ๊ฐ€์šฉ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์•„ํ‚คํ…์ฒ˜ ๋ถ€์ฑ„๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ„ํ•  ๋ฐ ์ƒํ™˜ํ•˜๋Š” ์‹ค๋ฌด์ ์ธ ๋ฆฌํŒฉํ† ๋ง ๋ฐฉ๋ฒ•๋ก ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - [[Ports and Adapters (Hexagonal Architecture)]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ํฌํŠธ์™€ ์–ด๋Œ‘ํ„ฐ๋ฅผ ๋„์ž…ํ•˜์—ฌ ์ ์ง„์ ์œผ๋กœ ์‹œ์Šคํ…œ์„ ๋””์ปคํ”Œ๋งํ•˜๋Š” ๋ฐ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [6]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์™ธ๋ถ€ ์ธํ”„๋ผ์˜ ์˜์กด์„ฑ์„ ์—ญ์ „์‹œ์ผœ ๋ฆฌํŒฉํ† ๋ง์— ๋”ฐ๋ฅธ ๋ถ€์ž‘์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ตฌ์กฐ์  ์›๋ฆฌ๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### [์•„ํ‚คํ…์ฒ˜ ํ’ˆ์งˆ ๋ฐ ๋ถ€์ฑ„] - [[Software Architecture Erosion]] - ์—ฐ๊ฒฐ ์ด์œ : ์•„ํ‚คํ…์ฒ˜ ์นจ์‹์€ ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•˜๊ฒŒ ๋˜๋Š” ๊ทผ๋ณธ์ ์ธ ์›์ธ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ๋ฆฌํŒฉํ† ๋ง์€ ์ด๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ์น˜๋ฃŒ์  ์กฐ์น˜๋กœ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค [10, 11]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์™œ ์ดˆ๊ธฐ์— ์ž˜ ์„ค๊ณ„๋œ ์‹œ์Šคํ…œ์ด๋ผ๋„ ์ง€์†์ ์ธ ๋ฆฌํŒฉํ† ๋ง ์—†์ด๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ฌด๋„ˆ์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์ด ๊ธ‰์ฆํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - [[Technical Debt]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ชจ๋†€๋ฆฌ์Šค๋‚˜ ๋‹จ์ˆœ ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํ™•์žฅ์„ ๋งž์ดํ•  ๋•Œ ์ถ•์ ๋˜๋Š” ๋ถ€์ฑ„์ด๋ฉฐ, ์ด๋ฅผ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํŒฉํ† ๋ง์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค [1, 15]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์‹œ์— ๋ฆฌํŒฉํ† ๋งํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ๊ณผ ๊ฐœ๋ฐœ ์†๋„์— ๋ฏธ์น˜๋Š” ์•…์˜ํ–ฅ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ### Deeper Research Questions - ๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜(Layered Architecture)๊ฐ€ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ(Tight Coupling) ์ƒํƒœ๋กœ ๋ณ€์งˆ๋˜์—ˆ์„ ๋•Œ, ์ด๋ฅผ ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฆฌํŒฉํ† ๋งํ•˜๊ธฐ ์œ„ํ•œ ํฌํŠธ์™€ ์–ด๋Œ‘ํ„ฐ ๋„์ž…์˜ ๊ตฌ์ฒด์ ์ธ ๋‹จ๊ณ„๋Š” ๋ฌด์—‡์ธ๊ฐ€? - ๋Œ€๊ทœ๋ชจ ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ, ์ŠคํŠธ๋žญ๊ธ€๋Ÿฌ ํ”ผ๊ทธ ํŒจํ„ด(Strangler Fig Pattern)์„ ์ ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์•ˆ์€ ๋ฌด์—‡์ธ๊ฐ€? - ์•„ํ‚คํ…์ฒ˜ ์นจ์‹(Architecture Erosion)์„ ์กฐ๊ธฐ์— ์‹๋ณ„ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ† ๋ง์œผ๋กœ ์ด์–ด์ง€๊ธฐ ์ „์— ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋™ํ™”๋œ ์•„ํ‚คํ…์ฒ˜ ์ ํ•ฉ์„ฑ ๊ฒ€์‚ฌ(Architecture Conformance Check) ๊ธฐ๋ฒ•์€ ๋ฌด์—‡์ด ์žˆ๋Š”๊ฐ€? - ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด UI๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ธต์— ๋ถ„์‚ฐ๋˜์–ด ๋ˆ„์ˆ˜(Leak)๋œ ๊ธฐ์กด ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ, ๋„๋ฉ”์ธ ์ค‘์‹ฌ ์„ค๊ณ„(DDD) ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ ๊ฒช๋Š” ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋Š” ๋ฌด์—‡์ธ๊ฐ€? - ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ • ์ค‘ ๋ถˆ๊ฐ€ํ”ผํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ, ์‹œ์Šคํ…œ์˜ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๋ฐ ์ด์ „ ๊ธฐ๋Šฅ๊ณผ์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ API ๋ฒ„์ €๋‹ ๋ฐ ๋ผ์šฐํŒ… ์ „๋žต์€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** ๋ชจ๋†€๋ฆฌ์‹ ์‹œ์Šคํ…œ์˜ ํŠน์ • ๋ชจ๋“ˆ์„ ์„œ๋ฒ„๋ฆฌ์Šค ํ•จ์ˆ˜๋กœ ์ „ํ™˜ํ•˜๊ฑฐ๋‚˜, ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๋‚ด๋ถ€์— ์ธํ„ฐํŽ˜์ด์Šค(ํฌํŠธ)๋ฅผ ์ •์˜ํ•˜์—ฌ ์™ธ๋ถ€ ์˜์กด์„ฑ(์–ด๋Œ‘ํ„ฐ)์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ ์ง„์ ์œผ๋กœ ๊ฐœ์„ ํ•  ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - **System Design:** ์ดˆ๊ธฐ ์‹œ์Šคํ…œ์€ ๋น ๋ฅธ ์†๋„๋ฅผ ์œ„ํ•ด ๋‹จ์ˆœํ•œ ๋ชจ๋“ˆ๋Ÿฌ ๋ชจ๋†€๋ฆฌ์Šค(Modular Monolith)๋กœ ์„ค๊ณ„ํ•˜๋˜, ํ–ฅํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ํญ์ฆํ•  ๋•Œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์‰ฝ๊ฒŒ ๋ฆฌํŒฉํ† ๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„๋ฉ”์ธ ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋ฏธ๋ฆฌ ๋‚ฎ์ถ”๋Š” ์ „๋žต์„ ์ทจํ•  ๋•Œ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. - **Operation / Maintenance:** ์ฝ”๋“œ ์ •์  ๋ถ„์„์ด๋‚˜ ์•„ํ‚คํ…์ฒ˜ ์ ํ•ฉ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ์•„ํ‚คํ…์ฒ˜ ์นจ์‹ ๋ฐ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์‹๋ณ„ํ•˜๊ณ , ์œ ์ง€๋ณด์ˆ˜ ์ฃผ๊ธฐ๋งˆ๋‹ค ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฆฌํŒฉํ† ๋ง ์Šคํ”„๋ฆฐํŠธ๋ฅผ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค. - **Learning Path:** ๊ธฐ๋ณธ ๊ณ„์ธตํ˜• ํŒจํ„ด ๊ตฌ์ถ• -> ๊ธฐ์ˆ  ๋ถ€์ฑ„ ๋ฐ ๊ตฌ์กฐ์  ํ•œ๊ณ„ ์ฒด๊ฐ -> ์˜์กด์„ฑ ์—ญ์ „ ์›์น™(SOLID, Clean Architecture) ํ•™์Šต -> ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ ๋„๋ฉ”์ธ ์ค‘์‹ฌ์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง ํ•ด๋ณด๋Š” ๊ณผ์ •์œผ๋กœ ํ•™์Šต์ด ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. - **My Project Relevance:** ํ˜„์žฌ ๊ตฌ์ถ• ์ค‘์ธ MVP ํ”„๋กœ์ ํŠธ๊ฐ€ ํ–ฅํ›„ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ(Cloud-Native) ํ™˜๊ฒฝ์œผ๋กœ ์Šค์ผ€์ผ์—…๋  ๊ฒƒ์„ ๋Œ€๋น„ํ•˜์—ฌ, ๋ฌด๋ฆฌํ•œ ๋น…๋ฑ… ๋ฐฉ์‹์˜ ์ „ํ™˜์„ ํ”ผํ•˜๊ณ  ์ ์ง„์ ์ธ ๋ฆฌํŒฉํ† ๋ง์ด ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ ๊ฒฝ๊ณ„๋ฅผ ์‚ฌ์ „์— ์„ค๊ณ„ํ•˜๋Š” ๋ฐ ๊ธฐ์ค€์ด ๋ฉ๋‹ˆ๋‹ค. ### Adjacent Topics - [[Domain-Driven Design (DDD)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์•„ํ‚คํ…์ฒ˜ ๋ฆฌํŒฉํ† ๋ง ์‹œ, ๋ชจ๋†€๋ฆฌ์‹ ์‹œ์Šคํ…œ์„ ๋ถ„ํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๊ณ„(Bounded Context)๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ •์˜ํ•˜๋Š” ๊ธฐ์ค€์ ์œผ๋กœ ํ•™์Šต์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - [[Microservices Decomposition]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ฆฌํŒฉํ† ๋ง์„ ํ†ตํ•ด ๋‹จ์ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„œ๋น„์Šค๋ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database per Service)๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ์‚ฌ๊ฐ€(Saga) ํŒจํ„ด์ด๋‚˜ CQRS๋ฅผ ๋„์ž…ํ•˜๋Š” ์‹ค๋ฌด์ ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ธฐ๋ฒ•์œผ๋กœ ํƒ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --- *Last updated: 2026-05-02*