Skip to content

Latest commit

ย 

History

History
161 lines (113 loc) ยท 12.6 KB

SSRvsCSR.md

File metadata and controls

161 lines (113 loc) ยท 12.6 KB

SSR vs CSR (feat.SPA)

SSR

CSR

์ž‘์„ฑ์ž : ์ „์ฐฌ๋ฏผ

๋žœ๋”๋ง์ด๋ž€?

ํ™”๋ฉด์— ํ‘œ์‹œํ•  ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •

๋žœ๋”๋ง๊ณผ์ •

  1. HTML์„ ๊ตฌ์กฐ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ, DOM ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
  2. CSS๋ฅผ ๊ตฌ์กฐ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ, ์Šคํƒ€์ผ ๊ทœ์น™ ์ƒ์„ฑ
  3. DOM ๊ฐ์ฒด, ์Šคํƒ€์ผ ๊ทœ์น™์„ ํ•ฉ์ณ ํ™”๋ฉด(๋žœ๋”ํŠธ๋ฆฌ) ์ƒ์„ฑ
  4. ๋žœ๋”ํŠธ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์น˜, ์Šคํƒ€์ผ ์ž‘์—…

์ข€ ๋” ์ž์„ธํ•œ ์„ค๋ช…

  1. Loader๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML์„ ๋ถˆ๋Ÿฌ์˜ด
  2. HTML์„ ๋ถ„๋ฅ˜(Phasing)ํ•˜์—ฌ DOMํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.
  3. CSSํŒŒ์ผ๊ณผ ์Šคํƒ€์ผ ์š”์†Œ๋ฅผ ๋ถ„๋ฅ˜ํ•˜์—ฌ CSSOMํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.
  4. DOMํŠธ๋ฆฌ์™€ CSSOM์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋žœ๋”๋งํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.
  5. ๋žœ๋”๋งํŠธ๋ฆฌ์˜ ์š”์†Œ๋“ค์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
  6. ๊ณ„์‚ฐ๋œ ํฌ๊ธฐ์™€ ์œ„์น˜์— ๋งž๊ฒŒ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

SPA (Single Page Web Application)

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

ํ•˜์ง€๋งŒ SPA์˜ ๊ฒฝ์šฐ ๋žœ๋”๋ง์˜ ์—ญํ• ์„ ์„œ๋ฒ„์—๊ฒŒ ๋„˜๊ธฐ์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์ตœ์ดˆ์— ํ•œ๋ฒˆ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , ์ดํ›„ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€ ์š”์ฒญ ์‹œ ํŽ˜์ด์ง€ ๊ฐฑ์‹ ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ์„ ์ „๋‹ฌ๋ฐ›์•„ ํŽ˜์ด์ง€๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.

SPA์˜ ์žฅ์ 

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

SPA์˜ ๋‹จ์ 

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ํ•œ๋ฒˆ์— ๋‹ค์šด๋กœ๋“œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ๊ตฌ๋™์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
  • SPA ๊ตฌ์กฐ ์ƒ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—์„œ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, ํ•ด๋‹น ๋กœ์ง๋“ค์€ JavaScript๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋˜๋ฏ€๋กœ ์ฝ”๋“œ๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜๋Š” ๋ณด์•ˆ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
  • ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™” (SEO)๊ฐ€ ์–ด๋ ต๋‹ค.

SPA๊ฐ€ ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”(SEO)์— ๋ถ€์ ํ•ฉํ•œ ์ด์œ 

๊ฒ€์ƒ‰์—”์ง„์ด ํฌ๋กค๋ง ํ•  ๋•Œ JavaScript๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋กœ๋“œ๋˜๊ธฐ ์ „์˜ ๋นˆ ์ƒํƒœ์˜ ์ฝ”๋“œ๋ฅผ ํฌ๋กค๋งํ•˜๊ธฐ ๋–„๋ฌธ์— ์ธ๋ฑ์‹ฑ์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

์œ„์ฒ˜๋Ÿผ SPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด UX์˜ ํ–ฅ์ƒ๊ณผ ๋ Œ๋”๋ง์˜ ์žฅ์ ๋„ ์žˆ์ง€๋งŒ ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”์˜ ๋‹จ์  ๋˜ํ•œ ์กด์žฌํ•œ๋‹ค. SPA๋Š” ์ •๋ณด์˜ ์ œ๊ณต์„ ์œ„ํ•œ ์›นํŽ˜์ด์ง€๋ณด๋‹ค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•œ ๊ธฐ์ˆ ์ด๋ฏ€๋กœ ํŽ˜์ด์ง€์˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋ฐฉ์‹์„ ์„ ํƒํ•˜๋Š”๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

