[Next.js] CSR๊ณผ SSR

Janeยท2023๋…„ 8์›” 23์ผ
3

Next.js

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

TL;DR: ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œ๋กœ ๋ณด๊ธฐ

ํŠน์ง•SSRCSR
์žฅ์ โ— ์ •์ ์ธ ์‚ฌ์ดํŠธ์—์„œ ์ด์ƒ์ ์ด๋‹ค.
โ— ์ฒซ ํŽ˜์ด์ง€ ์ ‘๊ทผ์ด ๋น ๋ฅด๋‹ค.
โ— JS์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.
โ— ํฌ๋กค๋ง์— ์šฉ์ดํ•˜์—ฌ SEO์— ์ ํ•ฉํ•˜๋‹ค.
โ— ๋™์ ์ธ ์›น ์•ฑ์—์„œ ์ด์ƒ์ ์ด๋‹ค.
โ— ์ฒซ ๋กœ๋“œ ์ดํ›„์— ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์ด ๋น ๋ฅด๋‹ค.
โ— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ˜์‘์„ฑ์ด ๋น ๋ฅด๊ฒŒ ๊ฐœ์„ ๋˜์–ด ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๋ถ€๋“œ๋Ÿฝ๋‹ค.
โ— CSR ๊ตฌํ˜„์— ์ตœ์ ํ™”๋œ JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋‹ค์–‘ํ•˜๋‹ค.
๋‹จ์ โ— ์„œ๋ฒ„ ์š”์ฒญ์ด ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค.
โ— ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋”ฉํ•ด์•ผ ํ•ด์„œ CSR์— ๋น„ํ•ด ํŽ˜์ด์ง€ ๋กœ๋“œ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
โ— ์‚ฌ์šฉ์ž์™€ ์‚ฌ์ดํŠธ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๋ถ€๋“œ๋Ÿฝ์ง€ ๋ชปํ•˜๋‹ค.
โ— ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ณด์•ˆ ์ทจ์•ฝ์ ์— ๋…ธ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.
โ— ๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋Ÿฌ๊ฐ€ ํŽ˜์ด์ง€ ๋‚ด์šฉ์„ ์ธ์‹ํ•˜๊ธฐ ์–ด๋ ค์›Œ SEO์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
โ— ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜์—ฌ API ์‘๋‹ต ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
โ— ์ฒซ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
โ— ์ถ”๊ฐ€์ ์ธ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค.
โ— ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋ชจ๋Ÿ‰์ด ํฌ๋‹ค.
๐Ÿ“ข ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ด…์‹œ๋‹ค!

MPA์™€ SPA

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

๐Ÿ‘ฅ MPA

  • ๊ณ ์ „์ ์ธ ์›น ํŽ˜์ด์ง€ ๊ตฌ์„ฑ ๋ฐฉ์‹์œผ๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ ์›น์„ ์˜๋ฏธํ•œ๋‹ค.
  • ํŽ˜์ด์ง€ ๋ณ„๋กœ ํ•ด๋‹น ํŽ˜์ด์ง€์— ๋งž๋Š” HTML, CSS, JS ํŒŒ์ผ์„ ๋ฐ›์•„ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•œ๋‹ค.
  • ํ•˜์ดํผ๋งํฌ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ณ , ํ™”๋ฉด์ด ๊นœ๋นก์ด๋ฉด์„œ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€์— ๋งž๋Š” ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ์ด๋ฏธ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์ •์  ํŽ˜์ด์ง€๋“ค์„ ์„œ๋ฒ„์—์„œ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฐ€ ์š”์ฒญ์— ๋”ฐ๋ผ ํ•ด๋‹น ์š”์ฒญ์— ์ƒ์‘ํ•˜๋Š” ์ •์  ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ๋ Œ๋”๋ง์ด ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ ์™„๋ฃŒ๋˜์–ด ์ตœ์ข… ์™„์„ฑ๋œ ๋ฌธ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ๋Š” ํ˜•ํƒœ!
  • ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ํŽ˜์ด์ง€์˜ HTML ๋ฌธ์„œ๋ฅผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐ›์•„์™€์•ผ ํ•œ๋‹ค.
    • ์ด๋•Œ์˜ HTML ๋ฌธ์„œ๋Š” ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ์ปจํ…์ธ ๋“ค์ด ์ด๋ฏธ ํฌํ•จ๋œ, ์„œ๋ฒ„๊ฐ€ ๋ Œ๋”๋งํ•œ ํŒŒ์ผ์ด๋‹ค.
    • MPA๋Š” SSR ๋ Œ๋”๋ง ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ‘ค SPA

  • ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • ํ˜„์žฌ์˜ ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ์ž‘์„ฑํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž์™€ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • ์ตœ์ดˆ ํ•œ ๋ฒˆ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋กœ๋”ฉํ•œ ๋’ค ๋ฐ์ดํ„ฐ๋งŒ ๋ณ€๊ฒฝํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • ์–ด๋–ค ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๋”๋ผ๋„ ๋™์ผํ•œ HTML, CSS, JS ํŒŒ์ผ๋กœ ์ ‘์†ํ•œ ํŽ˜์ด์ง€์— ๋งž๊ฒŒ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•œ๋‹ค.
  • ์—ฐ์†๋˜๋Š” ํŽ˜์ด์ง€ ๊ฐ„์˜ UX๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ณ , ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋„๋ก ๋•๋Š”๋‹ค.

