๐Ÿ–‹๏ธ Next.js ๋ Œ๋”๋ง ๋ฐฉ์‹

Yeonnยท2025๋…„ 3์›” 4์ผ
0

Next.js

๋ชฉ๋ก ๋ณด๊ธฐ
1/1
post-thumbnail

โ“ย ๋ Œ๋”๋ง ๋ฐฉ์‹

โœ”๏ธย CSR

์ถœ์ฒ˜: https://medium.com/walmartglobaltech/the-benefits-of-server-side-rendering-over-client-side-rendering-5d07ff2cefe8

๐ŸŒฑ CSR( Client-Side Rendering )
๋ชจ๋“  ๋ Œ๋”๋ง์ด ๋ธŒ๋ผ์šฐ์ €( ํด๋ผ์ด์–ธํŠธ )์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐฉ์‹

  • ์„œ๋ฒ„๋Š” ์ตœ์†Œํ•œ์˜ HTML๊ณผ ํ•จ๊ป˜ JS ํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌ
  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ JS ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ / ์‹คํ–‰ํ•˜์—ฌ ์ฝ˜ํ…์ธ  ํ™”๋ฉด์— ๋ Œ๋”๋ง
  • ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์— ๋”ฐ๋ผ ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋ฉด API ํ˜ธ์ถœ๋กœ ์„œ๋ฒ„์™€ ํ†ต์‹ 
    • React, Vue.js ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ SPA ํ”„๋ ˆ์ž„์›Œํฌ
ProsCons
๋น ๋ฅธ ์ดˆ๊ธฐ ์„œ๋ฒ„ ์‘๋‹ต์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„์˜ ๋ฌธ์ œ
์œ ์—ฐ์„ฑ: ๋™์  ๋ฐ์ดํ„ฐ ์ฆ‰๊ฐ ๊ฐฑ์‹  ๊ฐ€๋ŠฅCDN ์บ์‹ฑ ๋ถˆ๊ฐ€๋Šฅ
๊ฐœ๋ฐœ ๊ฐ„์†Œํ™”( SPA ๋ฐฉ์‹ )SEO ์ œํ•œ( ์ดˆ๊ธฐ HTML์ด ๋น„์–ด์žˆ์Œ )
JavaScript ํ™œ์„ฑํ™” ํ•„์ˆ˜
๋ณด์•ˆ โฌ‡๏ธ

โœ”๏ธย SSR

์ถœ์ฒ˜: https://medium.com/walmartglobaltech/the-benefits-of-server-side-rendering-over-client-side-rendering-5d07ff2cefe8

๐ŸŒฑ SSR( Server Side Rendering )
์„œ๋ฒ„์—์„œ ๋ชจ๋“  HTML ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•œ ๋’ค, ์™„์„ฑ๋œ HTML ํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „๋‹ฌ

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญ
  • ์„œ๋ฒ„์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜์—ฌ ์™„์ „ํ•œ HTML ๋ฐ˜ํ™˜
  • ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฐ›์€ HTML์„ ๋ฐ”๋กœ ๋ Œ๋”๋ง
    • Next.js, Nuxt.js ( React์™€ Vue.js์˜ SSR ์ง€์› ํ”„๋ ˆ์ž„์›Œํฌ )
ProsCons
SEO ์นœํ™”์ ์„œ๋ฒ„ ๋ถ€ํ•˜
( ์ดˆ๊ธฐ HTML ํฌํ•จ โ†’ ๊ฒ€์ƒ‰์—”์ง„ ์‰ฝ๊ฒŒ ์ธ๋ฑ์‹ฑ )ํŽ˜์ด์ง€ ์ด๋™ ์†๋„ ๋А๋ฆผ(ํŽ˜์ด์ง€ ์ „ํ™˜ ์‹œ ๋งค๋ฒˆ ๋กœ๋“œ)
๋น ๋ฅธ ์ฒซ ํ™”๋ฉด ๋ Œ๋”๋ง
JavaScript ํ•„์š” X
๋ณด์•ˆ โฌ†๏ธ

โœ”๏ธย SSG

Next.js ์˜ ๊ธฐ๋ณธ ๋™์ž‘ ๋ฐฉ์‹

