# [[Large-scale Application Refactoring|Large-scale Application Refactoring]] ## ๐Ÿ“Œ Brief Summary ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆฌํŒฉํ† ๋ง์€ ์ฝ”๋“œ์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ๋ณด์กดํ•˜๋ฉด์„œ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ์˜ค๋ž˜๋œ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ํšŒ๋ณตํ•˜๋Š” ๊ณผ์ •์ด๋‹ค [1]. ์ด๋Š” ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ '์ˆ˜์ •'ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๊ณ  ๊ตฌ์กฐ์  ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค [2]. ์„ฑ๊ณต์ ์ธ ๋ฆฌํŒฉํ† ๋ง์„ ์œ„ํ•ด์„œ๋Š” ์ ์ง„์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹, ์—„๊ฒฉํ•œ ์•„ํ‚คํ…์ฒ˜ ์ ์šฉ, ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ๋’ท๋ฐ›์นจํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ ๊ตฌ์ถ•์ด ํ•„์ˆ˜์ ์ด๋‹ค [1, 3]. ## ๐Ÿ“– Core Content * **์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ „๋žต (Incremental Migration):** ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•œ ๋ฒˆ์— ์ „๋ฉด ์žฌ์ž‘์„ฑ(Rewrite)ํ•˜๋Š” ๊ฒƒ์€ ๋ฆฌ์Šคํฌ๊ฐ€ ๋งค์šฐ ํฌ๊ธฐ ๋•Œ๋ฌธ์—, "์žฌ์ž‘์„ฑ์ด ์•„๋‹Œ ๋ฆฌํŒฉํ† ๋ง" ์ „๋žต์ด ๊ถŒ์žฅ๋œ๋‹ค [1]. ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ Context API์—์„œ Zustand๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ, ์•Œ๋ฆผ๊ณผ ๊ฐ™์€ ๋‹จ์ˆœํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์Šคํ† ์–ด๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๊ฒฐ์ œ ํ๋ฆ„๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๋„๋ฉ”์ธ์œผ๋กœ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šคํ† ์–ด์”ฉ ์ ์ง„์ ์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค [1]. * **๊ธฐ๋Šฅ ๋ฐ ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋กœ์˜ ๊ฐœํŽธ:** ๋ ˆ๊ฑฐ์‹œ ์•ฑ์—์„œ ํ”ํžˆ ์“ฐ์ด๋Š” ํŒŒ์ผ ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ(components, hooks ๋“ฑ์„ ๋”ฐ๋กœ ๋ชจ์œผ๋Š” ๋ฐฉ์‹)๋Š” ์•ฑ์ด ์ปค์งˆ์ˆ˜๋ก ํƒ์ƒ‰๊ณผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ ๋‹ค [4, 5]. ๋”ฐ๋ผ์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ๋ณ„๋กœ ์ฝ”๋“œ๋ฅผ ๋ชจ์œผ๋Š” ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋‚˜, ๋‹จ๋ฐฉํ–ฅ ์˜์กด์„ฑ์„ ๊ฐ•์ œํ•˜๋Š” ์—„๊ฒฉํ•œ ๊ณ„์ธต ๋ชจ๋ธ์ธ Feature-Sliced Design(FSD)์œผ๋กœ ํด๋” ๊ตฌ์กฐ๋ฅผ ์žฌํŽธํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ ์ธ ๋ฆฌํŒฉํ† ๋ง ๋ชฉํ‘œ๊ฐ€ ๋œ๋‹ค [6-8]. * **์ปค์Šคํ…€ ํ›…์„ ํ†ตํ•œ ๋กœ์ง ์บก์Аํ™”:** ํ˜„๋Œ€ React ๋ฆฌํŒฉํ† ๋ง์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋Š” ์ปค์Šคํ…€ ํ›…์ด๋‹ค [9]. ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ํŽ˜์นญ์ด๋‚˜ ํผ ํ•ธ๋“ค๋ง ๋กœ์ง์„ ๊ฑฐ๋Œ€ํ•œ UI ์ปดํฌ๋„ŒํŠธ์—์„œ ์ถ”์ถœํ•˜์—ฌ `useFetch`, `useForm` ๋“ฑ์˜ ํ›…์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด, UI์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๊ฒฉ๋ฆฌ๋˜์–ด ๋” ๋น ๋ฅด๊ณ  ๋…๋ฆฝ์ ์ธ ์œ ๋‹› ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค [9, 10]. * **ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•œ ์•ˆ์ „๋ง ํ™•๋ณด:** ์ฝ”๋“œ๋ฅผ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ˆ˜์ •ํ•˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ(Unit Test, UI Test ๋“ฑ)๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ตœ์šฐ์„  ๋ฐฉ์–ด์„ ์ด๋‹ค [3, 11, 12]. ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ๊นจ์ง€์ง€ ์•Š์•˜๋Š”์ง€ ๊ฒ€์ฆํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ณผ์ • ์ž์ฒด๊ฐ€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ํ๋ฆ„์„ ๊นŠ์ด ์ดํ•ดํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ํ•™์Šต ๋„๊ตฌ๊ฐ€ ๋œ๋‹ค [13, 14]. * **๋ ˆ๊ฑฐ์‹œ ์•ˆํ‹ฐํŒจํ„ด ๋ฐ ์Šคํƒ ์ œ๊ฑฐ:** ํšจ์œจ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ Œ๋”๋ง์„ ์œ ๋ฐœํ•˜๋Š” ๋‹ค์ˆ˜์˜ `useEffect`๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด TanStack Query์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ๋„์ž…ํ•ด์•ผ ํ•œ๋‹ค [15]. ๋˜ํ•œ, ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํ›…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์ผ๊ด€์„ฑ ์—†๋Š” CSS ์ ์šฉ ๋ฐฉ์‹์„ ํ•˜๋‚˜๋กœ ํ†ต์ผํ•˜๋Š” ์ž‘์—…๋„ ์ˆ˜๋ฐ˜๋œ๋‹ค [15, 16]. ## โš–๏ธ Trade-offs & Caveats * **DRY์™€ KISS ์›์น™์˜ ์ถฉ๋Œ:** ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋ ค๋Š” DRY(Don't Repeat Yourself) ์›์น™์„ ๊ณผ๋„ํ•˜๊ฒŒ ์ ์šฉํ•  ๊ฒฝ์šฐ, ์ถ”์ƒํ™”๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•ด์ ธ ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” KISS(Keep It Simple, Stupid) ์›์น™์„ ์œ„๋ฐ˜ํ•˜๊ฒŒ ๋œ๋‹ค [17]. ๋”ฐ๋ผ์„œ ํŠน์ • ํŒจํ„ด์ด ์„ธ ๋ฒˆ ๋ฐ˜๋ณต๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์ถ”์ƒํ™”๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์กฐ๊ธฐ ์ตœ์ ํ™”๋กœ ์ธํ•œ ๋ถ€์ž‘์šฉ์„ ๋ง‰๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค [17]. * **์žฌ์ž‘์„ฑ(Rewrite) vs ๋ฆฌํŒฉํ† ๋ง(Refactoring)์˜ ๊ธฐ๋กœ:** ๋ฆฌํŒฉํ† ๋ง ๋Œ€์ƒ์ธ ์•ฑ์˜ ๊ทœ๋ชจ๊ฐ€ ๋น„๊ต์  ์ž‘๋‹ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ์ƒˆ๋กœ ์•ฑ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ์˜คํžˆ๋ ค ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค [11]. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€ํ˜• ์•ฑ์˜ ๊ฒฝ์šฐ ์ „์ฒด ์žฌ์ž‘์„ฑ์€ ์œ„ํ—˜์ด ์ปค์„œ ์ ์ง„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ ์ „ํ™˜ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ธฐ์ˆ ์ด๋‚˜ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ด ๊ณต์กดํ•ด์•ผ ํ•˜๋Š” ๊ณผ๋„๊ธฐ์  ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ๊ฐ๋‹นํ•ด์•ผ ํ•œ๋‹ค [1]. * **์ปดํŒŒ์ผ๋Ÿฌ ์ž๋™ํ™” ๋„์ž…์˜ ์žฅ๋ฒฝ:** React Compiler์™€ ๊ฐ™์ด ์„ฑ๋Šฅ ์ตœ์ ํ™”(๋ฉ”๋ชจ์ด์ œ์ด์…˜)๋ฅผ ์ž๋™ํ™”ํ•ด ์ฃผ๋Š” ๋„๊ตฌ๋ฅผ ๋„์ž…ํ•˜๋ฉด ์ˆ˜๋™ ์ตœ์ ํ™” ์ฝ”๋“œ๋ฅผ ์ง€์›Œ ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค [18]. ํ•˜์ง€๋งŒ ๊ธฐ์ˆ  ๋ถ€์ฑ„๊ฐ€ ๋งŽ์€ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ, ๊ธฐ์กด ์ฝ”๋“œ๊ฐ€ 'React์˜ ๊ทœ์น™(Rules of React)'์„ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์œ„๋ฐ˜ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๋„์ž… ์ „ ๋Œ€๋Œ€์ ์ธ ์‚ฌ์ „ ๋ฆฌํŒฉํ† ๋ง์ด ์„ ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ œ์•ฝ์ด ๋”ฐ๋ฅธ๋‹ค [19]. * **๊ณต์œ (Shared) ๋ชจ๋“ˆ์˜ ๋น„๋Œ€ํ™”:** ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜(์˜ˆ: FSD)๋กœ ๋ถ„๋ฆฌํ•  ๋•Œ, ๊ณตํ†ต์œผ๋กœ ์“ฐ์ด๋Š” ์ฝ”๋“œ๋ฅผ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ 'Shared' ๊ณ„์ธต์— ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ๊ณ„์ธต์ด ๋ณต์žกํ•œ ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ๊ฐ€ ๋˜๊ณ  ๋ณ€๊ฒฝ ์‹œ ์˜ํ–ฅ ๋ฒ”์œ„(Blast Radius)๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ปค์ง€๋Š” ์œ„ํ—˜์ด ์žˆ๋‹ค [20, 21]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜ ๋ฐ ๊ธฐ๋ฐ˜ ์›์น™] - [[Feature-Sliced Design|Feature-Sliced Design]] - ์—ฐ๊ฒฐ ์ด์œ : ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ์ŠคํŒŒ๊ฒŒํ‹ฐํ™”๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , ๋„๋ฉ”์ธ/๊ธฐ๋Šฅ ์ค‘์‹ฌ์˜ ๋‹จ๋ฐฉํ–ฅ ์˜์กด์„ฑ ๊ทœ์น™์„ ๋ถ€์—ฌํ•˜์—ฌ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฆฌํŒฉํ† ๋ง์˜ ๊ถ๊ทน์  ๋ชฉํ‘œ ๋ชจ๋ธ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [7, 22]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ธฐ๋Šฅ(Feature)๊ณผ ๊ณ„์ธต(Layer)์„ ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆ„๊ณ  ์บก์Аํ™”ํ•˜์—ฌ ์„œ๋กœ ๊ฐ„์˜ ์˜์กด์„ฑ ๊ฒฐํ•ฉ์„ ๋Š์–ด๋‚ด๋Š”์ง€์— ๋Œ€ํ•œ ์‹ค๋ฌด์  ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ [6, 23]. - [[SOLID Principles|SOLID Principles]] - ์—ฐ๊ฒฐ ์ด์œ : ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP) ๋“ฑ์„ ํ†ตํ•ด ๊ฑฐ๋Œ€ํ•œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ฐ€์ง€๋Š” ์—ฌ๋Ÿฌ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜๊ณ , ํ•จ์ˆ˜๋‚˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ž˜๊ฒŒ ์ชผ๊ฐœ๋Š” ๋ฆฌํŒฉํ† ๋ง์˜ ํ•ต์‹ฌ ์ด๋ก ์  ๋ฐฐ๊ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [24, 25]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ธฐ๋Šฅ์  ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค(Props)๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ณ , ํ™•์žฅ์— ์—ด๋ ค์žˆ์œผ๋ฉด์„œ ์ˆ˜์ •์—๋Š” ๋‹ซํžŒ ์ฝ”๋“œ ์ž‘์„ฑ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• [25, 26]. #### [๊ตฌํ˜„ ๋ฐ ํ™œ์šฉ ๋„๊ตฌ] - Unit Testing - ์—ฐ๊ฒฐ ์ด์œ : ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ๊ธฐ๋Šฅ์ด ๋ง๊ฐ€์ง€์ง€ ์•Š์•˜์Œ์„ ๋ณด์žฅํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ด์ž ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์•ˆ์ „๋ง ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [3, 12]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋” ์ž‘๊ณ  ๋…ผ๋ฆฌ์ ์ธ ๋ธ”๋ก ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด(Triangulation) ์˜์กด์„ฑ ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•๋ก  [9, 12]. - Custom Hooks - ์—ฐ๊ฒฐ ์ด์œ : ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์— ๋ณต์žกํ•˜๊ฒŒ ์–ฝํžŒ ์ƒํƒœ์™€ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ ๋กœ์ง์„ ์™ธ๋ถ€๋กœ ์ถ”์ถœํ•˜๋Š” ๋ฆฌํŒฉํ† ๋ง์˜ ์ฃผ๋œ ๋‹จ์œ„์ด์ž ๋„๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [9]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: UI ๋ Œ๋”๋ง ์ฑ…์ž„๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ฑ…์ž„์„ ์–ด๋–ป๊ฒŒ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ฒฉ๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š”์ง€์˜ ์›๋ฆฌ [9, 10]. ### Deeper Research Questions - ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์—์„œ Feature-Sliced Design(FSD) ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋„์ž…ํ•  ๋•Œ, ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ(Feature)์—์„œ ๋™์‹œ์— ์š”๊ตฌ๋˜๋Š” ๊ต์ฐจ ๊ด€์‹ฌ์‚ฌ(Cross-cutting concerns) ๋กœ์ง์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์ „๋ฌดํ•œ ๊ฑฐ๋Œ€ํ•œ ๋ ˆ๊ฑฐ์‹œ React ์•ฑ์„ ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ, ์–ด๋–ค ๋ถ€๋ถ„(์˜ˆ: ๊ณตํ†ต ์œ ํ‹ธ, UI ์ปดํฌ๋„ŒํŠธ, ์ „์—ญ ์ƒํƒœ ๋“ฑ)๋ถ€ํ„ฐ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘๊ณ  ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ํ™•๋ณดํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Context API ๊ธฐ๋ฐ˜ ์ „์—ญ ์ƒํƒœ๋ฅผ Zustand ๋“ฑ ํ˜„๋Œ€์  ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ ์ ์ง„์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ƒํƒœ ๋™๊ธฐํ™” ๋ฌธ์ œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? - ๊ธฐ์กด์˜ ์ˆ˜๋™ ๋ฉ”๋ชจ์ด์ œ์ด์…˜(`useMemo`, `useCallback`) ์ฝ”๋“œ๊ฐ€ ๋งŽ์€ ๋ ˆ๊ฑฐ์‹œ ์•ฑ์— React Compiler๋ฅผ ๋„์ž…ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ ๋‚ด์˜ 'Rules of React' ์œ„๋ฐ˜ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ํšจ๊ณผ์ ์ธ ์ž๋™ํ™” ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌด์—‡์ธ๊ฐ€? - ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ์ปค์Šคํ…€ ํ›… ๊ตฌ์กฐ๋กœ ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leaks) ํŒจํ„ด์„ ๊ฐ์ง€ํ•˜๊ณ  ๋ฐฉ์ง€ํ•˜๋Š” ๋””๋ฒ„๊น… ์ „๋žต๋ก ์€ ๋ฌด์—‡์ธ๊ฐ€? ### Practical Application Contexts - **Implementation:** ๊ฑฐ๋Œ€ํ•œ ํผ ์ฒ˜๋ฆฌ๋‚˜ API ํŽ˜์นญ ๋กœ์ง์ด ๋ทฐ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ 300์ค„์ด ๋„˜์–ด๊ฐ€๋Š” ๊ธฐ์กด ์ปดํฌ๋„ŒํŠธ๋ฅผ, ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)์— ๋”ฐ๋ผ ์ˆœ์ˆ˜ ๋ทฐ ์ปดํฌ๋„ŒํŠธ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด์€ ์ปค์Šคํ…€ ํ›…์œผ๋กœ ์ถ”์ถœํ•˜์—ฌ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•œ๋‹ค [9, 25]. - **System Design:** ํด๋” ๊ตฌ์กฐ๋ฅผ `components/`, `hooks/` ๊ฐ™์€ ํŒŒ์ผ ์œ ํ˜• ๊ตฌ๋ถ„์ด ์•„๋‹Œ, ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ(์˜ˆ: ์ธ์ฆ, ๊ฒฐ์ œ)์„ ์ค‘์‹ฌ์œผ๋กœ ๋ชจ์€ ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ํ˜น์€ FSD ๊ธฐ๋ฐ˜ ํด๋” ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ์ „๋ฉด ์žฌ์„ค๊ณ„ํ•œ๋‹ค [8, 27]. - **Operation / Maintenance:** ESLint์™€ Husky ๋“ฑ์˜ ๋„๊ตฌ๋ฅผ ํŒŒ์ดํ”„๋ผ์ธ์— ๊ตฌ์ถ•ํ•˜์—ฌ ๋ฆฌํŒฉํ† ๋ง๋œ ์ฝ”๋“œ๊ฐ€ ์ƒ์œ„ ๊ณ„์ธต์„ ์ž˜๋ชป ์ฐธ์กฐํ•˜๋Š” ์—ญ์˜์กด์„ฑ(Reverse dependency)์„ ๋ฐœ์ƒ์‹œํ‚ค๊ฑฐ๋‚˜ ์ฝ”๋“œ ์ปจ๋ฒค์…˜์ด ์–ด๊ธ‹๋‚˜์ง€ ์•Š๋„๋ก ์—„๊ฒฉํžˆ ํ†ต์ œํ•œ๋‹ค [28]. - **Learning Path:** ๋ฆฌํŒฉํ† ๋งํ•ด์•ผ ํ•  ์ฝ”๋“œ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์ „, ๋จผ์ € ์ž‘์€ ๋นˆ ํ”„๋กœ์ ํŠธ๋‚˜ 'ํ† ์ด ์•ฑ'์„ ๋งŒ๋“ค์–ด ๋ฆฌํŒฉํ† ๋ง์— ๋„์ž…ํ•  ์ƒˆ๋กœ์šด ๊ธฐ์ˆ (React์˜ ์ตœ์‹  ๊ธฐ๋Šฅ ๋“ฑ)์˜ ๊ธฐ์ดˆ๋ฅผ ์‹ค์Šตํ•˜์—ฌ ๊ฐœ๋…์„ ํ™•๋ฆฝํ•œ๋‹ค [29]. - **My Project Relevance:** ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž‘์„ฑํ•œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์ธ๊ณ„๋ฐ›์•„ ๋…ผ๋ฌธ ํ”„๋กœ์ ํŠธ์šฉ์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋จผ์ € ๊ธฐ์กด ๋กœ์ง์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•œ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ ํ›„, ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ํ˜ผ์šฉ๋œ CSS ์Šคํƒ€์ผ ์ •์ฑ…์„ ํ•˜๋‚˜๋กœ ํ†ต์ผ์‹œํ‚ค๊ณ  ๋ถˆํ•„์š”ํ•œ ์ „์—ญ ์ƒํƒœ๋ฅผ ์ง€์—ญ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•˜๋Š” ์‹ค๋ฌด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค [14, 16, 30, 31]. ### Adjacent Topics - [[Web Performance Optimization|Web Performance Optimization]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ฆฌํŒฉํ† ๋ง ์ž‘์—…๊ณผ ๋ณ‘ํ–‰ํ•˜์—ฌ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ๊ฐ์†Œ(์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…), ๋ฆฌ๋ Œ๋”๋ง ์ตœ์ ํ™”, ๋ถˆํ•„์š”ํ•œ ๋ Œ๋” ๋ธ”๋กœํ‚น ์ œ๊ฑฐ ๋“ฑ์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋Ÿฐํƒ€์ž„ ๋ฐ ๋กœ๋”ฉ ์†๋„๋ฅผ ํ–ฅ์ƒํ•˜๋Š” ์ „๋žต์  ๊ธฐ๋ฒ•์„ ํƒ๊ตฌํ•œ๋‹ค. - State Management Fragmentation - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ ˆ๊ฑฐ์‹œ ์•ฑ์˜ ๊ฑฐ๋Œ€ํ•œ ๋‹จ์ผ ์ „์—ญ ์ƒํƒœ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋กœ์ปฌ ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ, ์ „์—ญ UI ์ƒํƒœ, ์„œ๋ฒ„ ์บ์‹œ ์ƒํƒœ, URL ์ƒํƒœ ๋“ฑ์œผ๋กœ ํŒŒํŽธํ™” ๋ฐ ์ „๋ฌธํ™”ํ•˜์—ฌ ๊ฐ๊ฐ์— ๋งž๋Š” ๋„๊ตฌ(Zustand, React Query ๋“ฑ)๋กœ ์ด๊ด€ํ•˜๋Š” ์„ค๊ณ„ ๋ฐฉ๋ฒ•๋ก ์„ ์กฐ์‚ฌํ•œ๋‹ค. --- *Last updated: 2026-04-30*