๐Ÿฅž SSR CSR ๋™์  ์ •์  ์›น์‚ฌ์ดํŠธ SPA MPA

KHWยท2021๋…„ 11์›” 22์ผ
0

๋‹ค์–‘ํ•œ ์ง€์‹์Œ“๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
37/48

๐Ÿด ๊ฐœ๋…์ •๋ฆฌ

1. ์ •์ ์›น์‚ฌ์ดํŠธ์™€ ๋™์ ์›น์‚ฌ์ดํŠธ

์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›๋Š” html, css, js๊ฐ€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค

  • ajax ์œ ๋ฌด์™€ ์ƒ๊ด€์—†๋‹ค. ๋‘˜๋‹ค fetch์™€ ๊ฐ™์€ ๊ฒƒ์€ ์‚ฌ์šฉํ•œ๋‹ค.

2. SPA์™€ MPA

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

3. SSR๊ณผ CSR

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

๐Ÿด ์„œ๋ฒ„์˜ ์ข…๋ฅ˜

  1. ๊ธฐ๋ณธ ํ™”๋ฉด๋งŒ์„ ๋ฐ›์•„์˜ฌ ๋•Œ๋Š”
    ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) <-> ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋ฒ„
  2. SSR์„ ํ•  ๋•Œ๋Š”
    ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) <-> ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋ฒ„ <-> ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ <-> DB
  3. CSR์„ ํ•  ๋•Œ๋Š”
    ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) <-> ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋ฒ„
    ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) <-> ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ <-> DB
    ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋ฒ„์™€ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ„์˜ ์—ฐ๊ด€์„ฑ์„ ์—†์• ์ค€๋‹ค.
  • ํ”„๋ก ํŠธ ์„œ๋ฒ„๊ฐ€ ์›น ์„œ๋ฒ„์ด๊ณ  ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋Š” API ์„œ๋ฒ„๋ผ ์ƒ๊ฐ

1. ๊ธฐ๋ณธ ํ™”๋ฉด๋งŒ

๊ทธ๋ƒฅ ํƒœ๊ทธ ์—ฌ๋Ÿฌ๊ฐœ ์“ฐ๊ณ  API์—ฐ๋™ ์—†๋Š” ๊ฐ„๋‹จํ•œ HTML + CSS + JS ๋‚ด์šฉ

2. SSR ํ•  ๋•Œ

๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญํ•œ url์„ ํ†ตํ•ด ์›ํ•˜๋Š” API๋ฅผ ํ”„๋ก ํŠธ ์„œ๋ฒ„๊ฐ€ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ์š”์ฒญํ•˜์—ฌ DB๊นŒ์ง€ ๊ฐ€์„œ ๋ฐ›์•„์˜จ ๋‚ด์šฉ์„ ํ”„๋ก ํŠธ ์„œ๋ฒ„์—์„œ ํ•ฉ์ณ์„œ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ณด๋‚ด์ค€๋‹ค.

3. CSR ํ•  ๋•Œ

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

๐Ÿด ์‚ฌ์ดํŠธ์˜ ์ข…๋ฅ˜

์ •์  ์›น์‚ฌ์ดํŠธ

ํŽธ์˜์ ์—์„œ ๋ฏธ๋ฆฌ ํฌ์žฅ๋ผ์„œ ์ง„์—ด๋œ๊ฑฐ ์‚ฌ๊ฐ€๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๊ณ ์ •๋œ HTML, CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ์ด๋ฏธ์ง€ ๋“ฑ์„ ์„œ๋ฒ„๊ฐ€ ์ค˜๊ฐ€์ง€๊ณ ๋‹ค๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ

  • ์„œ๋ฒ„์— ์ €์žฅ๋˜์–ด์žˆ๋Š” HTML+CSS ํŒŒ์ผ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ
  • ์–ธ์ œ ์ ‘์†ํ•ด๋„ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์‚ฌ์ดํŠธ
    ex) ์†Œ๊ฐœํŽ˜์ด์ง€

๋™์  ์›น์‚ฌ์ดํŠธ

