Sam Baek, The Dev's Corner

๐Ÿ“ฝ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง๊ณผ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง

21 Jun 2023

CSR(Client Side Rendering)๊ณผ SSR(Server Side Rendering)


CSR์€ Client Side Rendering์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์›น ํŽ˜์ด์ง€์˜ ๋ Œ๋”๋ง์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
๋ฐ˜๋ฉด SSR์€ Server Side Randering์œผ๋กœ ์„œ๋ฒ„ ์ธก์—์„œ ์›น ํŽ˜์ด์ง€์˜ ๋ Œ๋”๋ง์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๋ Œ๋”๋ง์„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์ธก์—์„œ ํ•˜๋Š” ๊ฒƒ์˜ ์ฐจ์ด์ ์€ ๊ณผ์—ฐ ๋ฌด์—‡์ผ๊นŒ?


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


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

์ตœ๊ทผ์—๋Š” Hybrid Rendering์ด๋ผ๋Š” ๋ฐฉ์‹์ด ๋“ฑ์žฅํ•ด CSR๊ณผ SSR์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
์ด ๋ฐฉ๋ฒ•์€ ์ดˆ๊ธฐ ํŽ˜์ด์ง€ ๋กœ๋“œ๋Š” SSR์„ ์ดํ›„์—” ์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒ ์š”์†Œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด CSR์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

SPA (Single Page Application)


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

MPA (Multiple Page Application)


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

SEO์˜ ์ฐจ์ด


์•ž์„œ ์–ธ๊ธ‰์ฒ˜๋Ÿผ SEO๋Š” ๊ฒ€์ƒ‰ ์ตœ์ ํ™” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.
๋” ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” SEO๋Š” ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ ์›น ํŽ˜์ด์ง€๋ฅผ ์ž˜ ์ฐพ์•„์„œ
์ƒ‰์ธํ•˜๊ณ  ๋…ธ์ถœ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

CSR๋ฐฉ์‹์€ ๊ฒ€์ƒ‰ ์—”์ง„์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ์ธ์‹ํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— SEO์— ๋ถˆ๋ฆฌํ•˜์ง€๋งŒ
SSR์€ ์„œ๋ฒ„์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•ด ๊ฒ€์ƒ‰ ์—”์ง„์ด ์‰ฝ๊ฒŒ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— SEO์— ์œ ๋ฆฌํ•˜๋‹ค