๐Ÿค” SPA vs MPA์™€ SSR vs CSR

@leedawn ยท March 05, 2024 ยท 7 min read

MPA(Multiple Page Application)์ด๋ž€?

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ Page๋กœ ๊ตฌ์„ฑ๋œ Application์ด๋‹ค.
  • MAP๋Š” SSR ๋ฐฉ์‹์œผ๋กœ ๋ Œ๋”๋งํ•œ๋‹ค. ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง๋œ ์ •์  ๋ฆฌ์†Œ์Šค(HTML, CSS, Javascript)๊ฐ€ ๋‹ค์šด๋กœ๋“œ๋œ๋‹ค. ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•œ๋‹ค.

MPA์˜ ์žฅ์ 

  1. SEO ์ตœ์ ํ™”
  2. MPA๋Š” ์™„์„ฑ๋œ ํ˜•ํƒœ์˜ HTML ํŒŒ์ผ์„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค. ์ด๋•Œ ๊ฐ ํŽ˜์ด์ง€๊ฐ€ ๋…๋ฆฝ์ ์ธ URL์„ ๊ฐ€์ง€๋ฏ€๋กœ ๊ฒ€์ƒ‰ ์—”์ง„์ด ํŽ˜์ด์ง€๋ฅผ ์‰ฝ๊ฒŒ ์ƒ‰์ธํ™”(Indexing)์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ SEO(Search Engine Optimization)์— ์œ ๋ฆฌํ•˜๋‹ค.
  3. ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

    • ์„œ๋ฒ„์—์„œ ๊ทธ๋ ค์ง„ HTML์„ ๋ Œ๋”๋งํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

MPA์˜ ๋‹จ์ 

  1. ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉด '๊นœ๋นก'์ด๋Š” ํ˜„์ƒ์ด ์žˆ๋‹ค.

    • ํŽ˜์ด์ง€ ์š”์ฒญ๋งˆ๋‹ค ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋ง(์ƒˆ๋กœ๊ณ ์นจ)์„ ํ•œ๋‹ค.
  2. ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ๋ถˆํ•„์š”ํ•œ ํ…œํ”Œ๋ฆฟ๋„ ์ค‘๋ณตํ•ด์„œ ๋กœ๋”ฉ
  3. ์„œ๋ฒ„ ๋ Œ๋”๋ง์— ๋”ฐ๋ฅธ ๋ถ€ํ•˜

SPA(Single Page Application)์ด๋ž€?

  • SPA๋Š” ๋ง ๊ทธ๋Œ€๋กœ ํ•œ ๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งํ•œ๋‹ค.
  • SPA๋Š” ๋ณดํ†ต CSR(Client Side Rendering) ๋ฐฉ์‹์œผ๋กœ ๋ Œ๋”๋งํ•œ๋‹ค.

    • ๊ทธ๋Ÿฌ๋‚˜ SPA๋Š” SSR์ด๋‚˜ SSG์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ Œ๋”๋ง ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
      ์˜ˆ๋ฅผ ๋“ค์–ด, Next.js๋Š” SPA๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ๋„ SSR์ด๋‚˜ SSG๋ฅผ ์ง€์›ํ•œ๋‹ค.
  • ์ฒ˜์Œ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ์ •์  ๋ฆฌ์†Œ์Šค(Html, Css, Javascript ...)๋ฅผ
    ํ•œ ๋ฒˆ์— ๋‹ค์šด๋ฐ›๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ ์ ‘์†ํ•  ๋•Œ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  • ์ตœ์ดˆ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋”ฉํ•œ ์‹œ์ ๋ถ€ํ„ฐ๋Š” ํŽ˜์ด์ง€ ๋ฆฌ๋กœ๋”ฉ์—†์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์„œ ํ™”๋ฉด์„ ๊ฐฑ์‹ ํ•œ๋‹ค.(Ajax ๋•๋ถ„์— ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค) ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๊ฐฑ์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฌ์šด ํŽ˜์ด์ง€ ์ด๋™๊ณผ UX๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

SPA์˜ ์žฅ์ 

  1. ์ž์—ฐ์Šค๋Ÿฌ์šด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)๊ณผ ๋น ๋ฅธ ์†๋„

    • ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ”๊พธ๋ฏ€๋กœ ๋งˆ์น˜ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ๊ณผ ๊ฐ™์ด ๋น ๋ฅด๊ณ  '๊นœ๋นก' ๊ฑฐ๋ฆผ์ด ์—†๋‹ค.
  2. ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๊ฐ์†Œ

    • ์„œ๋ฒ„์— ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜๋Š” ๋Œ€์‹  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์š”์ฒญํ•˜๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์ด ๊ฐ์†Œํ•œ๋‹ค.
  3. ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๋ถ€ํ•˜ ๊ฐ์†Œ

SPA์˜ ๋‹จ์ 

  1. ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ๊ฐ„(Code Splitting์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ)

    • SPA๋Š” ์ฒ˜์Œ ๋กœ๋”ฉํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์ฒด๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  2. SEO์— ์ทจ์•ฝ(SSR๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ)

    • ์›น ํฌ๋กค๋Ÿฌ๊ฐ€ Javascript๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ•ด์„ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ, ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์ด ์ œ๋Œ€๋กœ ์ƒ‰์ธํ™”(Indexing)๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

SSR vs CSR

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

SSR์˜ ์žฅ์ 

  1. ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ์งง๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ๋น ๋ฅด๊ฒŒ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  2. SEO์— ํšจ์œจ์ ์ด๋‹ค.

SSR์˜ ๋‹จ์ 

  1. ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋ฐ”๊ฟ”์„œ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ™”๋ฉด์ด ๊นœ๋นก์ด๋Š” ํ˜„์ƒ์ด ์žˆ๋‹ค.
  2. ์„œ๋ฒ„์— ๊ณ„์† ์š”์ฒญ์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ปค์ง„๋‹ค.
  3. ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํŒŒ์ผ์„ ๋ฐ›์•„๋…ธ๋Š” ๊ฒƒ์ด ๋Š๋ฆฌ๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋ฌด๋ฆฌ ํด๋ฆญ์„ ํ•ด๋„ ๋ฐ˜์‘ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๊ธฐ๋„ ํ•œ๋‹ค.

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

CSR์˜ ์žฅ์ 

  1. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์ข‹๊ณ , ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ ๋‹ค.
  2. ํ•œ ๋ฒˆ์˜ ๋กœ๋”ฉ ํ›„์—๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜์‘์„ฑ์ด ์ข‹๋‹ค.

CSR์˜ ๋‹จ์ 

  1. ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๊ธธ๋‹ค.
  2. SEO์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์›น ํฌ๋กค๋Ÿฌ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ•ด์„ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ, ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์ด ์ œ๋Œ€๋กœ ์ƒ‰์ธํ™”๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
@leedawn
์•ˆ๋…•ํ•˜์„ธ์š”. ์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ด์ง€ํ˜œ์ž…๋‹ˆ๋‹ค.