# [[Next.js Migration]] ## ๐Ÿ“Œ Brief Summary Next.js Migration์€ ๊ธฐ์กด ์›น์‚ฌ์ดํŠธ(์˜ˆ: WordPress ๋˜๋Š” Client-Side Rendering ๊ธฐ๋ฐ˜ React ์•ฑ)๋ฅผ Next.js ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [1, 2]. ์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR), ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ(SSG), ์ ์ง„์  ์ •์  ์žฌ์ƒ์„ฑ(ISR) ๋“ฑ์˜ ๋ Œ๋”๋ง ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜์—ฌ Core Web Vitals ์ ์ˆ˜๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO) ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐ ๋ชฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค [2, 3]. ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ์ „์ž์ƒ๊ฑฐ๋ž˜ ์‚ฌ์ดํŠธ์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ Œ๋”๋ง ์†๋„๋ฅผ ๋†’์ด๊ณ  ์œ ๊ธฐ์  ํŠธ๋ž˜ํ”ฝ๊ณผ ์ˆ˜์ต์„ ํš๊ธฐ์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ํ•ต์‹ฌ ํ”„๋ก ํŠธ์—”๋“œ ์•„ํ‚คํ…์ฒ˜ ์ „๋žต์ž…๋‹ˆ๋‹ค [3]. ## ๐Ÿ“– Core Content * **๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์˜ ์ฃผ์š” ๋ชฉ์  ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ํšจ๊ณผ:** ๊ธฐ์กด์˜ CSR(Client-Side Rendering) ๊ธฐ๋ฐ˜ ์•ฑ(์˜ˆ: Create React App)์—์„œ Next.js๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ฉด ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)์™€ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค [2]. ์˜ˆ๋ฅผ ๋“ค์–ด, 10,000๊ฐœ์˜ ์ œํ’ˆ์„ ๋ณด์œ ํ•œ ํ•œ ํŒจ์…˜ ์ „์ž์ƒ๊ฑฐ๋ž˜ ์‚ฌ์ดํŠธ์˜ ์‚ฌ๋ก€๋ฅผ ๋ณด๋ฉด, ๊ธฐ์กด CRA ํ™˜๊ฒฝ์—์„œ Next.js(ISR)๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•œ ํ›„ ํ‰๊ท  LCP(Largest Contentful Paint)๊ฐ€ 4.2์ดˆ(Poor)์—์„œ 1.8์ดˆ(Good)๋กœ ๋Œ€ํญ ๋‹จ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค [2, 3]. ์„ฑ๋Šฅ ๊ฐœ์„ ์— ๋”ฐ๋ผ ์ œํ’ˆ ์ธ๋ฑ์‹ฑ ๋น„์œจ์ด 40%์—์„œ 95%๋กœ ์ฆ๊ฐ€ํ–ˆ์œผ๋ฉฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์œ ๊ธฐ์  ํŠธ๋ž˜ํ”ฝ์ด 70% ์ƒ์Šนํ•˜๊ณ  ์›” ์ˆ˜์ต์ด 15๋งŒ ๋‹ฌ๋Ÿฌ ์ถ”๊ฐ€๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๋“ฑ ์‹ค์งˆ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ์„ฑ๊ณผ๋ฅผ ์ฐฝ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค [3]. * **๋งž์ถคํ˜• ๋ Œ๋”๋ง ์ „๋žต(SSR, SSG, ISR) ๋„์ž…:** Next.js๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ฉด ํŽ˜์ด์ง€์˜ ํŠน์„ฑ์— ๋งž์ถ˜ ์ตœ์ ํ™”๋œ ๋ Œ๋”๋ง ๋ฐฉ์‹์˜ ๋„์ž…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ ํŽ˜์ด์ง€์—๋Š” ๋นŒ๋“œ ์‹œ์ ์— HTML์„ ์ƒ์„ฑํ•˜๋Š” ์ •์  ์ƒ์„ฑ(Static Generation)์„ ์ ์šฉํ•˜๊ณ , ์ œํ’ˆ ํŽ˜์ด์ง€์—๋Š” ์ง€์ •๋œ ์‹œ๊ฐ„(์˜ˆ: 3600์ดˆ ์ฃผ๊ธฐ)๋งˆ๋‹ค ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์บ์‹œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ISR์„ ์ ์šฉํ•˜์—ฌ TTFB(Time to First Byte)๋ฅผ 50ms ์ˆ˜์ค€์œผ๋กœ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. ๋˜ํ•œ `getServerSideProps`๋ฅผ ํ™œ์šฉํ•œ SSR์„ ์ ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ธก์˜ ๋ Œ๋”๋ง ์ง€์—ฐ์„ ์ œ๊ฑฐํ•˜๊ณ , ๊ฒ€์ƒ‰ ์—”์ง„์ด ์ฆ‰์‹œ ์ฝ˜ํ…์ธ ๋ฅผ ํฌ๋กค๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค [4, 5]. * **ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ์ˆ  ํ†ตํ•ฉ:** ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ณผ์ •์—์„œ Next.js ๋‚ด์žฅ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํ”„๋ก ํŠธ์—”๋“œ ๋ณ‘๋ชฉ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ(Product Schema) ์ถ”๊ฐ€์™€ ๋”๋ถˆ์–ด, Next.js Image ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WebP ํฌ๋งท์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค [3]. ๋˜ํ•œ ๋ผ์šฐํŠธ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ๋ถ„ํ• (Code Splitting)์„ ํ†ตํ•ด ๋ฉ”์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒ ๊ฐ์†Œ(์˜ˆ: 1.8MB์—์„œ 320KB๋กœ ๊ฐ์†Œ)์‹œ์ผœ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค [3]. ์ถ”๊ฐ€๋กœ React 18์˜ ์ ์ง„์  ํ•˜์ด๋“œ๋ ˆ์ด์…˜(Progressive Hydration)์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฌด๊ฑฐ์šด ์ปดํฌ๋„ŒํŠธ์˜ ์ดˆ๊ธฐ ๋กœ๋“œ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 7]. * **์ „๋ฌธ์ ์ธ ํŠœ๋‹์˜ ํ•„์š”์„ฑ:** ์›น์‚ฌ์ดํŠธ ์ „์ฒด๋ฅผ ์žฌ๊ตฌ์ถ•ํ•˜์ง€ ์•Š๊ณ  Core Web Vitals๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋‚˜, WordPress์—์„œ Next.js๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ฑฐ๋‚˜ Next.js ํ”„๋ ˆ์ž„์›Œํฌ ์ž์ฒด์˜ ์„ธ๋ฐ€ํ•œ ์„ฑ๋Šฅ ํŠœ๋‹์„ ์ง„ํ–‰ํ•˜๋Š” ์ž‘์—…์€ ๊ณ ๋„์˜ ์ „๋ฌธ์ ์ธ ๊ฐœ๋ฐœ ์ง€์‹๊ณผ ๊ธฐ์ˆ ์  ์ง€์›์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Core Web Vitals]], [[Server-Side Rendering (SSR)]], [[Incremental Static Regeneration (ISR)]], [[Client-Side Rendering (CSR)]] - **Projects/Contexts:** [[E-commerce Migration Case Study]], [[WordPress to Next.js Migration]] - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด, ๊ธฐ์กด์˜ ์ˆœ์ˆ˜ CSR ๋ฐฉ์‹(Create React App ๋“ฑ)์€ ๋นˆ HTML ๊ณจ๊ฒฉ๋งŒ์„ ๋จผ์ € ์ œ๊ณตํ•˜์—ฌ ์ดˆ๊ธฐ ๋กœ๋”ฉ๊ณผ ๊ฒ€์ƒ‰ ์—”์ง„ ์ธ๋ฑ์‹ฑ์— ์น˜๋ช…์ ์ธ ์ง€์—ฐ์„ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์žฅ๊ธฐ์ ์ธ ํŠธ๋ž˜ํ”ฝ ํ–ฅ์ƒ ๋ฐ SEO ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด์„  SSR ๋ฐ SSG๋ฅผ ๊ธฐ๋ณธ ์ง€์›ํ•˜๋Š” Next.js๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜(์—…๊ทธ๋ ˆ์ด๋“œ)์ด ๊ฐ•๋ ฅํ•˜๊ฒŒ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [2]. --- *Last updated: 2026-04-26*