๐Ÿ“– SSR(Server-Side Rendering)๊ณผ CSR(Client-Side Rendering)์˜ ์ฐจ์ด

์Š˜ยท2024๋…„ 12์›” 4์ผ

๐Ÿ“– TIL

๋ชฉ๋ก ๋ณด๊ธฐ
5/89

SSR๊ณผ CSR์€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. Vue, React, PHP, JSP์™€์˜ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


1. SSR (Server-Side Rendering)

  • ์„œ๋ฒ„์—์„œ HTML์„ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—์„œ ์™„์„ฑ๋œ HTML์„ ๋ฐ›์•„ ํ™”๋ฉด์— ๋ฐ”๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ์ „ํ†ต์ ์ธ ์›น ๊ฐœ๋ฐœ ๋ฐฉ์‹์œผ๋กœ, PHP, JSP, Ruby on Rails ๋“ฑ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํŠน์ง•

  • ๋น ๋ฅธ ์ดˆ๊ธฐ ๋กœ๋”ฉ: ์„œ๋ฒ„์—์„œ HTML์ด ์ด๋ฏธ ์™„์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐ”๋กœ ๋ Œ๋”๋ง ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • SEO์— ์œ ๋ฆฌ: ๊ฒ€์ƒ‰ ์—”์ง„์ด HTML์„ ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŽ˜์ด์ง€ ์ „ํ™˜ ์‹œ ์„œ๋ฒ„ ์š”์ฒญ์ด ๊ณ„์† ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ๋„คํŠธ์›Œํฌ ์˜์กด์„ฑ์ด ๋†’์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. CSR (Client-Side Rendering)

  • ์„œ๋ฒ„์—์„œ ๋น„์–ด์žˆ๋Š” HTML๊ณผ JavaScript ํŒŒ์ผ์„ ๋ณด๋‚ด๋ฉด, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ JavaScript๋ฅผ ์‹คํ–‰ํ•˜์—ฌ HTML์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Vue, React, Angular ๋“ฑ SPA ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ CSR ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ง•

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

SSR๊ณผ CSR์˜ ์ฃผ์š” ์ฐจ์ด์ 

ํ•ญ๋ชฉSSRCSR
๋ Œ๋”๋ง ์œ„์น˜์„œ๋ฒ„ํด๋ผ์ด์–ธํŠธ (๋ธŒ๋ผ์šฐ์ €)
์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๋น ๋ฆ„๋А๋ฆผ
SEO์œ ๋ฆฌ๋ถˆ๋ฆฌ
ํŽ˜์ด์ง€ ์ „ํ™˜๋А๋ฆผ (์„œ๋ฒ„ ์š”์ฒญ ํ•„์š”)๋น ๋ฆ„
๊ธฐ์ˆ  ์˜ˆ์‹œPHP, JSP, Ruby on RailsVue, React, Angular

3. Vue/React์™€ SSR

CSR์ด ๊ธฐ๋ณธ์ธ Vue์™€ React๋„ SSR์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด SPA์˜ ์žฅ์ ๊ณผ SSR์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Vue: Nuxt.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SSR ๊ตฌํ˜„ ๊ฐ€๋Šฅ.
  • React: Next.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SSR ๊ตฌํ˜„ ๊ฐ€๋Šฅ.

SSR ๊ธฐ๋ฐ˜ Vue/React์˜ ๋™์ž‘

  1. ์„œ๋ฒ„์—์„œ ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์— ๋Œ€ํ•ด ์™„์„ฑ๋œ HTML์„ ์ƒ์„ฑ.
  2. ํด๋ผ์ด์–ธํŠธ์—์„œ JavaScript๋ฅผ ๋กœ๋“œํ•˜์—ฌ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ SPA๋กœ ์ „ํ™˜.

์ด ๋ฐฉ์‹์€ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„ ๊ฐœ์„ ๊ณผ SEO ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ๋™์‹œ์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


4. SPA์™€ SSR/CSR

  • SPA๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ CSR ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜์ง€๋งŒ, Nuxt.js, Next.js์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด SPA + SSR ํ˜•ํƒœ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SSR์„ ์ ์šฉํ•œ SPA๋Š” ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ ์„œ๋ฒ„์—์„œ HTML์„ ์ƒ์„ฑํ•˜๊ณ , ์ดํ›„ ํŽ˜์ด์ง€ ์ „ํ™˜์€ CSR์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ •๋ฆฌ

  • PHP, JSP๋Š” ์ „ํ†ต์ ์ธ SSR ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์š”์ฒญ๋งˆ๋‹ค HTML์„ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Vue, React๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ CSR์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, Nuxt.js, Next.js๋ฅผ ํ†ตํ•ด SSR๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • SPA๋Š” CSR์ด ์ฃผ๋ฅผ ์ด๋ฃจ์ง€๋งŒ, SSR๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„์™€ SEO ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

profile
์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ์žฅ๊ธฐ ๊ธฐ๋ก๊ธฐ๋ก

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