[CS] CSR(Client Side Rendering)๊ณผ SSR(Server Side Rendering)
elice/study

[CS] CSR(Client Side Rendering)๊ณผ SSR(Server Side Rendering)

1. SPA์™€ MPA

SPA(Single Page Application)

  • ํ•˜๋‚˜์˜ HTML ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด ๋™์ ์œผ๋กœ ํ™”๋ฉด์˜ ์ปจํ…์ธ ๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฐฉ์‹์˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค.
  • ์–ด๋–ค ์›น ์‚ฌ์ดํŠธ์˜ ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€์— ๋‹ด์•„ ๋™์ ์œผ๋กœ ํ˜„์žฌ์˜ ํ™”๋ฉด์„ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ํ‘œํ˜„ํ•œ๋‹ค.

MPA(Multiple Page Application)

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

Rendering

  • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML ํŒŒ์ผ์„ ๋ฐ›์•„์„œ ๋ธŒ๋ผ์šฐ์ €์— ์ถœ๋ ฅํ•˜๋Š” ๊ณผ์ •

์ „ํ†ต์ ์ธ ๋ฐฉ์‹์„ ์ด์šฉํ•œ๋‹ค๋ฉด, SPA๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ Œ๋”๋ง ๋ฐฉ์‹์€ CSR์ด๊ณ , MPA๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ Œ๋”๋ง ๋ฐฉ์‹์€ SSR์ด๋‹ค.

 

2. CSR(Client Side Rendering)

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

์ถœ์ฒ˜: https://medium.com/@adamzerner/client-side-rendering-vs-server-side-rendering-a32d2cf3bfcc

CSR์˜ ์žฅ๋‹จ์ 

๐Ÿ‘ ์žฅ์ 

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

๐Ÿ‘Ž ๋‹จ์ 

  • ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ด ๋กœ๋“œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค. ์ฆ‰, ์ดˆ๊ธฐ๊ตฌ๋™ ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค.
  • ๊ฒ€์ƒ‰์—”์ง„์˜ ๊ฒ€์ƒ‰ ๋ด‡์ด ํฌ๋กค๋ง์„ ํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”(SEO, Search Engine Optimization)์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
    • ๊ตฌ๊ธ€ ๋ด‡์˜ ๊ฒฝ์šฐ๋Š” JS๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ๊ฒ€์ƒ‰์—”์ง„์˜ ๊ฒฝ์šฐ ๊ทธ๋ ‡์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.

 

3. SSR(Server Side Rendering)

  • ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง์„ ์ž‘์—…ํ•˜๋Š” ๋ Œ๋”๋ง ๋ฐฉ์‹
  • ์›น ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ƒˆ๋กœ๊ณ ์นจ์ด ์ผ์–ด๋‚˜๊ณ , ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์š”์ฒญ์„ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ถœ์ฒ˜: https://medium.com/@adamzerner/client-side-rendering-vs-server-side-rendering-a32d2cf3bfcc

SSR์˜ ์žฅ๋‹จ์ 

๐Ÿ‘ ์žฅ์ 

  • ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ปจํ…์ธ ๋ฅผ ๋นจ๋ฆฌ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • JS๋ฅผ ์ด์šฉํ•œ ๋ Œ๋”๋ง์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ‘Ž ๋‹จ์ 

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

 

 

 

์ฐธ๊ณ 

https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/frontend/csr-ssr.md

 

https://ivorycode.tistory.com/entry/SSRSever-Side-Rendering%EA%B3%BC-CSRClient-Side-Rendering

 

https://velog.io/@haileyself/SPA-Client-Side-Rendering-%EA%B7%B8%EB%A6%AC%EA%B3%A0-Server-Side-Rendering-90k4ar8is1