๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

CSR SSR ๋‹จ์  ๋ณด์™„ ๋ฐฉ๋ฒ• ์ •๋ฆฌํ•ด๋ณด๊ธฐ

by vividmin 2022. 11. 20.
320x100

 

์ง€๋‚œ ์‹œ๊ฐ„์— CSR, SSR์˜ ๊ฐœ๋…๊ณผ ์žฅ๋‹จ์ ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด ๋ณด์•˜๋Š”๋ฐ, ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋‘˜์˜ ๋‹จ์ ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์—๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”์ง€ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

CSR ๋‹จ์  ๋ณด์™„ ๋ฐฉ๋ฒ•

๋จผ์ € CSR์€ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ์ ๊ณผ SEO๊ฐ€ ๋ถˆ๋ฆฌํ•˜๋‹ค๋Š” ์ ์ด ๋‹จ์ ์ด๋‹ค. 
์ด๊ฒƒ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•๋“ค์„ ์ด์šฉํ•˜์—ฌ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. Code Splitting, Tree-Shaking 

์ด ๋ฐฉ๋ฒ•๋“ค์˜ ์ดˆ๊ธฐ ๋กœ๋”ฉ์— ํ•„์š”ํ•œ javaScript์˜ ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์ฃผ์–ด์„œ ๋กœ๋”ฉ ์†๋„๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ค€๋‹ค.
Code Splitting์€ ๋ง ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์ชผ๊ฐ ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฉฐ, Tree-Shaking์€ ๋‚˜๋ฌด๋ฅผ ํ”๋“ค์–ด ์ฃฝ์€ ๋‚˜๋ฌด์žŽ์„ ๋–จ์–ดํŠธ๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด์ด๋‹ค. 

https://crystallize.com/comics/no-code-splitting-vs-code-splitting


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

 

2. Pre-rendering

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

 

3. SSR, SSG ๋„์ž…

SPA๋Š” ์ฃผ๋กœ ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์ด ๋น ๋ฅธ CSR์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, ์—ฌ๊ธฐ์— SSR์ด๋‚˜ SSG๋ฅผ ํ•จ๊ป˜ ์ ์šฉ์‹œํ‚ค๋ฉด CSR์˜ ๋‹จ์ ์„ ์ƒ๋‹น ๋ถ€๋ถ„ ๋ณด์™„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

SSG (Static Stie Generation)๋ž€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐœ๋ฐœ์„ ์™„๋ฃŒํ•˜๊ณ  buildํ•˜๋Š” ์ˆœ๊ฐ„์— ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. ๋ฏธ๋ฆฌ ์„œ๋ฒ„์— ํ™”๋ฉด์„ ์ €์žฅํ•ด ๋‘๊ณ  ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ปจํ…์ธ ๊ฐ€ ๋ณ€ํ™”ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋Š” ์ •์ ์ธ ์„œ๋น„์Šค์— ์ ํ•ฉํ•˜๋‹ค.

 

CSR + SSR / SSG ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

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

1. Next.js

Next.js๋Š” CSR์— ํŠนํ™”๋œ React์—์„œ SSG๋‚˜ SSR์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ค€๋‹ค. ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ SSR๊ณผ SSG๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ ์šฉํ•˜์—ฌ ์šฐ๋ฆฌ์˜ ์•ฑ์„ ์กฐ๊ธˆ ๋” ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๋ชฉ์ ์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.
์ž๋™ ์ฝ”๋“œ ๋ถ„ํ• ์ด๋‚˜  SSG ์บ์‹ฑ์„ ์ด์šฉํ•˜์—ฌ ๋กœ๋”ฉ ์†๋„๋ฅผ ์ค„์—ฌ์ฃผ๊ณ , ์ฒซ ํŽ˜์ด์ง€๋ฅผ SSG๋ฅผ ํ†ตํ•ด ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด ๋‘์–ด SEO ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. CSR์˜ ์žฅ์ ์ธ ๋ฐ˜์‘์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์ ๊ณผ ์„œ๋ฒ„ ๋ถ€๋‹ด์ด ์ ๋‹ค๋Š” ์ ์€ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ, SSR, SSG์˜ ์žฅ์ ๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์–‘ ์ธก์˜ ์žฅ์ ์„ ๋ชจ์•„๋‘” ์•ฑ์ด๋‚˜ ๋ฐฉ์‹์„ Isomorphic App ๋˜๋Š” Universal Redering์ด๋ผ๊ณ  ํ•œ๋‹ค.
ํŠนํžˆ React์—์„œ์˜ Isomorphic App์ด๋ž€  ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ชจ๋‘์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋œ ์›น ์•ฑ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ๊ณผ SEO ์นœํ™”์„ฑ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ์„ ์ฒ˜๋ฆฌํ•ด ์ค€๋‹ค.