๊ฒŒ์‹œํŒ์ด๋‚˜ ํ†ต๊ณ„ ํŽ˜์ด์ง€์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ ๊ณ„์† ๋ฐ”๋€Œ๋Š” ๋‚ด์šฉ์— ๋”ฐ๋ผ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๊ฐ€ ๊ทธ๋•Œ๊ทธ๋•Œ HTML ๋‚ด์šฉ๋“ค์„ ๋ Œ๋”๋ง , ์š”๋ฆฌํ•ด๋‹ค ๊ฐ–๋‹ค์ฃผ๋Š” JSP๋‚˜ PHP๊ฐ™์€ ๊ฒƒ๋“ค๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ

  • ์„œ๋ฒ„์—์„œ ๋ญ”๊ฐ€ ์žฌ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๊ฒƒ์„ ์„œ๋ฒ„์—์„œ client๋กœ ๋ณด๋‚ด์ฃผ๋Š” ๊ฒƒ
    ex) ์Šคํฌ๋กค ํ• ๋•Œ ์‚ฌ์šฉ์ž์˜ ์Šคํฌ๋กค์„ ํ†ตํ•ด์„œ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ์„œ๋ฒ„์—์„œ ์–ด๋– ํ•œ ์žฌ์ฒ˜๋ฆฌ(A์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ •๋ณด๊ด€๋ จ ๋‚ด์šฉ์„ ๋ฟŒ๋ ค)๋ฅผ ์š”๊ตฌ๋ฐ›์•„ ํŽ˜์ด์ง€๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒƒ

๐Ÿด ์ •์  / ๋™์  ์ฒดํฌ๋ฐฉ๋ฒ•

  • ํ•ด๋‹น ํ†ฑ๋‹ˆ๋ฐ”ํ€ด๋ฅผ ํด๋ฆญ

  • js disable ํด๋ฆญ

์ •์ ์ธ ๋ถ€๋ถ„๊ณผ ๋™์ ์ธ ๋ถ€๋ถ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
(์˜ˆ๋ฅผ๋“ค์–ด ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ €๋Ÿฌํ•œ ๋ฉ”์ผ ์นดํŽ˜ ๋ธ”๋กœ๊ทธ ์ „๋ถ€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ •์ ํŽ˜์ด์ง€ ๋ถ€๋ถ„์ด์ง€๋งŒ
๊ทธ์™ธ์— ๊ฐ€๋ ค์ง„ ๋ถ€๋ถ„์€ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฒฐ๊ณผ(์ด์นด๋ฃจ์Šค๋‹˜ , msk๋‹˜ ๋ฉ”์ผ...)๋ฅผ ๋ฐ›์•„์˜ค๋‹ˆ ๋™์ ํŽ˜์ด์ง€ ๋ถ€๋ถ„์ด๋‹ค. )


์ฒดํฌ๋ฅผ ํ•ด์ œํ•˜๋ฉด ๊ธฐ์กด์€ ์ด์™€๊ฐ™์ด ์กด์žฌํ•œ๋‹ค.

๐Ÿด Next.js (SPA + SSR)

React์— SSR๋กœ ํŽ˜์ด์ง€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์ถ”๊ฐ€
(์‚ฌ์ดํŠธ์˜ ์›ํ•˜๋Š” ๋ถ€๋ถ„์„ SSR๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. )

  • SSR๋กœ ๋Œ๋ฆฌ๋ ค๋ฉด ์ •์  ํŒŒ์ผ๋“ค๋กœ ๋นŒ๋“œํ•ด์„œ ์˜ฌ๋ฆฌ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ Node.js๊ฐ€ ๊น”๋ฆฐ ์„œ๋ฒ„์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์‹คํ–‰ํ•ด์„œ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ฐฐํฌ

Next.js์˜ ์žฅ์ 

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

๐Ÿด ์ถ”๊ฐ€ ์งˆ๋ฌธ์œผ๋กœ ์–ป์€ ๋‚ด์šฉ

  1. ์ •์  ํŽ˜์ด์ง€, ๋™์  ํŽ˜์ด์ง€ ์—ฌ๋ถ€๋Š” ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ํ•ญ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”๊ฐ€์— ๋”ฐ๋ผ ๊ฐˆ๋ฆฝ๋‹ˆ๋‹ค.
    1) ์„œ๋ฒ„๊ฐ€ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋‚˜์˜ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ(ex. ๋„ค์ด๋ฒ„ ๋‰ด์Šค ํŽ˜์ด์ง€)๋Š” ๋™์  ํŽ˜์ด์ง€ ์ž…๋‹ˆ๋‹ค.
    2) github.io์— ์˜ฌ๋ผ๊ฐ„ HTML, CSS์˜ ๊ฒฝ์šฐ ์ƒˆ๋กœ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฉด ๋ฐ”๋€Œ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ •์  ํŽ˜์ด์ง€ ์ž…๋‹ˆ๋‹ค.
  2. CSR, SSR์€ ๋ Œ๋”๋ง ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ •์  ํŽ˜์ด์ง€, ๋™์  ํŽ˜์ด์ง€ ๋‘˜๋‹ค CSR, SSR์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿด ์ถœ์ฒ˜

zerocho
์–„์ฝ”

profile
๋‚˜์˜ ํ•˜๋ฃจ๋ฅผ ๊ฐ€๋Šฅํ•œ ๊ธฐ์–ตํ•˜๊ณ  ์ฆ๊ธฐ๊ณ  ํ›„ํšŒํ•˜์ง€๋ง์ž

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