SSR๊ณผ CSR


๐Ÿ’กSSR๊ณผ CSR ๊ฐœ๋… ์ •๋ฆฌ

SSR : ์‚ฌ์šฉ์ž๊ฐ€ ์›น ํŽ˜์ด์ง€์— ์ ‘์†ํ–ˆ์„ ๋•Œ ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋žœ๋”๋ง ๋  HTML์„ ์‘๋‹ตํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐ”๋กœ ๋žœ๋”๋ง ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•œ๋‹ค. ๊ทธ ํ›„ CSR๊ณผ ๋™์ผํ•˜๊ฒŒ ์ž๋ฐ”์Šคํฌ๋ฆผํŠธ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

CSR : ์‚ฌ์šฉ์ž๊ฐ€ ์›น ํŽ˜์ด์ง€์— ๋“ค์–ด์™”์„ ๋•Œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ํ•ด์„ํ•œ ํ›„ ๋žœ๋”๋งํ•œ๋‹ค.


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

SPA๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ์†Œ์‹œํ‚ค๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋‚˜์€ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•œ๋‹ค. ์„œ๋ฒ„๋Š” ๋‹จ์ง€ JSON ํŒŒ์ผ๋งŒ ๋ณด๋‚ด์ฃผ๋Š” ์—ญํ• ์„ ํ–ˆ๊ณ , HTML์„ ๊ทธ๋ฆฌ๋Š” ์—ญํ• ์€ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค. ๋ฐ”๋กœ ์ด๊ฒƒ์ด CRS(ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋žœ๋”๋ง)์ด๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ชฝ์ด ์ ์  ๋ฌด๊ฑฐ์›Œ์ง€์ž ์ด์— ๋ฐ˜๋Œ€๋กœ View๋งŒ ๊ด€๋ฆฌํ•˜์ž๋Š” ์ฒ ํ•™์œผ๋กœ React๊ฐ€ ๋“ฑ์žฅํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋žœ๋”๋ง๊ณผ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋žœ๋”๋ง์˜ ์ž๋ฆฌ์‹ธ์›€์ด ์‹œ์ž‘๋œ ๊ฒƒ์ด๋‹ค.
ServeSide

SSR (Serve Side Rendring)

SSR
์œ„์˜ ๊ทธ๋ฆผ์€ ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์ธ SSR์„ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋ฉด ๊ทธ๋ฆผ์˜ ์ˆœ์„œ๋Œ€๋กœ ๋ธŒ๋ผ์šฐ์ € => ํ”„๋ก ํŠธ์„œ๋ฒ„ => ๋ฐฑ์—”๋“œ์„œ๋ฒ„ => ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฅผ ๊ฑฐ์ณ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„ ๋‹ค์‹œ ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋ ค์ง€๋Š” ํ˜•์‹์ด๋‹ค.

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

CSR (Clint Side Rendring)

CSR
CSR์€ react, vue ๋“ฑ์˜ SPA์—์„œ ์“ฐ์ด๋Š” ๊ธฐ๋ฒ•์œผ๋กœ, ์„œ๋ฒ„์—์„œ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ–‡๋˜ SSR๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ ํด๋ผ์ด์–ธํŠธ์—์„œ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•œ๋‹ค. SPA์˜ ๊ฒฝ์šฐ ์ฒซ ํ™”๋ฉด์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด, ๊ทธ๋ฆผ1๋ฒˆ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์™ธํ•œ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์ฝ”๋“œ๋“ค์ด ํ”„๋ก ํŠธ ์„œ๋ฒ„์—์„œ ๋‹ค์šด๋ฐ›์•„ ์ง„๋‹ค. ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์šด ๋ฐ›์•˜์ง€๋งŒ ์•„์ง ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด ๋ฐ›์€ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋‹ค. CSR์˜ ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋ฉด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ์š”์ฒญํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ›์•„์˜จ๋‹ค.