(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋”๋ณด๊ธฐ ํด๋ฆญ)

 

 

2. Gatsby

React๋Š” CSR์— ํŠนํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ง€๋งŒ, gatsby์™€ ํ•จ๊ผ ์‚ฌ์šฉ ์‹œ React๋กœ ๋งŒ๋“  ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ •์ ์œผ๋กœ ๋ฏธ๋ฆฌ HTML๋กœ ๋งŒ๋“ค์–ด ์„œ๋ฒ„์— ๋ฐฐํฌํ•ด ๋‘˜ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ CSR + SSG์˜ ํ˜•ํƒœ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์‚ฌ์ดํŠธ๋“ค์ด ๋ชจ๋‘ ์ •์ ์ธ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ฑฐ๋‚˜ ๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋กœ์ง์ด ์žˆ๋‹ค๋ฉด javaScriptํŒŒ์ผ์„ ํ•จ๊ป˜ ๊ฐ€์ง€๊ณ  ์™€์„œ ๋™์ ์ธ ์š”์†Œ๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ ์ด๋Š” ๋ฏธ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๋‘๋Š” ํ˜•ํƒœ์ด๋ฏ€๋กœ ์ฃผ๋กœ ์ปจํ…์ธ ๊ฐ€ ๋ณ€ํ™”๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ์ด ์ ํ•ฉํ•˜๋ฉฐ, ๋ณดํ†ต ๊ธฐ์—… ์†Œ๊ฐœ ํŽ˜์ด์ง€, ๋ธ”๋กœ๊ทธ ๋“ฑ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

(์ž์„ธํ•œ ๋‚ด์šฉ ๋”๋ณด๊ธฐ ํด๋ฆญ)

๋”๋ณด๊ธฐ

 

 

๊ฒฐ๋ก 

 

์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์ด ์กด์žฌํ•˜๋Š”๋ฐ ๋„๋Œ€์ฒด ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ๊ฐ€์žฅ ์ข‹์€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์„๊นŒ?

์ •๋‹ต์€ "์„œ๋น„์Šค์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ ์šฉ๋œ๋‹ค." ์ด๋‹ค.


- ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ๊ณ , ๋Œ€๋ถ€๋ถ„์ด ๊ฐœ์ธ์ •๋ณด๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒฝ์šฐ, ๊ฒ€์ƒ‰์ฐฝ์— ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•ด์„œ SEO๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๐Ÿ‘‰ CSR ์„ ํƒ

- ํšŒ์‚ฌ ํ™ˆํŽ˜์ด์ง€ ๊ฐ™์€ ์ •์ ํŽ˜์ด์ง€์— ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ์ง€ ์•Š์•„์„œ ๋ˆ„๊ตฌ๋‚˜ ๊ฐ™์€ ํŽ˜์ด์ง€๋ฅผ ๋ณด๋Š” ๊ฒฝ์šฐ์ธ๋ฐ ๋งค์ฃผ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๐Ÿ‘‰ SSR ์„ ํƒ

- ์œ„์™€ ๊ฐ™์ด ์ •์  ํŽ˜์ด์ง€๋กœ ์ฃผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์ง€๋งŒ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฑฐ์˜ ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ๐Ÿ‘‰ SSG ์„ ํƒ

- ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ์•„์„œ ์‚ฌ๋žŒ๋งˆ๋‹ค ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์ด ๋‹ฌ๋ผ์ ธ์•ผ ํ•˜๊ณ , ๋น ๋ฅธ ์ธํ„ฐ๋ž™์…˜๊ณผ ํ•จ๊ป˜ ํ™”๋ฉด ๊นœ๋นก์ž„๋„ ์—†์œผ๋ฉด์„œ ์ƒ์œ„ ๋…ธ์ถœ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๐Ÿ‘‰ CSR + SSR ์„ ํƒ

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

 

์ฐธ๊ณ ์ž๋ฃŒ
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€