SPA์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

  • ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ˆ˜์š”๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๋ชจ๋ฐ”์ผ ์›น์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
  • PC์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค์˜ ์›น ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด SPA๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๐Ÿง SPA๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€!

  • ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ๋‹จ์ˆœํžˆ ํŽ˜์ด์ง€ ๋‚ด์šฉ์ด ๋ฐ”๋€Œ๊ณ , ๋ธŒ๋ผ์šฐ์ € ์ƒ์—์„œ ๋ณด์ด๋Š” URL์ด ๋‹ค๋ฅด๋‹ค๋ฉด ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ๋ณด์ผ ๊ฒƒ์ด๋‹ค.
  • ์ด๋Ÿฌํ•œ ์‚ฌ์‹ค์—์„œ ์ฐฉ์•ˆํ•˜์—ฌ, SPA๋Š” ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€์—์„œ JS๋ฅผ ํ†ตํ•ด ๋ณด๊ณ ์žˆ๋Š” DOM์˜ ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ง€์šฐ๊ณ  ๋‹ค๋ฅธ ์ปจํ…์ธ ๋กœ DOM์„ ์ฑ„์šด ๋’ค ๋ธŒ๋ผ์šฐ์ € ์ƒ์˜ URL์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฐ”๋€ ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋งŒ๋“ค์–ด์ค€๋‹ค.
    • ํŽ˜์ด์ง€ ์ปจํŠธ๋กค ์‹œ History API๋ฅผ ์‚ฌ์šฉํ•ด ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜์˜ ํžˆ์Šคํ† ๋ฆฌ ์Šคํƒ์„ ์กฐ์ ˆํ•œ๋‹ค.
    • ๊ทธ ๋‹ค์Œ JS๋กœ DOM ์ปจํŠธ๋กค์„ ํ•˜๋ฉด์„œ ์ง์ ‘ ํ™”๋ฉด์„ ๋ณ€๊ฒฝ์‹œ์ผœ์ค€๋‹ค.
    • ์˜ˆ: React์˜ React-Router-Dom
  • React๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์‹œ (CRA ํ™˜๊ฒฝ์—์„œ๋Š”) WebPack๊ณผ ๊ฐ™์€ ๋ฒˆ๋“ค๋ง ๋„๊ตฌ๋ฅผ ๊ฑฐ์ณ ํ•˜๋‚˜(๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜) ๊ฑฐ๋Œ€ํ•œ JS ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋ง ๋˜๊ณ , SPA์—์„œ๋Š” ์ด๋Ÿฌํ•œ JS ํŒŒ์ผ์„ ์ „๋‹ฌ๋ฐ›์•„ ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜๊ฒŒ ๋œ๋‹ค.

  • ์ด์ „ ๋ฐฉ์‹์—์„œ๋Š” ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์ƒˆ๋กœ๊ณ ์นจ์ด ๋ฐœ์ƒํ•˜๊ณ , ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์ด๋ฅผ ํ•ด์„ํ•˜๊ณ  ํ™”๋ฉด์— ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
  • ์ด์™€ ๋‹ฌ๋ฆฌ SPA๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋กœ๋“œ๋œ ํ›„ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ฒ˜์Œ ํ•œ ๋ฒˆ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋กœ๋“œํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋งŒ ๋ณ€๊ฒฝํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ์†Œ์‹œ์ผœ DB ๊ณผ๋ถ€ํ•˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ , ํ™”๋ฉด ๊นœ๋นก์ž„์ด ์‚ฌ๋ผ์ ธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋‚˜์€ UX๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
    • ์„œ๋ฒ„๋Š” ๋‹จ์ง€ JSON ํŒŒ์ผ๋งŒ์„ ๋ณด๋‚ด์ฃผ๊ณ , ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ JS ํŒŒ์ผ์„ ์ด์šฉํ•ด ๋™์ ์œผ๋กœ HTML ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•ด ํŽ˜์ด์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๊ฒƒ!