CSR์€ ์ดˆ๊ธฐ ์ง„์ž…์†๋„๊ฐ€ ๋Š๋ฆฐ ๋ฐ˜๋ฉด, ๊ทธ ํ›„๋ก  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐฑ์‹ ํ•˜๋ฉด ๋˜๊ธฐ๋•Œ๋ฌธ์— SSR๋ฐฉ์‹์— ๋น„ํ•ด ์„œ๋ฒ„๋ถ€ํ•˜๊ฐ€ ๋œํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ดˆ๊ธฐ HTML์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ณด๋‹ˆ ๊ฒ€์ƒ‰ ๋ด‡์ด ํ•ด๋‹นํŽ˜์ด์ง€๋ฅผ ๋นˆ ํŽ˜์ด์ง€๋กœ ์ฐฉ๊ฐํ•˜์—ฌ CEO ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”์— ์ทจ์•ฝํ›Œ ์ˆ˜ ์žˆ๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

๊ฐ ๋ Œ๋”๋ง์˜ ์žฅ๋‹จ์  ๋น„๊ต

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

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

๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์น˜๋ช…์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜์žˆ๋Š” ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”์˜ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์›น ํฌ๋กค๋Ÿฌ, ๋ด‡๋“ค์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋•Œ๋ฌธ์— HTML์—์„œ๋งŒ ์ฝ˜ํ…์ธ ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ฒŒ ๋˜๊ณ  ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๋นˆ ํŽ˜์ด์ง€๋กœ ์ธ์‹ํ•˜๊ฒŒ ๋œ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ ๋ณด์•ˆ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ธฐ์กด์˜ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋žœ๋”๋ง์—์„œ๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์„œ๋ฒ„ ์ธก์—์„œ ์„ธ์…˜์œผ๋กœ ๊ด€๋ฆฌ๋ฅผ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํด๋ผ์ด์–ธํŠธ ์ธก์—๋Š” ์ฟ ํ‚ค๋ง๊ณ ๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„์ด ๋งˆ๋•…์น˜ ์•Š๋‹ค.

์„œ๋ฒ„์‚ฌ์ด๋“œ ๋žœ๋”๋ง์˜ ์žฅ์ ์€ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋กœ ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค. ์œ ์ €๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ์ปจํ…์ธ ๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜๋Š” ์‹œ์ ์„ ๋‹น๊ธธ ์ˆ˜ ์žˆ๊ณ , ์„œ๋ฒ„๋”ฐ๋กœ, ํด๋ผ์ด์–ธํŠธ ๋”ฐ๋กœ ์ž‘์„ฑํ•˜๋˜ ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง„๋‹ค. ๋ฌผ๋ก  SEO ์ ์šฉ๋„ ๋ฌธ์ œ์—†๋‹ค. ๋ฌธ์ œ์ ์€ ์‚ฌ์šฉ์ž์™€ ์ธํ„ฐ๋ ‰์…˜ํ•˜๋Š” ๋ถ€๋ถ„์ผ ๊ฒƒ์ด๋‹ค. ๋งค๋ฒˆ ์„œ๋ฒ„์— request ์š”์ฒญ์„ ํ†ตํ•ด์„œ ํ•ด๊ฒฐํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. DOM ์กฐ์ž‘์— ์žˆ์–ด์„œ๋„ ์š”์ฒญํ•˜๋Š” ๊ณผ์ •๊ณผ ์—„์ฒญ๋‚œ ํƒ์ƒ‰๋น„์šฉ์œผ๋กœ ์• ๋ฅผ ๋จน๊ณ ์žˆ๋‹ค. React๊ฐ€ ์ด ๋ถ€๋ถ„์— ์žˆ์–ด์„œ ๋งŽ์€ ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ–ˆ์ง€๋งŒ ์ด๋Š” ๋‘๊ณ  ๋ด์•ผ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์„๊ฒƒ์ด๋‹ค.

SSR CSR
์ดˆ๊ธฐ๋กœ๋”ฉ์†๋„ CSR์— ๋น„ํ•ด ๋‹ค์šด ๋ฐ›๋Š” ํŒŒ์ผ์ด ๋งŽ์ง€๊ฐ€ ์•Š์•„ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. ๋ชจ๋“  JSํŒŒ์ผ์„ ๋‹ค์šด ๋ฐ›์•„์™€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ์—๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
์„œ๋ฒ„ ๋ถ€๋‹ด ์„œ๋ฒ„์™€ ์žฆ์€ ์‘๋‹ต(view ๋ณ€๊ฒฝ์‹œ ๋งˆ๋‹ค)์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์— ๋ถ€๋‹ด์ด ๋œ๋‹ค. data ์š”์ฒญ์ด ์žˆ์„๋•Œ๋งŒ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์— ๋ถ€๋‹ด์ด ์ ๋‹ค.
SEO(Search Engine Optimization) HTML์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ฒ˜์Œ์— ํฌํ•จ๋˜์–ด ์žˆ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งจ ์ฒ˜์Œ HTMLํŒŒ์ผ์ด ๋น„์–ด์žˆ์–ด, ํฌ๋กค๋Ÿฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์—†๋‹ค.(๋‹จ ๊ตฌ๊ธ€ ์ œ์™ธ)

