Skip to content

Latest commit

ย 

History

History
84 lines (54 loc) ยท 3.6 KB

SSR-CSR.md

File metadata and controls

84 lines (54 loc) ยท 3.6 KB

๐Ÿ“ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ ๋ฐฉ์‹ - SPA์™€ MPA

MPA (Multiple Page Application)

  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜
  • ์š”์ฒญ์ด ์žˆ์„ ๋•Œ ๋งˆ๋‹ค ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋ Œ๋”๋ง ๋ฐฉ์‹์œผ๋กœ SSR์„ ์‚ฌ์šฉํ•œ๋‹ค.

SPA (Single Page Application)

  • ๋‹จ์ผ ํŽ˜์ด์ง€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜
  • ๊ธฐ์กด MPA์™€ ๋‹ฌ๋ฆฌ ๋ธŒ๋ผ์šฐ์ €์— ์ตœ์ดˆ์— ํ•œ๋ฒˆ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ , ์ด ํ›„ ํŠน์ • ๋ถ€๋ถ„๋งŒ Ajax๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋ Œ๋”๋ง ๋ฐฉ์‹์œผ๋กœ CSR์„ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ“ ๋ Œ๋”๋ง ๋ฐฉ์‹ - CSR๊ณผ SSR ๊ฐœ๋…

CSR (Client Side Rendering)

  • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ HTML์„ ๋ Œ๋”๋ง ํ•œ๋‹ค.

SSR (Server Side Rendering)

  • ์š”์ฒญ์ด ์˜ค๋ฉด ์„œ๋ฒ„์—์„œ HTML์„ ๋ Œ๋”๋ง ํ•œ๋‹ค.

SSR๊ณผ SSG (Static Site Generation)

  • SSR๊ณผ SSG๋Š” ์„œ๋ฒ„์—์„œ HTML์„ ๋ Œ๋”๋งํ•˜์—ฌ ๋ณด๋‚ด์ค€๋‹ค๋Š” ์ธก๋ฉด์—์„œ ๋น„์Šทํ•˜์ง€๋งŒ,์ฐจ์ด์ ์€ HTML์„ ์–ธ์ œ ๋งŒ๋“ค์–ด๋‘๋Š๋ƒ์ด๋‹ค.
  • SSG ๊ฐ™์€ ๊ฒฝ์šฐ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๊ณ , SSR์€ ์š”์ฒญ์ด ์˜ค๋ฉด ๋งŒ๋“ค์–ด๋‘”๋‹ค.
  • ๋”ฐ๋ผ์„œ SSR์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ฌ๋ผ์ ธ์„œ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๊ธฐ ์–ด๋ ค์šด ํŽ˜์ด์ง€์— ์ ํ•ฉ
  • SSG๋Š” ๋ฐ”๋€” ์ผ์ด ๊ฑฐ์˜ ์—†๋Š” ํŽ˜์ด์ง€์— ์ ํ•ฉ

๐Ÿ“ CSR๊ณผ SSR์˜ ๋™์ž‘ ๊ณผ์ •๊ณผ ํŠน์ง•

