CSR (Client-Side Rendering)
๋ช ์ฌ ยท ์น ์ํคํ ์ฒ
๋ธ๋ผ์ฐ์ ๊ฐ ์ต์ํ์ JavaScript ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ด๋ก๋ํ ํ DOM์์ ์ ์ฒด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋์ ์ผ๋ก ๊ตฌ์ฑํ๋ ํด๋ผ์ด์ธํธ ์ธก ๋ ๋๋ง ๊ธฐ์ โ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๊ฒฌ๋๋ ๋ถ๋๋ฌ์ด ์ธํฐ๋ํฐ๋ธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋ฒ๊ฐ ๊ฑฐ์ ๋น HTML ํ์ด์ง์ ํจ๊ป ๋ผ์ฐํ , ๋ ๋๋ง ๋ฐ ์ํ ๊ด๋ฆฌ๋ฅผ ์ ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์์ ์ฒ๋ฆฌํ๋ JavaScript ๋ฒ๋ค์ ์ ์กํ๋ React ๋ฐ Single Page Applications(SPA)์ ํ์ค ์น ์ํคํ ์ฒ์ ๋๋ค.
SEO๊ฐ ๋ถ์ฐจ์ ์ด๊ณ ์ธํฐํ์ด์ค์ ๋ฐ์์ฑ์ด ์ต์ฐ์ ์ธ ๋น์ฆ๋์ค ์ ํ๋ฆฌ์ผ์ด์ , ๋์๋ณด๋ ๋ฐ ์ธ์ฆ ๋ค์ ์ธํฐํ์ด์ค์ ์ ํธ๋๋ ๋ ๋๋ง ๋ชจ๋ธ์ ๋๋ค.
CSR(Client-Side Rendering)์ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๊ฐ JavaScript ํ์ผ์ ๋ค์ด๋ก๋ํ ํ DOM์์ ์ง์ ํ์ด์ง ์ธํฐํ์ด์ค๋ฅผ ๋์ ์ผ๋ก ๊ตฌ์ฑํ๋ ์น ๋ ๋๋ง ๊ธฐ์ ์ ๋๋ค. ์๋ฒ๋ ์คํฌ๋ฆฝํธ ๋ก๋ฉ ํ๊ทธ๋ง ํฌํจํ ์ต์ํ์ HTML ํ์ด์ง๋ง ์ ์กํฉ๋๋ค. ์ด๋ React์ ๊ธฐ๋ณธ ๋์ ๋ฐฉ์์ด๋ฉฐ, ์ ํฌ ์์ด์ ์๋ ๊ฒ์ ์์ง ์ต์ ํ๋ณด๋ค ํ์ ์ ๋์ฑ๊ณผ ์ธํฐํ์ด์ค ๋ฐ์์ฑ์ด ์ฐ์ ์๋๋ ์ธํฐ๋ํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
CSR์ ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด ํ๋ถํ ์ธํฐ๋์ ์ ์ฒ๋ฆฌํ๋ ๋ฅ๋ ฅ ๋๋ถ์ ๋ณต์กํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํฉ๋๋ค: ์ค์๊ฐ ์ ๋ฐ์ดํธ, ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์ , Redux๋ฅผ ํตํ ์ ๊ตํ ์ํ ๊ด๋ฆฌ ๋ฐ ๋ทฐ ๊ฐ ์ฆ๊ฐ์ ์ธ ์ ํ์ ๋๋ค. ๋ชจ๋ ๋ ๋๋ง์ด ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฃจ์ด์ง๋ฏ๋ก ์๋ฒ ๋ถํ๊ฐ ์ค์ด๋ค์ด ์ธํ๋ผ ๋น์ฉ์ด ๊ฐ์ํฉ๋๋ค. ์ ํฌ ์์ด์ ์๋ ๋์๋ณด๋, ๋น์ฆ๋์ค ๋๊ตฌ, ์จ๋ผ์ธ ํธ์ง๊ธฐ ๋ฐ ๋ค์ดํฐ๋ธ ์ํํธ์จ์ด์ ๋น๊ฒฌ๋๋ ์ฌ์ฉ์ ๊ฒฝํ์ด ํ์ํ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ CSR์ ๊ถ์ฅํฉ๋๋ค.
CSR์ ์ธ๋ฑ์ฑ ๋ก๋ด์ด ์ฒ์์ ๊ฑฐ์ ๋น HTML ํ์ด์ง๋ฅผ ์์ ํ๊ณ ์ฝํ ์ธ ๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์ํด JavaScript๋ฅผ ์คํํด์ผ ํ๋ฏ๋ก SEO์ ์ด๋ ค์์ด ์์ต๋๋ค. Googlebot์ด JavaScript๋ฅผ ๋ ๋๋งํ ์ ์์ง๋ง, ์ด ๊ณผ์ ์ ์ฌ์ ๋ ๋๋ง๋ HTML ์ธ๋ฑ์ฑ๋ณด๋ค ๋๋ฆฌ๊ณ ๋ ์์ ์ ์ ๋๋ค. ์ ํฌ ์์ด์ ์๋ Next.js๋ฅผ ํ์ฉํ ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ๋ฅผ ์ฑํํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค: ๋น๊ณต๊ฐ ์ธํฐ๋ํฐ๋ธ ์น์ ์๋ CSR, ์ต์ ์ ๊ฒ์ ์์ง ์์๊ฐ ํ์ํ ๊ณต๊ฐ ํ์ด์ง์๋ SSR ๋๋ SSG๋ฅผ ์ ์ฉํฉ๋๋ค.
CSR์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ณต์กํ ์ค์๊ฐ ์ธํฐ๋์ , ์ฌ์ฉ์๋ณ ๊ฐ์ธํ๋ ์ฝํ ์ธ , ๋๋ ๋ค๋จ๊ณ ์์, ๋น์ฃผ์ผ ํธ์ง๊ธฐ, ๋ถ์ ๋์๋ณด๋์ ๊ฐ์ ํ๋ถํ ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ฅ์ด ํ์ํ ๋ SSG๋ณด๋ค ๋ซ์ต๋๋ค. SSG๋ ์ ์ ๊ณต๊ฐ ์ฝํ ์ธ ์ ์ ํฉํ๊ณ , CSR์ ๋์ ์ด๊ณ ๊ฐ์ธํ๋ ๊ฒฝํ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ์ ํฌ ์์ด์ ์๋ ๋น์ฆ๋์ค ๋ชฉํ์ ๊ฐ์ฅ ์ ํฉํ ๋ ๋๋ง ์ ๋ต์ ์ ์ฉํ๊ธฐ ์ํด ๊ฐ ํ์ด์ง๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ํ๊ฐํฉ๋๋ค.
CSR ์ ํ๋ฆฌ์ผ์ด์ ์ต์ ํ๋ ๊ฐ ํ์ด์ง์ ํ์ํ JavaScript๋ง ๋ก๋ํ๋ ์ฝ๋ ์คํ๋ฆฌํ , ๋ฌด๊ฑฐ์ด ์ปดํฌ๋ํธ์ ์ง์ฐ ๋ก๋ฉ, Service Worker๋ฅผ ํตํ ์ค๋งํธ ์บ์ฑ ๋ฐ ๋ฒ๋ค ์์ถ์ ๊ธฐ๋ฐํฉ๋๋ค. ์ด๊ธฐ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒ์ด First Contentful Paint์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ ํฌ ์์ด์ ์๋ Webpack์ ํธ๋ฆฌ ์์ดํน ๋ฐ ์์กด์ฑ ์ต์ ํ์ ๊ฒฐํฉํ ์ด๋ฌํ ๊ณ ๊ธ ๊ธฐ์ ์ ์ฒด๊ณ์ ์ผ๋ก ์ ์ฉํ์ฌ ๋ณดํต ์์ค์ ๋คํธ์ํฌ์์๋ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ CSR ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์ฅํฉ๋๋ค.
CSR์ ์๋ก๊ณ ์นจ ์๋ ์ฆ๊ฐ์ ์ธ ํ์ด์ง ์ ํ, ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์ ๋ฐ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๊ฒฌ๋๋ ์ธํฐ๋ํฐ๋ธ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ ํ์ ํฉ๋๋ค. ์ฌ์ฉ์๋ ๋ชจ๋ ๋์์ ์ฆ๊ฐ์ ์ธ ์๊ฐ์ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋ ๋ฐ์ํ ์ธํฐํ์ด์ค์์ ํ์ํฉ๋๋ค. ๋ค๋ง ์ด๊ธฐ ๋ก๋ฉ์ด SSR๋ณด๋ค ๊ธธ ์ ์์ต๋๋ค. ์ ํฌ ์์ด์ ์๋ ์ฐ์ํ ๋ก๋ฉ ์ค์ผ๋ ํค๊ณผ ์ง๋ฅํ ํ๋ฆฌํ์น๋ฅผ ๊ตฌํํ์ฌ ์ฌ์ฉ์๊ฐ ์ฒซ ์๊ฐ๋ถํฐ ๋น ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ ์ ์๋๋ก ์ด ์ ์ถฉ์ ์ ์ต์ ํํฉ๋๋ค.
๋ฌผ๋ก ์ด๋ฉฐ, ์ด๊ฒ์ด ๋ฐ๋ก Next.js์ ๊ฐ์ ์ ๋๋ค. ์ด ํ๋ ์์ํฌ๋ ํ์ด์ง๋ณ๋ก ๋ ๋๋ง ์ ๋ต์ ์ ์ํ ์ ์์ต๋๋ค: SEO ๋๋ฉ ํ์ด์ง์๋ SSR, ๋ธ๋ก๊ทธ์๋ SSG, ์ฌ์ฉ์ ๋์๋ณด๋์๋ CSR. ์ด ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ ๋ฐฉ์์ ์ ํฌ ์์ด์ ์๊ฐ ๊ณ ๊ฐ์๊ฒ ๋ฐฐํฌํ๋ ์ํคํ ์ฒ์ ํต์ฌ์ ๋๋ค. ๊ฐ ํ์ด์ง๋ ์ฑ๋ฅ์ ๊ทน๋ํํ๊ณ ํน์ ๋ชฉํ์ ๋ถํฉํ๋ ๋ ๋๋ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉฐ, ๋ชจ๋ ํ๋์ ํตํฉ๋๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ ํ๋ก์ ํธ ๋ด์์ ์ด๋ฃจ์ด์ง๋๋ค.
์๋ชป๋ CSR ๊ตฌํ์ ๋ก๋ฉ์ ๋ง๋น์ํค๋ ๊ณผ๋ํ JavaScript ๋ฒ๋ค, ์ํ ๊ด๋ฆฌ ์ํ๋ก ์ธํ ๋ฉ๋ชจ๋ฆฌ ๋์, ๊ณต๊ฐ ํ์ด์ง์ SEO ๋ถ์ฌ ๋ฐ ์ ๊ทผ์ฑ ์ ํ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ๋๋ฆฐ ๋คํธ์ํฌ์์์ '๋ฌดํ ์คํผ๋'๋ ์๋ชป ์ค๊ณ๋ CSR์ ๊ฐ์ฅ ๋์ ๋๋ ์ฆ์์ ๋๋ค. ์ ํฌ ์์ด์ ์๋ ์๊ฒฉํ Redux ์ํคํ ์ฒ, ์ง์์ ์ธ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋ฐ ๋งค ๋ฐฐํฌ๋ง๋ค ์ฒด๊ณ์ ์ธ Lighthouse ๊ฐ์ฌ๋ฅผ ํตํด ์ด๋ฌํ ํจ์ ์ ๋ฐฉ์งํฉ๋๋ค.
๊ธฐ๋ณธ CSR์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋นํ JavaScript ๋ฒ๋ค์ ๋ค์ด๋ก๋, ํ์ฑ, ์คํํด์ผ๋ง ๋ฌด์ธ๊ฐ๋ฅผ ํ์ํ ์ ์์ผ๋ฏ๋ก ๋๋ฆฐ ๋ชจ๋ฐ์ผ ๋คํธ์ํฌ์์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ๊ทน์ ์ธ ์ฝ๋ ์คํ๋ฆฌํ , ์คํ๋ผ์ธ ์บ์๋ฅผ ์ํ Service Worker, Brotli ์์ถ ๋ฐ ์ ํ์ ํ๋ฆฌํ์น์ ๊ฐ์ ์ ์ ํ ์ต์ ํ๋ฅผ ํตํด CSR ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ชจ๋ฐ์ผ ์ฑ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ ํฌ ์์ด์ ์๋ 3G๋ฅผ ํฌํจํ ๋ชจ๋ ๋คํธ์ํฌ์์ ๋ถ๋๋ฌ์ด ๊ฒฝํ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ด๋ฌํ ๊ธฐ์ ์ ์ ์ฉํฉ๋๋ค.
์ ํฌ ์์ด์ ์๋ React์ Redux๋ฅผ ํ์ฉํ CSR์ ์๋ ๊ฐ์ ์ ๋ฌธ์ฑ์ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ, ๋ฒ๋ค ์ต์ ํ, ๋ณต์กํ ์ํ ๊ด๋ฆฌ ๋ฐ Next.js๋ฅผ ํตํ ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ์ ํนํ๋์ด ์์ต๋๋ค. CSR์ ๋ฐ์์ฑ๊ณผ SSR์ SEO ์ฑ๋ฅ์ ํํ ์์ด ๊ฒฐํฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํฉ๋๋ค. ๋ชจ๋ ํ๋ก์ ํธ์ ํตํฉ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง, ํ์ฅ ๊ฐ๋ฅํ ์ํคํ ์ฒ ๋ฐ ์ฅ๊ธฐ์ ์ผ๋ก ์ ์ง๋ณด์ ๊ฐ๋ฅํ ์ฝ๋๊ฐ ํฌํจ๋์ด ๋น์ฆ๋์ค์ ์ง์ ๊ฐ๋ฅํ ํฌ์ ์์ต๋ฅ ์ ๋ณด์ฅํฉ๋๋ค.