๐ŸŒฑ SSG( Static Site Generation )

  • ๋นŒ๋“œ ์‹œ์ ์— HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์ •์  ํŒŒ์ผ ์ œ๊ณต
  • ๋ชจ๋“  ํŽ˜์ด์ง€๋Š” ์‚ฌ์ „์— ๋ Œ๋”๋ง๋˜์–ด CDN( Content Delivery Network )๋ฅผ ํ†ตํ•ด ์ œ๊ณต
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•  ๋•Œ HTML ํŒŒ์ผ ์ƒ์„ฑ
  • ์„œ๋ฒ„๋Š” ์‚ฌ์ „ ๋ Œ๋”๋ง๋œ HTML์„ ์š”์ฒญ์— ๋”ฐ๋ผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜
    • Next.js, Gatsby.js, Hugo
ProsCons
๋น ๋ฅธ ์†๋„( ์ •์  HTML ํŒŒ์ผ CDN์—์„œ ์ œ๊ณต )๋™์  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์–ด๋ ค์›€
SEO ์นœํ™”์ ( ์ดˆ๊ธฐ HTML ํฌํ•จ โ†’ ๊ฒ€์ƒ‰์—”์ง„ ์‰ฝ๊ฒŒ ์ธ๋ฑ์‹ฑ )๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹œ ์žฌ๋นŒ๋“œ
์„œ๋ฒ„ ๋ถ€๋‹ด ์ ์Œ๋นŒ๋“œ ์‹œ๊ฐ„ ์ฆ๊ฐ€
CDN ์บ์‹ฑ ๊ฐ€๋Šฅ
JavaScript ํ•„์š” X
๋ณด์•ˆ โฌ†๏ธ

โœ”๏ธย ISR

๐ŸŒฑ ISR ( Incremental Static Regeneration )

  • SSG ํ™•์žฅ ๋ฐฉ์‹ โ†’ ๋นŒ๋“œ ์ดํ›„์—๋„ ์ •์  ํŽ˜์ด์ง€ ๊ฐฑ์‹  ๊ฐ€๋Šฅ
  • ํŠน์ • ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋งˆ๋‹ค ํŽ˜์ด์ง€๋ฅผ ์ •์  ํŒŒ์ผ๋กœ ๋‹ค์‹œ ์ƒ์„ฑ
  • ์ดˆ๊ธฐ ๋นŒ๋“œ ์‹œ HTML ํŒŒ์ผ ์ƒ์„ฑ
  • ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€ ์š”์ฒญ ์‹œ ์„ค์ •๋œ ์ฃผ๊ธฐ์— ๋”ฐ๋ผ ์ •์  ํŽ˜์ด์ง€ ๊ฐฑ์‹  ex) revalidate
    • Next.js( ISR ์ง€์› )
ProsCons
๋™์  ๋ฐ์ดํ„ฐ ์ง€์›๋ณต์žก์„ฑ: SSG ๋ณด๋‹ค ์„ค์ • ๋ณต์žกโ€ฆ
SEO ์นœํ™”์ ( ์ดˆ๊ธฐ HTML ํฌํ•จ โ†’ ๊ฒ€์ƒ‰์—”์ง„ ์‰ฝ๊ฒŒ ์ธ๋ฑ์‹ฑ )์ตœ์‹  ๋ฐ์ดํ„ฐ ๋ฌธ์ œ
CDN ์บ์‹ฑ ๊ฐ€๋Šฅ( ๊ฐฑ์‹  ์ฃผ๊ธฐ ๋™์•ˆ ์ตœ์‹  ๋ฐ์ดํ„ฐ ๋ฐ˜์˜ ๋ฌธ์ œ )
๋น ๋ฅธ ์ดˆ๊ธฐ ๋กœ๋“œ
JavaScript ํ•„์š” X

โœ”๏ธ ๋น„๊ต ํ‘œ

๋ฐฉ์‹๋ Œ๋”๋ง ํƒ€์ด๋ฐSEO์ฒซ ํ™”๋ฉด ์†๋„๋™์  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์ ํ•ฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€
CSRํด๋ผ์ด์–ธํŠธ์—์„œ ์‹คํ–‰๋‚ฎ์Œ๋А๋ฆผ๋งค์šฐ ์šฐ์ˆ˜SPA, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์ค‘์‹ฌ
SSR์š”์ฒญ ์‹œ ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋†’์Œ๋น ๋ฆ„์šฐ์ˆ˜๋™์  ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์˜ SEO
SSG๋นŒ๋“œ ์‹œ ์‚ฌ์ „ ๋ Œ๋”๋†’์Œ๋งค์šฐ ๋น ๋ฆ„์ œํ•œ์ ๋ธ”๋กœ๊ทธ, ๋งˆ์ผ€ํŒ… ํŽ˜์ด์ง€
ISR๋นŒ๋“œ ์‹œ + ๋™์  ๊ฐฑ์‹ ๋†’์Œ๋งค์šฐ ๋น ๋ฆ„์šฐ์ˆ˜๋ธ”๋กœ๊ทธ, ๋‰ด์Šค ์‚ฌ์ดํŠธ

