CSR SSR ๋จ์ ๋ณด์ ๋ฐฉ๋ฒ ์ ๋ฆฌํด๋ณด๊ธฐ
์ง๋ ์๊ฐ์ CSR, SSR์ ๊ฐ๋ ๊ณผ ์ฅ๋จ์ ์ ๋ํด์ ์ ๋ฆฌํด ๋ณด์๋๋ฐ, ๊ทธ๋ ๋ค๋ฉด ์ด ๋์ ๋จ์ ์ ๊ฐ์ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์๋ ์ด๋ค ๊ฒ๋ค์ด ์๋์ง ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
CSR ๋จ์ ๋ณด์ ๋ฐฉ๋ฒ
๋จผ์ CSR์ ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ์ ๊ณผ SEO๊ฐ ๋ถ๋ฆฌํ๋ค๋ ์ ์ด ๋จ์ ์ด๋ค.
์ด๊ฒ์ ๊ฐ์ ํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ๋ค์ ์ด์ฉํ์ฌ ๊ฐ์ ํ ์ ์๋ค.
1. Code Splitting, Tree-Shaking
์ด ๋ฐฉ๋ฒ๋ค์ ์ด๊ธฐ ๋ก๋ฉ์ ํ์ํ javaScript์ ํฌ๊ธฐ๋ฅผ ์ค์ฌ์ฃผ์ด์ ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ ํ ์ ์๋๋ก ๋ง๋ค์ด์ค๋ค.
Code Splitting์ ๋ง ๊ทธ๋๋ก ์ฝ๋๋ฅผ ์ชผ๊ฐ ๋ค๋ ์๋ฏธ์ด๋ฉฐ, Tree-Shaking์ ๋๋ฌด๋ฅผ ํ๋ค์ด ์ฃฝ์ ๋๋ฌด์์ ๋จ์ดํธ๋ฆฌ๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ฉ์ด์ด๋ค.
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 ์ ํ
์ฆ, ๊ฐ๊ฐ์ ๋ฐฉ๋ฒ์ด ๋ชจ๋ ๋ค๋ฅธ ํน์ฑ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ฌ์ฉํ ํ์ด์ง๊ฐ ์ด๋ค ์ ์ด ํ์ํ์ง๋ฅผ ํ์ ํ์ฌ ๋ฐฉ๋ฒ์ ์ ํํ๋ฉด ๋๋ค.
์ฐธ๊ณ ์๋ฃ