DEVLOG

CSR๊ณผ SSR์˜ ์ฐจ์ด์ , ์–ธ์ œ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ? ๋ณธ๋ฌธ

frontend/log

CSR๊ณผ SSR์˜ ์ฐจ์ด์ , ์–ธ์ œ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

meroriiDev 2023. 5. 12. 15:54
728x90
๋ฐ˜์‘ํ˜•

 

๐Ÿ“– ๋ชฉ์ฐจ

 

     


    Next.js ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ ์ด์œ ๋ฅผ ์ •๋ฆฌํ•˜๋‹ค๋ณด๋‹ˆ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…๋ถ€ํ„ฐ ๊ณ„์†ํ•ด์„œ ์ •๋ฆฌํ•ด๋‚˜๊ฐ€๊ณ  ์‹ถ์–ด์„œ ๊ธ€์„ ๊ณ„์† ์ž„์‹œ์ €์žฅํ•˜๋ฉฐ ์ƒˆ ๊ธ€์„ ์ž‘์„ฑํ•˜๊ธฐ๊นŒ์ง€ ๋ฒŒ์จ 3๋ฒˆ์งธ ๊ธ€,,,

    CSR๊ณผ SSR์˜ ์ฐจ์ด๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

     

    ๐Ÿ’ก ๋ Œ๋”๋ง์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

    CSR : Client Side Rendering
    SSR : Server Side Rendering

    CSR๊ณผ SSR,,,
    ๋ Œ๋”๋ง ๋ฐฉ์‹์˜ ์ฐจ์ด์ ์ด๋ž€ ๊ฒƒ์€ ์•Œ๊ฒ ๋Š”๋ฐ ๊ทธ๋ ‡๋‹ค๋ฉด ๋ Œ๋”๋ง์ด๋ž€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”๊ฑธ๊นŒ?

    ๋จผ์ € ๋ Œ๋”๋ง์ด๋ž€, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‚ด์šฉ์„ ๋ฐ›์•„ ๋ธŒ๋ผ์šฐ์ €์— ๋ฟŒ๋ ค์ฃผ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
    HTML, CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋“ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ฌธ์„œ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ถœ๋ ฅ๋˜๋Š” ๊ณผ์ •์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

     

    ๋ Œ๋”๋ง๊ณผ์ •

    • Loader ๊ฐ€ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์ •๋ณด๋“ค์„ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
    • ํŒŒ์‹ฑ์„ ํ†ตํ•ด ๋ฌธ์„œ๋ฅผ DOM(Document Object Model), CSSOM(CSS Object Model)์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • DOM๊ณผ CSSOM์„ ์ด์šฉํ•˜์—ฌ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ ˆ์ด์•„์›ƒ ์œ„์น˜ ์ง€์ •
    • ๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„๊ฐ€ ๋๋‚˜๋ฉด ๋ Œ๋”ํŠธ๋ฆฌ๊ฐ€ ํ™”๋ฉด์— ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค.

    ๋ Œ๋”๋ง์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋‹ค๊ฐ€ ์•Œ๊ฒŒ๋œ๊ฑด๋ฐ,,
    ๋ Œ๋”๋ง์ด ์™„๋ฃŒ๋œ ์ƒํƒœ์—์„œ ์‚ฌ์šฉ์ž์˜ ์ธํ„ฐ๋ž™์…˜์— ์˜ํ•ด ํ™”๋ฉด์˜ ์ผ๋ถ€ ์˜์—ญ์ด ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด, ๋ฆฌํ”Œ๋กœ์šฐ ๋˜๋Š” ๋ฆฌํŽ˜์ธํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ ๋ Œ๋”๋ง๊ณผ ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ๋Œ€ํ•œ ๊ธ€์ด ์ž˜ ์ •๋ฆฌ๋˜์–ด์žˆ๋Š” ๋ธ”๋กœ๊ทธ์—์„œ ํ•œ๋ฒˆ์ฏค ์ฝ์–ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค :)

    ๊ทธ๋ ‡๋‹ค๋ฉด CSR ๊ณผ SSR์€ ์ด๋Ÿฌํ•œ ๋ Œ๋”๋ง ๋ฐฉ์‹์— ์–ด๋–ค ๋ถ€๋ถ„์ด ๋‹ค๋ฅด๊ณ  ์–ด๋–ค ์žฅ๋‹จ์ ์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


    ๐Ÿ’ก CSR (Client Side Rendering)

    CSR์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ Œ๋”๋ง์„ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ํด๋ผ์ด์–ธํŠธ์— HTML๊ณผ JS๋ฅผ ๋ณด๋‚ด์ฃผ๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ๊ทธ๊ฒƒ์„ ๋ฐ›์•„ ๋ Œ๋”๋ง์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    CSR์€ ์ฒซ ๋กœ๋”ฉ์‹œ์— ํŽ˜์ด์ง€๋ฅผ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜จ ํ›„ ์‚ฌ์šฉ์ž์˜ ํ–‰๋™์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์„œ ์ „์ฒด ๋ฆฌ๋กœ๋”ฉ ์—†์ด ํ™”๋ฉด์„ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

    ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•Œ๊ณ ์žˆ๋Š” SPA(REACT)๋Š” CSR๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

    CSR๋ฐฉ์‹ ์ง„ํ–‰๊ณผ์ •

    1. User๊ฐ€ Website ์š”์ฒญ์„ ๋ณด๋ƒ„.
    2. CDN์ด HTML ํŒŒ์ผ๊ณผ JS๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๋ฅผ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ธ๋‹ค.
    3. ํด๋ผ์ด์–ธํŠธ๋Š” HTML๊ณผ JS๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค. (์ด๋•Œ SSR๊ณผ ๋‹ฌ๋ฆฌ ์œ ์ €๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ณผ ์ˆ˜ ์—†๋‹ค.)
    4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋ฐ›๋Š”๋‹ค.
    5. ๋‹ค์šด์ด ์™„๋ฃŒ๋œ JS๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ API๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. (์ด๋•Œ ์œ ์ €๋“ค์€ placeholder๋ฅผ ๋ณด๊ฒŒ๋œ๋‹ค.)
    6. ์„œ๋ฒ„๊ฐ€ API๋กœ๋ถ€ํ„ฐ์˜ ์š”์ฒญ์— ์‘๋‹ตํ•œ๋‹ค.
    7. API๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ data๋ฅผ placeholder ์ž๋ฆฌ์— ๋„ฃ์–ด์ค€๋‹ค. ์ด์ œ ํŽ˜์ด์ง€๋Š” ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

    ์žฅ์ 

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

     

    ๋‹จ์ 

    • ์ดˆ๊ธฐ์— ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋ฐ›์•„์™€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ Œ๋”๋งํ•˜๊ธฐ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ๊ตฌ๋™์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.
    • ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”(SEO)๊ฐ€ ์–ด๋ ต๋‹ค.

     

    ๐Ÿ’ก SSR (Server Side Rendering)

    SSR์€ ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง์„ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋‹ค์‹œ๋งํ•ด ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ํŽ˜์ด์ง€๋ฅผ ๋ชจ๋‘ ๊ตฌ์„ฑํ•œ ํ›„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

     

    SSR๋ฐฉ์‹ ์ง„ํ–‰๊ณผ์ •

    1. User๊ฐ€ Website ์š”์ฒญ์„ ๋ณด๋ƒ„.
    2. Server๋Š” 'Ready to Render'. ์ฆ‰, ์ฆ‰์‹œ ๋ Œ๋”๋ง ๊ฐ€๋Šฅํ•œ htmlํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค.
      (๋ฆฌ์†Œ์Šค ์ฒดํฌ, ์ปดํŒŒ์ผ ํ›„ ์™„์„ฑ๋œ HTML ์ปจํ…์ธ ๋กœ ๋งŒ๋“ ๋‹ค.)
    3. ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ๋˜๋Š” ์ˆœ๊ฐ„, ์ด๋ฏธ ๋ Œ๋”๋ง ์ค€๋น„๊ฐ€ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— HTML์€ ์ฆ‰์‹œ ๋ Œ๋”๋ง ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์ดํŠธ ์ž์ฒด๋Š” ์กฐ์ž‘ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. (Javascript๊ฐ€ ์ฝํžˆ๊ธฐ ์ „์ด๋‹ค.)
    4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋ฐ›๋Š”๋‹ค.
    5. ๋‹ค์šด ๋ฐ›์•„์ง€๊ณ  ์žˆ๋Š” ์‚ฌ์ด์— ์œ ์ €๋Š” ์ปจํ…์ธ ๋Š” ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ์ดํŠธ๋ฅผ ์กฐ์ž‘ ํ•  ์ˆ˜๋Š” ์—†๋‹ค. ์ด๋•Œ์˜ ์‚ฌ์šฉ์ž ์กฐ์ž‘์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š”๋‹ค.
    6. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ Javascript ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
    7. JS๊นŒ์ง€ ์„ฑ๊ณต์ ์œผ๋กœ ์ปดํŒŒ์ผ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋˜ ์‚ฌ์šฉ์ž ์กฐ์ž‘์ด ์‹คํ–‰๋˜๊ณ  ์ด์ œ ์›น ํŽ˜์ด์ง€๋Š” ์ƒํ˜ธ์ž‘์šฉ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

     

    ์žฅ์ 

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

    ๋‹จ์ 

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

     

    ๐Ÿ’ก CSR vs SSR

    ๐Ÿ‘๐Ÿป SSR๊ฐ€ ์ข‹์•„์š”

    • SEO(serach engine optimization : ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”)๊ฐ€ ํ•„์š”ํ•  ๋•Œ
    • ๋„คํŠธ์›Œํฌ๊ฐ€ ๋Š๋ฆด ๋•Œ (CSR์€ ํ•œ๋ฒˆ์— ๋ชจ๋“  ๊ฒƒ์„ ๋ถˆ๋Ÿฌ์˜ค์ง€๋งŒ SSR์€ ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค ๋‚˜๋ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ)
    • ์ตœ์ดˆ ๋กœ๋”ฉ์ด ๋นจ๋ผ์•ผํ•˜๋Š” ์‚ฌ์ดํŠธ๋ฅผ ๊ฐœ๋ฐœ ํ•  ๋•Œ
    • ๋ฉ”์ธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌ๊ณ  ๋กœ๋”ฉ์ด ๋งค์šฐ ๋Š๋ฆด ๋•Œ
      CSR์€ ๋ฉ”์ธ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋กœ๋”ฉ์ด ๋๋‚˜๋ฉด API๋กœ ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. ํ•˜์ง€๋งŒ SSR์€ ํ•œ๋ฒˆ์˜ ์š”์ฒญ์— ์•„์˜ˆ ๋ Œ๋”๊ฐ€ ๊ฐ€๋Šฅํ•œ ํŽ˜์ด์ง€๊ฐ€ ๋Œ์•„์˜จ๋‹ค.
    • ์›น ์‚ฌ์ดํŠธ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉ์ด ๋ณ„๋กœ ์—†์„ ๋•Œ

    ๐Ÿ‘๐Ÿป CSR์ด ์ข‹์•„์š”

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




    ์ฐธ๊ณ 
    https://velog.io/@vagabondms/%EA%B8%B0%EC%88%A0-%EC%8A%A4%ED%84%B0%EB%94%94-SSR%EA%B3%BC-CSR%EC%9D%98-%EC%B0%A8%EC%9D%B4

    728x90
    ๋ฐ˜์‘ํ˜•
    Comments