๐Ÿ“ข ์ด ๋ฐฉ์‹์ด ๋ฐ”๋กœ CSR!

CSR (Client-Side-Rendering)

ํด๋ผ์ด์–ธํŠธ ๊ฐ€ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์ฃผ์ฒด!

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

  • ํด๋ผ์ด์–ธํŠธ์ธ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ Œ๋”๋ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
  • ์„œ๋ฒ„๋Š” ์˜ฌ๋ ค๋†“์€ ํŒŒ์ผ์„ ์ „๋‹ฌํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด JS ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด์„œ DOM์— ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ Œ๋”๋งํ•˜๊ฒŒ ๋œ๋‹ค.
  • ํŽ˜์ด์ง€ ์ฒซ ๋กœ๋“œ ์‹œ ์„œ๋ฒ„์—์„œ ๋ชจ๋“  ๋™์ž‘์„ ๋‚ด๋ ค์ฃผ๊ณ , HTML์˜ ๋นˆ ๋ถ€๋ถ„์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ž์—์„œ ๋‹ค๋ฃฌ Ajax ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ํ†ตํ•ด ์š”์ฒญ์„ ๋ณด๋‚ด ๋ฐ์ดํ„ฐ๋ฅผ fetchํ•ด์˜ค๊ณ , ํŽ˜์ด์ง€๋ฅผ ๊ทธ๋ฆฐ๋‹ค.
  • SPA์˜ ๋ฐœ์ „, CPU์˜ ์„ฑ๋Šฅ ์ƒ์Šน, JS์˜ ํ‘œ์ค€ํ™” ๋ฐ React, Vue, Angular์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋“ฑ์žฅ๊ณผ ํ•จ๊ป˜ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋„์ž…๋˜์—ˆ๋‹ค.
  • ๊ด€๋ จ ์›น ํ”„๋ ˆ์ž„์›Œํฌ: React.js, Angular.js, Vue.js
// index.html
<html>
  ...
  <body>
    <div id="root"></div>
    <script src="app.js"></script>
  </body>
</html>
  • ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด๋ฉด, body ํƒœ๊ทธ ์•ˆ์— root์™€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ JS์˜ ๋งํฌ๋งŒ ํฌํ•จ๋œ HTML ์ฝ”๋“œ๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ „์†ก๋œ๋‹ค.
    • ๋”ฐ๋ผ์„œ ์ฒซ ์ ‘์† ์‹œ ๋นˆ HTML ํ™”๋ฉด์ด ๋ณด์ด๊ฒŒ ๋œ๋‹ค.
    • ์ดํ›„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ app.js ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์œผ๋ฉด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋กœ์ง, ๊ตฌ๋™์— ํ•„์š”ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ์Šค ์ฝ”๋“œ ๋“ฑ์ด ์ œ๊ณต๋œ๋‹ค.
    • ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ JS์™€ ํ•จ๊ป˜ ๋™์ ์œผ๋กœ HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๊ฒŒ ๋œ๋‹ค.
  • npx create-react-app ์‹คํ–‰ ์ดํ›„ ์ƒ์„ฑ๋œ public/index.html ํŒŒ์ผ์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ดˆ๊ธฐ์— JS์„ ์ฝ์œผ๋ฉฐ ๋ฌด์—‡์„ ๊ทธ๋ฆด์ง€ ํŒ๋‹จํ•˜๊ณ  ๋ Œ๋”๋งํ•˜๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๋™์•ˆ ์ง€์—ฐ์ด ์ƒ๊ธด๋‹ค.
    • ์ดํ›„ ์ž‘์—…์— ์žˆ์–ด์„œ๋Š” ์„œ๋ฒ„์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ ํ˜ผ์ž ๋ Œ๋”๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