CSR

  1. ์œ ์ €๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ๋ฐฉ๋ฌธํ•œ๋‹ค.
  2. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์ฝ˜ํ…์ธ ๋ฅผ ์š”์ฒญํ•œ๋‹ค.
  3. ์„œ๋ฒ„๋Š” ๋นˆ ๋ผˆ๋Œ€๋งŒ ์žˆ๋Š” HTML์„ ์‘๋‹ตํ•œ๋‹ค.
  4. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML์„ ํŒŒ์‹ฑํ•˜๋ฉฐ ์—ฐ๊ฒฐ๋œ JS๋งํฌ๋ฅผ ์ฝ๊ณ , ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ JS๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค.
  5. ๋ธŒ๋ผ์šฐ์ €๋Š” JS๋ฅผ ์ด์šฉํ•ด ๋™์ ์œผ๋กœ DOM์„ ์ƒ์„ฑํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด ๋ธŒ๋ผ์šฐ์ €์— ๋„์›Œ์ค€๋‹ค.
  • CSR์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ JS ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ , ๋™์ ์œผ๋กœ DOM์„ ์ƒ์„ฑํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋ฏ€๋กœ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
  • ์„œ๋ฒ„๊ฐ€ ๋นˆ ๋ผˆ๋Œ€๋งŒ ์žˆ๋Š” HTML์„ ๋„˜๊ฒจ์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์ธก ๋ถ€ํ•˜๊ฐ€ ์ ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋ผ์šฐํŒ…, ์—ฐ์‚ฐ ๋“ฑ์„ ๋ชจ๋‘ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ฐ˜์‘ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  UX๋„ ์šฐ์ˆ˜ํ•˜๋‹ค.
  • ์›น ํฌ๋กค๋Ÿฌ ๋ด‡ ์ž…์žฅ์—์„œ๋Š” ์ฒ˜์Œ HTML์ด ๋น„์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”์— ๋ถˆ๋ฆฌํ•˜๋‹ค. (ํฌ๋กฌ์˜ ํฌ๋กค๋Ÿฌ์˜ ๊ฒฝ์šฐ๋Š” JSํŒŒ์ผ์„ ์ฝ์„ ์ˆ˜ ์žˆ๊ธด ํ•˜๋‹ค.)

SSR

  1. ์œ ์ €๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ๋ฐฉ๋ฌธํ•œ๋‹ค.
  2. ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์— ์ฝ˜ํ…์ธ ๋ฅผ ์š”์ฒญํ•œ๋‹ค.
  3. ์„œ๋ฒ„์—์„œ๋Š” ๋ Œ๋”๋ง ์ค€๋น„๋ฅผ ๋งˆ์นœ HTML, JS์ฝ”๋“œ๋ฅผ ์‘๋‹ตํ•œ๋‹ค.
  4. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ „๋‹ฌ๋ฐ›์€ HTML์„ ๋ Œ๋”๋งํ•œ๋‹ค.
  5. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ JS ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ ํ›„, HTML์— JS๋กœ์ง์„ ์—ฐ๊ฒฐํ•œ๋‹ค.
  • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ HTML์— ๋‹ด๊ฒจ์ง„ ์ฑ„๋กœ ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌ๋˜๋ฏ€๋กœ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”์— ์œ ๋ฆฌํ•˜๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์šด๋ฐ›๊ธฐ ์ „์— HTML์ด ๋ Œ๋”๋ง๋˜๋ฏ€๋กœ ์ดˆ๊ธฐ ๊ตฌ๋™ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. (ํ•˜์ง€๋งŒ JS๋กœ์ง์ด ์•„์ง ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ด๋ฏ€๋กœ ์‚ฌ์šฉ์ž์˜ ์ด๋ฒคํŠธ์— ๋ฌด๋ฐ˜์‘์ผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ Time to View !== Time to Interect)

๐Ÿ“ CSR ๋‹จ์  ๋ณด์™„ ๋ฐฉ๋ฒ•

์ดˆ๊ธฐ ๋กœ๋™ ์†๋„ ๋ณด์™„

  • Code Splitting
  • tree-shaking
  • chunk ๋ถ„๋ฆฌ

SEO ๊ฐœ์„ 

  • pre-rendering
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์›นํŒฉ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ๊ฐ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ HTMLํŒŒ์ผ์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด๋‘” ํ›„, ์„œ๋ฒ„์—์„œ ์š”์ฒญํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ํฌ๋กค๋Ÿฌ๋ผ๋ฉด ์‚ฌ์ „์— ๋ Œ๋”๋ง ๋œ HTML๋ฒ„์ „ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

CSR + SSR/SSG ๋„์ž…ํ•˜๊ธฐ

  • ํ”„๋ ˆ์ž„์›Œํฌ ์—†์ด -> ์ง์ ‘ ์„œ๋ฒ„ ์„ค์ •ํ•˜๊ธฐ
  • ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ -> Next.js / Gatsby

Isomorphic App || Universal Rendering

  • ์ดˆ๊ธฐ ๋ Œ๋”๋ง ๋ฐฉ์‹์œผ๋กœ SSR์„ ์‚ฌ์šฉํ•˜๊ณ ,๊ทธ ํ›„๋กœ๋Š” CSR์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