โœ”๏ธย Hybrid Rendering

๐ŸŒฑ Next.js : Hybrid Web App

  • ์„ฑ๋Šฅ ์ข‹์€ ๊ฐ•๋ ฅํ•œ Web App์„ ์œ„ํ•ด ๋‘๊ฐœ ์ด์ƒ์˜ ๋ Œ๋”๋ง ๋ฐฉ๋ฒ• ์‚ฌ์šฉ
  • ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํŽ˜์ด์ง€ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋ Œ๋”๋ง ๋ฐฉ์‹์„ ์ฑ„ํƒํ•ด ๋งŒ๋“ค๊ฑฐ๋‚˜
  • ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€ ๋‚ด์—์„œ๋„ ํ•˜์ด๋ธŒ๋ฆฌ๋”ฉ์ด ๊ฐ€๋Šฅ
    • home: ISR / about: SSG / profile : CSR/SSR - hybrid

๐Ÿ“ย Hydration

  • ์ˆ˜ํ™”์‹œํ‚ค๋‹ค: ๋ฌผ๋กœ ๊ฐ€๋“ ์ฑ„์šฐ๋‹ค, ๋ฌผ๊ณผ ์„ž๋‹ค โ†’ ๐Ÿ’ง? React
    • ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‘๋‹ตํ•ด์ฃผ๋Š” HTML์— React๋กœ ์ฑ„์šด๋‹ค
    • ์ •์ ์ธ HTML์„ ๋ฐ›์œผ๋ฉด JS๊ฐ€ ์—ฐ๊ฒฐ ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๋ฒคํŠธ ๋ฐ ์ธํ„ฐ๋ ‰์…˜ ๋™์ž‘ X
    • ์ดํ›„ React ๋ฐ JS๋ฅผ ์‘๋‹ต๋ฐ›์•„ ๋กœ๋”ฉ์ด ๋˜๋ฉด ์ •์ ์ธ HTML์— React๋ฅผ ์ฑ„์›€
      		

๋น ๋ฅธ ์ˆœ์„œ๋ถ€ํ„ฐ ๋‚˜์—ดํ•œ๋‹ค๋ฉด ??

  • SSG > ISR > SSR > CSR
    • SSG: ๋นŒ๋“œ ์‹œ์ ์— ๋ชจ๋“  HTML ์ƒ์„ฑ, ์š”์ฒญ ์‹œ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜, CDN โ†’ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ์ตœ์†Œํ™”
    • ISR: ์ดˆ๊ธฐ ์š”์ฒญ ์‹œ ์ •์  ํŒŒ์ผ ์ œ๊ณต, ๊ฐฑ์‹ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์žฌ์ƒ์„ฑ
      โ†’ ๋Œ€๋ถ€๋ถ„์˜ ์š”์ฒญ: ์บ์‹ฑ๋œ ์ •์  ํŒŒ์ผ ๋ฐ˜ํ™˜
    • SSR: ์š”์ฒญ ์‹œ๋งˆ๋‹ค ์„œ๋ฒ„์—์„œ HTML ๋™์  ์ƒ์„ฑ
    • CSR: ์ดˆ๊ธฐ ์š”์ฒญ ์‹œ ์„œ๋ฒ„์—์„œ ์ตœ์†Œํ•œ์˜ HTML๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ „๋‹ฌ
      โ†’ ๋ธŒ๋ผ์šฐ์ €์—์„œ JS ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ / ์‹คํ–‰ํ•˜์—ฌ ์ฝ˜ํ…์ธ  ๋ Œ๋”๋ง: ์ฒซ ํ™”๋ฉด ๋กœ๋”ฉ์ด ๊ฐ€์žฅ ๋А๋ฆผ
      • ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ชจ๋“  ์ž‘์—… ์ฒ˜๋ฆฌ: ์ดˆ๊ธฐ ๋กœ๋“œ๊ฐ€ ๋А๋ฆฌ์ง€๋งŒ ์ดํ›„ ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์—๋Š” ๋น ๋ฅธ ๋ฐ˜์‘์„ฑ

โ“ย ์ฐจ์ด ์ด์œ : ์‚ฌ์ „ ๋ Œ๋”๋ง ์—ฌ๋ถ€ / ๋ธŒ๋ผ์šฐ์ € ์˜์กด๋„ / ์„œ๋ฒ„ ์ž‘์—…๋Ÿ‰

0๊ฐœ์˜ ๋Œ“๊ธ€