โš™๏ธ CSR์˜ ๋‹จ๊ณ„

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

  2. CDN์ด HTML ํŒŒ์ผ๊ณผ JS๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†กํ•œ๋‹ค.

    • CDN: ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ฐ€๊นŒ์šด ์„œ๋ฒ„์—์„œ ์š”์ฒญ์— ์‘๋‹ตํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹

  1. ํด๋ผ์ด์–ธํŠธ๋Š” HTML๊ณผ JS ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค.

    • ์ด๋•Œ ์œ ์ €๋Š” ๋นˆ ํ™”๋ฉด๋งŒ์„ ๋ณด๊ฒŒ ๋œ๋‹ค.

  1. ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ JS ํŒŒ์ผ์ด ์‹คํ–‰๋˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•œ API๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

    • ์ด๋•Œ ์‚ฌ์šฉ์ž๋“ค์€ placeholder(์˜ˆ: skeleton UI)๋ฅผ ๋ณด๊ฒŒ ๋œ๋‹ค.

  1. ์„œ๋ฒ„์— API ์š”์ฒญ์— ์‘๋‹ตํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.

  2. ํด๋ผ์ด์–ธํŠธ๋Š” API๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ placeholde ์ž๋ฆฌ์— ๋„ฃ์–ด์ฃผ๊ณ , ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•œ ํŽ˜์ด์ง€๊ฐ€ ๋œ๋‹ค.

โค๏ธโ€๐Ÿ”ฅ ์žฅ์ 

๋น ๋ฅธ ํ™”๋ฉด ์ „ํ™˜๊ณผ ์ธํ„ฐ๋ ‰์…˜ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

  • View ๋ Œ๋”๋ง์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ์„œ๋ฒ„ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ์†Œ์‹œํ‚ค๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋น ๋ฅธ ์ƒํ˜ธ์ž‘์šฉ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ์ƒˆ๋กœ๊ณ ์นจ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„ ์‚ฌ์šฉ์ž๊ฐ€ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ๊ณผ ๋น„์Šทํ•œ ๊ฒฝํ—˜์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.
    • ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ
      • Android, iOS์ฒ˜๋Ÿผ ๊ตฌ์ฒด์ ์ธ ํ”Œ๋žซํผ๋งŒ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ
      • ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ด๋ฉฐ ๋ฐ˜์‘์ด ๋น ๋ฅธ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.
  • HTML๋งŒ ๋ฐ›์•„์™”์„ ๋•Œ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š๋‹ค๊ฐ€ ๋งํฌ๋œ ๋ชจ๋“  ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” JS ํŒŒ์ผ์ด ๋„์ฐฉํ•˜๋ฉด ์›น ์‚ฌ์ดํŠธ๊ฐ€ ๋ณด์—ฌ์ง€๋Š” ๋™์‹œ์— ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

๐Ÿ’” ๋‹จ์ 

SSR์— ๋น„ํ•ด ๋Š๋ฆฐ ์ฒซ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„

  • ์„œ๋ฒ„์— ์ฒซ ์š”์ฒญ์„ ํ•  ๊ฒฝ์šฐ ์ „์ฒด ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ฌธ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ฒŒ ๋˜์–ด SSR๋ณด๋‹ค ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
  • ์ฒ˜์Œ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๋ฐ›์•„ ๋‹ค์šด๋กœ๋“œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ฒซ ํ™”๋ฉด์„ ๋ณด๊ธฐ๊นŒ์ง€์˜ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • ์ด ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ์†Œ๋น„๋˜๋Š” ์ปจํ…์ธ ์˜ ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์ด ์ข‹์ง€ ์•Š์•„ ํŽ˜์ด์ง€๊ฐ€ ๋…ธ์ถœ๋˜๊ธฐ๊นŒ์ง€์˜ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