Next.js

Next.js๋Š” React์˜ SSR์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๊ฐ„๋‹จํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. React๋„ SSR์„ ๊ณ ๋ คํ•˜์—ฌ ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฒด์ ์œผ๋กœ๋„ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๊ธด ํ•˜์ง€๋งŒ, ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๋ณต์žกํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ Next.js๊ฐ€ ๋‚˜์™”๊ณ  ์‚ฌ์šฉ๋ฒ•๋„ ๊ฝค ๊ฐ„ํŽธํ•˜๋‹ค.

๊ณผ๊ฑฐ์˜ ์›น์‚ฌ์ดํŠธ๋“ค์€ ๋Œ€๋ถ€๋ถ„ SSR๋กœ ๋™์ž‘๋˜์–ด ์™”๊ธฐ ๋•Œ๋ฌธ์—, ํŽ˜์ด์ง€๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ Multi Page Form ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์Šค๋งˆํŠธํฐ์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜๋ฉด์„œ, ์˜ˆ์ „ ์›น๋“ค์€ ๋ชจ๋ฐ”์ผ์— ์ตœ์ ํ™”๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์— ๋ถˆํŽธํ•จ์ด ์ปค์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‚ฌ์šฉ์ž๋“ค์€ ๋ชจ๋ฐ”์ผ ์•ฑ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์˜ ์›น ํŽ˜์ด์ง€๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

Next.js
์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ React, Angular, Vue ๋“ฑ ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋˜์—ˆ๊ณ , CSR์ด ๊ฐ€๋Šฅํ•œ SPA๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด SPA์˜ ํŠน์ง•์€ ๊ธฐ์กด์˜ ์›นํŽ˜์ด์ง€์™€๋Š” ๋‹ค๋ฅด๊ฒŒ 1๊ฐœ์˜ ํŽ˜์ด์ง€์—์„œ ์—ฌ๋Ÿฌ ๋™์ž‘์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋งˆ์น˜ ๋ชจ๋ฐ”์ผ ์•ฑ๊ณผ ๋น„์Šทํ•œ ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด์„œ Header ์˜์—ญ์€ ๊ณ ์ •๋˜์–ด ์žˆ๊ณ , Main ์˜์—ญ์˜ ์ƒํƒœ๋งŒ ๊ณ„์† ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

SSR vs CSR

NextjsSSRCSR


๋จผ์ € ์ผ๋ฐ˜์ ์ธ React๋ Œ๋”๋ง ๋ฐฉ์‹์€ render() ํ•จ์ˆ˜๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๊ณ , ๊ทธ ๋‹ค์Œ์—๋Š” ComponentDidMount()ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋ Œ๋”๋ง์ด ๋œ๋‹ค. ๋ฐ˜๋ฉด์— Next๋Š” getInitialProps()๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๊ฐ€์ ธ์™€์„œ ํ•œ ๋ฒˆ์— ๋ Œ๋”๋ง์„ ํ•ด์ค€๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ SSR์€ ํ•œ ๋ฒˆ์— ๋ Œ๋”๋ง์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ๋กœ๋”ฉ ์†๋„๋Š” ๋น ๋ฅด์ง€๋งŒ, page ์ด๋™ ์‹œ์—๋Š” CSR๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค. ์™œ๋ƒํ•˜๋ฉด page๋ฅผ ์š”์ฒญ ํ•  ๋•Œ๋งˆ๋‹ค ์ค‘๋ณต๋˜๋Š” ํŒŒ์ผ์„ ๋‚ด๋ ค๋ฐ›์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ CSR์€ ์ดˆ๊ธฐ๋กœ๋”ฉ ์†๋„๋Š” ๋Š๋ฆฌ์ง€๋งŒ, ์ฒซ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ๋•Œ ๋ชจ๋“  ํŒŒ์ผ์„ ๋‚ด๋ ค๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.