# [[Legacy Code Modernization]] ## ๐Ÿ“Œ Brief Summary ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๋ชจ๋”๋‹ˆ์ œ์ด์…˜(Legacy Code Modernization)์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ์กด ๋™์ž‘์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ, ์œ ์ง€๋ณด์ˆ˜์„ฑ ๋ฐ ํ™•์žฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค [1]. React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ, ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ตœ์‹  ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํ›…(Hooks)์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ณ  ์˜ค๋ž˜๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ต์ฒดํ•˜๋ฉฐ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ ์ง„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค [1, 2]. ์ด ๊ณผ์ •์€ ์‹œ์Šคํ…œ์˜ ์ „๋ฉด์ ์ธ ์žฌ์ž‘์„ฑ(rewrite)์„ ํ”ผํ•˜๊ณ , ํ…Œ์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ์ ์ง„์ ์ธ ๋ฆฌํŒฉํ† ๋ง์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ์ง„ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1, 3]. ## ๐Ÿ“– Core Content * **์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ „๋žต (Incremental Migration Strategies):** ๊ธฐ์กด ์•„ํ‚คํ…์ฒ˜๋‚˜ ๊ธฐ์ˆ (์˜ˆ: Context API์—์„œ Zustand๋กœ์˜ ์ „ํ™˜)์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ, ํ•œ ๋ฒˆ์— ์ „์ฒด๋ฅผ ์žฌ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•˜๋ฏ€๋กœ "์žฌ์ž‘์„ฑ์ด ์•„๋‹Œ ๋ฆฌํŒฉํ† ๋ง(refactor, do not rewrite)" ์ฒ ํ•™์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค [1]. ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ƒํƒœ ์Šคํ† ์–ด๋‚˜ ๋ชจ๋“ˆ์”ฉ ์ ์ง„์ ์œผ๋กœ ์ด๋™ํ•ด์•ผ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ˜„๋Œ€ํ™”ํ•˜๋Š” ๋™์•ˆ์—๋„ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์ง€์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1]. * **์‚ฌ์ „ ์ค€๋น„ ๋ฐ ํ…Œ์ŠคํŠธ:** ๋ฆฌํŒฉํ† ๋ง์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์–ด์„ ์€ ์œ ๋‹› ํ…Œ์ŠคํŠธ(Unit Test)๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [3]. ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์–ต์ง€๋กœ๋ผ๋„ ํ•™์Šตํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํšŒ๊ท€(regression) ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 4]. ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์ „, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๋ชฉ์ ์„ ํŒŒ์•…ํ•˜๊ณ  ๋ผ์šฐํŒ…, ์ธ์ฆ, API ํ˜ธ์ถœ ๋ฐ ์ „์—ญ ์ƒํƒœ๋ฅผ ๋จผ์ € ๋งคํ•‘(mapping)ํ•˜์—ฌ ๋ฉ˜ํƒˆ ๋ชจ๋ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [5, 6]. * **React ํŠนํ™” ๋ชจ๋”๋‹ˆ์ œ์ด์…˜ ํ•ต์‹ฌ ๋ชฉํ‘œ (Quick Wins):** * ๊ธฐ์กด์˜ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํ›…(Hooks)์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค [2]. * ๋ถˆํ•„์š”ํ•œ `useEffect` ์‚ฌ์šฉ์„ ์‹๋ณ„ํ•˜๊ณ  ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค [2]. * ์„œ๋ฒ„ ์ƒํƒœ(Server state) ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด TanStack Query(React Query) ๋“ฑ์„ ๋„์ž…ํ•˜๊ณ , ๊ธฐ์กด์˜ ๋ฌด๊ฑฐ์šด Redux ๊ตฌํ˜„์ฒด๋ฅผ ๋œ์–ด๋ƒ…๋‹ˆ๋‹ค. ๋‚จ์€ ํด๋ผ์ด์–ธํŠธ ์ „์—ญ ์ƒํƒœ๋Š” Zustand๋‚˜ Context๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค [2]. * JavaScript ์ฝ”๋“œ๋ฒ ์ด์Šค๋ผ๋ฉด TypeScript๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์—ฌ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค [2]. (๋‹ค๋งŒ, ๋ณต์žก์„ฑ์„ ๊ณ ๋ คํ•ด ์ ์ง„์ ์œผ๋กœ ๋„์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7]). * ์ง€์›์ด ์ค‘๋‹จ๋œ(deprecated) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ์ตœ์‹  React ๋ฒ„์ „์— ๋งž์ถฅ๋‹ˆ๋‹ค [2]. * **์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„  ๋ฐ ์ปค์Šคํ…€ ํ›…์˜ ํ™œ์šฉ:** ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP), DRY, YAGNI ์›์น™์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ž‘๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์œ ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [8]. ์ตœ์‹  React ํ™˜๊ฒฝ์—์„œ ๋ฆฌํŒฉํ† ๋ง์˜ ์ฃผ์š” ๋‹จ์œ„๋Š” '์ปค์Šคํ…€ ํ›…'์ž…๋‹ˆ๋‹ค. ๊ฑฐ๋Œ€ํ•œ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์— ํ˜ผ์žฌ๋œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(๋ฐ์ดํ„ฐ ํŽ˜์นญ, ํผ ํ•ธ๋“ค๋ง ๋“ฑ)์„ ์ปค์Šคํ…€ ํ›…์œผ๋กœ ์ถ”์ถœํ•˜์—ฌ UI์™€ ๋กœ์ง์„ ๊ฒฉ๋ฆฌํ•˜๋ฉด, ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [9-11]. * **๋ฆฐํŒ… ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ๋„์ž…:** ESLint(์˜ˆ: `eslint-plugin-react`, `eslint-plugin-react-hooks` ๋“ฑ)๋ฅผ ํ”„๋กœ์ ํŠธ์™€ IDE์— ์ ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ฐ•์ œํ•˜๊ณ  ์ฝ”๋“œ ๋ƒ„์ƒˆ(code smell)๋ฅผ ์‹๋ณ„ ๋ฐ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [12]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Refactoring Techniques]], [[Technical Debt Management]], [[Clean Code Principles]], [[Single Responsibility Principle]], [[State Management Migration]] - **Projects/Contexts:** [[React Frontend Development]], [[Feature-Sliced Design]] - **Contradictions/Notes:** ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ์ „๋žต์„ ๊ตฌ์ƒํ•  ๋•Œ Claude Code ๋“ฑ AI ๋„๊ตฌ์˜ ๋„์›€์„ ๋ฐ›์•„ ๋ถ„์„๊ณผ ๊ฐœ์„ ์„ ์ง„ํ–‰ํ•˜๋ผ๋Š” ์ถ”์ฒœ์ด ์žˆ๋Š” ๋ฐ˜๋ฉด [11, 13, 14], ์‹œ์Šคํ…œ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ํ๋ฆ„์„ ๊ฐœ๋ฐœ์ž ์Šค์Šค๋กœ ์™„๋ฒฝํžˆ ์ดํ•ดํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ณด๊ฐ•ํ•˜๋Š” ๊ณผ์ •์ด ์„ ํ–‰๋˜์ง€ ์•Š์œผ๋ฉด ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๋Š” ์‹œ๊ฐ์ด ํ•จ๊ป˜ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [5]. ๋˜ํ•œ, ์ƒํƒœ ๊ด€๋ฆฌ ๋ฆฌํŒฉํ† ๋ง ์‹œ Context์—์„œ Zustand๋กœ์˜ ์ด์ „์€ ์‰ฝ์ง€๋งŒ, ๊ตฌ์กฐํ™”๊ฐ€ ๋œ ๋œ ์ƒํƒœ์—์„œ Zustand๋ฅผ ๋‚จ์šฉํ•˜๋‹ค ๋‚˜์ค‘์— Redux๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•  ๋•Œ๋Š” ๊ณผ์ •์ด ๋งค์šฐ ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [15]. --- *Last updated: 2026-04-26*