SEO์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ณด์™„ ์ž‘์—… ํ•„์š”

  • ์œ„์˜ ์ฝ”๋“œ ์˜ˆ์‹œ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ, CSR์—์„œ ์‚ฌ์šฉ๋˜๋Š” HTML์˜ body ๋ถ€๋ถ„์€ ๋นˆ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— HTML ๋ฌธ์„œ๋ฅผ ๋ถ„์„ํ•ด ์›น ์‚ฌ์ดํŠธ์—์„œ ๊ฒ€์ƒ‰๋˜๋„๋ก ๋•๋Š” ๊ฒ€์ƒ‰ ์—”์ง„์˜ ํฌ๋กค๋Ÿฌ์˜ ๋ฐฉ์‹์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
  • Google์˜ ๊ฒ€์ƒ‰ ์—”์ง„์—๋Š” JS ์—”์ง„์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ํฌ๋กค๋ง์ด ๋˜๊ธด ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํฌํ„ธ ์‚ฌ์ดํŠธ ๊ฒ€์ƒ‰ ์—”์ง„์˜ ํฌ๋กค๋Ÿฌ์—์„œ๋„ ์ œ๋Œ€๋กœ ์›น ์‚ฌ์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ง‘๋˜๊ฒŒ ํ•˜๋ ค๋ฉด ๋ณ„๋„์˜ ๋ณด์™„ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.
    • ์˜ˆ: sitemap ์ž‘์„ฑ (๊ฒ€์ƒ‰ ์—”์ง„์— ๊ฒŒ์‹œ ๋  ์ž์‹ ์˜ ์›น ์‚ฌ์ดํŠธ ์ฝ˜ํ…์ธ ์˜ ํฌ๋กค๋ง ๋ฐ ์ธ๋ฑ์‹ฑ์„ ๋•๋Š” ํŽ˜์ด์ง€ ๋ชฉ๋ก ํŒŒ์ผ)

SSR (Server-Side-Rendering)

์„œ๋ฒ„ ๊ฐ€ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์ฃผ์ฒด!

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋งค๋ฒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
  • ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ์—์„œ ์˜๊ฐ์„ ๋ฐ›์•„ ๋„์ž…๋œ ๋ฐฉ์‹์ด๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ์„œ๋ฒ„์—์„œ ์ƒˆ๋กœ์šด View ํ™”๋ฉด์„ ์ƒ์„ฑํ•˜์—ฌ ์ œ๊ณตํ•œ๋‹ค.
  • ์„œ๋ฒ„์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์™€ HTML ํŒŒ์ผ๊ณผ ์ด๋ฅผ ๋™์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋Š” HTML ํŒŒ์ผ์„ ๋ฐ›์•„ ๋ฐ”๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ด€๋ จ ์›น ํ”„๋ ˆ์ž„์›Œํฌ: Next.js, Flask

์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

  • ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณผ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๋กœ์ง์„ ํฌํ•จํ•œ ํŒŒ์ผ๋งŒ์„ ์„œ๋ฒ„์— ์˜ฌ๋ฆฐ๋‹ค.
  • ์„œ๋ฒ„์—์„œ๋Š” HTML, CSS, JS๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋กœ์ง์„ ์‹คํ–‰ํ•ด ์ตœ์ข… ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ด๋ฏธ DOM ๊ตฌ์„ฑ์ด ์™„๋ฃŒ๋œ ํŒŒ์ผ์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฑ์—”๋“œ๊ฐ€ Spring ๊ธฐ๋ฐ˜์ด๋ฉด Java, django ๊ธฐ๋ฐ˜์ด๋ผ๋ฉด Python, Node.js์˜ ๊ฒฝ์šฐ JS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SSR๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋กœ์ง์„ ์ž‘์„ฑํ•œ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๋ฐฑ์—”๋“œ์—์„œ๋Š” ์š”์ฒญ URL์— ๋Œ€์‘ํ•˜๋Š” ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด ์š”์ฒญ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘(DB์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ, API์—์„œ ๋ฐ์ดํ„ฐ ํ˜ธ์ถœํ•˜๊ธฐ)ํ•˜๊ณ , HTML ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜์˜ํ•œ๋‹ค.
    • ์ดํ›„ ์„œ๋ฒ„ ์ธก์—์„œ ๋ Œ๋”๋ง ์—”์ง„์„ ์‚ฌ์šฉํ•ด HTML, CSS, JS ํŒŒ์ผ๋“ค์„ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ์ฒ˜๋ฆฌํ•œ ๋’ค ์ „์†กํ•œ๋‹ค.
  • ์„œ๋ฒ„ ๋‹จ์—์„œ ๋ชจ๋“  data fetching ์ž‘์—…๊ณผ ๋ Œ๋”๋ง ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” JS ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š” ๋™์•ˆ ๋ฏธ๋ฆฌ ํ™”๋ฉด์„ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.
    • ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ๋กœ๋”ฉ ๋ฐ”๋‚˜ Skeleton UI๋ฅผ ๋ณด์ง€ ์•Š๊ณ ๋„ ๋ฐ”๋กœ ๋ Œ๋”๋ง๋œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋ณด๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์•„๋ž˜์™€ ๊ฐ™์ด ์ด๋ฏธ ๋‹ค ๊ทธ๋ ค์ง„ DOM ํŒŒ์ผ์„ ๋ฐ›๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
// index.html
<html>
  ...
  <body>
    <h1>WOW!:D</h1>
    <div>
      <p>ํ™”๋ฉด์— ๊ทธ๋ ค์งˆ ๋‚ด์šฉ์ด ๋ชจ๋‘ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค!</p>
    </div>
  </body>
</html>

โš™๏ธ SSR์˜ ๋‹จ๊ณ„

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

  2. ์„œ๋ฒ„๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•์ธํ•˜๊ณ , ์ปดํŒŒ์ผ๋งํ•˜์—ฌ ์ฆ‰์‹œ ๋ Œ๋”๋ง ๊ฐ€๋Šฅํ•œ HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.

  3. ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ๋˜๋Š” ์ˆœ๊ฐ„ ์ด๋ฏธ ๋ Œ๋”๋ง ๋  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ HTML์€ ์ฆ‰์‹œ ๋ Œ๋”๋ง๋œ๋‹ค.

    • ์ด๋•Œ JS ํŒŒ์ผ์€ ์ฝํžˆ๊ธฐ ์ „์ด๋ฏ€๋กœ ์‚ฌ์ดํŠธ ์ž์ฒด์˜ ์กฐ์ž‘์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ JS ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค.
    • ๋‹ค์šด๋กœ๋“œ ๋˜๋Š” ์ค‘์— ์‚ฌ์šฉ์ž๋Š” ์ปจํ…์ธ ๋ฅผ ๋ณผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์กฐ์ž‘์€ ํ•  ์ˆ˜ ์—†๋‹ค.
    • ์ด๋•Œ ํŽ˜์ด์ง€์—์„œ๋Š” ์‚ฌ์šฉ์ž์˜ ์กฐ์ž‘์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š”๋‹ค.

  1. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์šด๋กœ๋“œ ๋œ JS ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

  2. JS๊นŒ์ง€ ์„ฑ๊ณต์ ์œผ๋กœ ์ปดํŒŒ์ผ๋ง ๋œ ํ›„์—๋Š” ๊ธฐ์–ต๋œ ์‚ฌ์šฉ์ž ์กฐ์ž‘์ด ์‹คํ–‰๋˜๊ณ , ์ƒํ˜ธ ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•œ ์›น ํŽ˜์ด์ง€๊ฐ€ ๋œ๋‹ค.

โค๏ธโ€๐Ÿ”ฅ ์žฅ์ 

CSR์— ๋น„ํ•ด ๋น ๋ฅธ ์ฒซ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

  • CSR ๋ฐฉ์‹๋ณด๋‹ค ์ฒ˜์Œ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ ๋‹ค.
  • ์ฒซ ํŽ˜์ด์ง€์— ํ•ด๋‹น ํ•˜๋Š” ๋ฌธ์„œ๋งŒ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ ๋ Œ๋”๋ง์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ CSR์— ๋น„ํ•ด ๋น ๋ฅด๋‹ค.

SEO์— ์ ํ•ฉ

  • CSR๊ณผ ๋‹ฌ๋ฆฌ ๋ชจ๋“  ์ปจํ…์ธ ๊ฐ€ HTML ํŒŒ์ผ์— ๋‹ด๊ฒจ์„œ ์˜ค๊ฒŒ ๋˜๋ฏ€๋กœ ํšจ์œจ์ ์ธ SEO๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ณด์•ˆ์— ์šฐ์ˆ˜

  • ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์„œ๋ฒ„ ์ธก ์„ธ์…˜์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์šฉ์ดํ•˜์—ฌ CSR ๋ฐฉ์‹์— ๋น„ํ•ด ๋ณด์•ˆ์ด ์šฐ์ˆ˜ํ•˜๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ ์˜์—ญ๊ณผ ๋ฐฑ์—”๋“œ ์˜์—ญ์„ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•˜์—ฌ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ๊ฐ€๋Šฅ

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

  • CSR ๋ฐฉ์‹์—์„œ๋Š” CSR ํŽ˜์ด์ง€๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ, SSR ํŽ˜์ด์ง€๋Š” ๋ฐฑ์—”๋“œ์—์„œ ๊ฐœ๋ฐœํ•ด์•ผ ํ–ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ SSR ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ๊ฒฝ์šฐ ํŽ˜์ด์ง€๋ฅผ ์˜จ์ „ํžˆ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ํŽ˜์ด์ง€๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•˜๋˜ ๋ถˆํ•„์š”ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๋ฐฑ์—”๋“œ์—์„œ๋Š” API ๊ฐœ๋ฐœ ๋ฐ ๋ฐ์ดํ„ฐ ํ™œ์šฉ์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋น„์šฉ์ด ์ค„๊ณ , ์ž‘์—… ์™„์„ฑ๋„ ๋ฐ ์ด์Šˆ ๋Œ€์‘ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’” ๋‹จ์ 

์ดˆ๊ธฐ ๋กœ๋”ฉ ์ดํ›„ ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์†๋„ ์ €ํ•˜

  • ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋˜์–ด ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

Blinking Issue

  • ์ •์ ์ธ ์‚ฌ์ดํŠธ์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ๋งํฌ๋กœ ๊ฐ€๊ฒŒ ๋  ๊ฒฝ์šฐ ์ „์ฒด HTML ๋ฌธ์„œ๋ฅผ ๋‹ค์‹œ ๋ฐ›์•„์™€์•ผ ํ•œ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•  ๊ฒฝ์šฐ ์ „์ฒด ์›น ์‚ฌ์ดํŠธ๋ฅผ ์„œ๋ฒ„์—์„œ ๋‹ค์‹œ ๋ฐ›์•„์™€์•ผ ํ•ด์„œ ํ™”๋ฉด์ด ์—†์–ด์กŒ๋‹ค๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ด๋Š” UX์˜ ๊ด€์ ์—์„œ ์ข‹์ง€ ์•Š๋‹ค.

์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜ ๋ฐ ๋น„์šฉ ๋ฌธ์ œ

  • ์„œ๋ฒ„๊ฐ€ ๊ฐ ์‚ฌ์šฉ์ž์˜ ํด๋ฆญ์— ๋”ฐ๋ฅธ HTML ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ๋งŽ์•„์ ธ ๊ณผ๋ถ€ํ•˜ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  • ์„œ๋ฒ„์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์— ๋”ฐ๋ผ CSR๋ณด๋‹ค ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ๋งค๋ฒˆ ์„œ๋ฒ„์—์„œ ๋กœ์ง์„ ์‹คํ–‰ํ•˜๋Š” ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๊ณ , ๋™์  ์ปจํ…์ธ ๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ์บ์‹ฑ ๋˜ํ•œ ๋ฌดํšจํ™”๋˜๋ฏ€๋กœ CSR์— ๋น„ํ•ด ์„œ๋ฒ„ ๋น„์šฉ์ด ๋งŽ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

TTV์™€ TTI ๊ฐ„ ๊ณต๋ฐฑ ์‹œ๊ฐ„ ๋ฐœ์ƒ

  • HTML ํŒŒ์ผ์„ ๋ฐ›์•˜์Œ์—๋„ ๋™์ ์œผ๋กœ ์›น์„ ์ œ์–ดํ•˜๋Š” JS ํŒŒ์ผ์„ ๋ฐ›์ง€ ๋ชปํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ฆญํ•ด๋„ ์›น์ด ๋ฐ˜์‘ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ตœ์ข…์ ์œผ๋กœ JS ํŒŒ์ผ์ด ๋„์ฐฉํ•ด์•ผ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.
  • ์ด ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„(TTV)๊ณผ ์‹ค์ œ๋กœ ์ธํ„ฐ๋ ‰์…˜์ด ๊ฐ€๋Šฅํ•œ ์‹œ๊ฐ„(TTI) ์‚ฌ์ด์— ๊ณต๋ฐฑ ์‹œ๊ฐ„์ด ์ƒ๊ธด๋‹ค.

๐Ÿ‘ฅ Hydration

๐Ÿ‘ฅ ๋ Œ๋”๋ง์ด ์ •๋ง ๋งค๋ฒˆ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ํ•„์š”ํ•œ๊ฐ€์š”?

๐Ÿ”Ž References

์ฐธ๊ณ  ์ž๋ฃŒ ๋ชจ์Œ
profile
An investment in knowledge pays the best interest๐Ÿ™ƒ

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