์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์ด๊ณ ์ ์ ์ง์ ํ์ด์ง ๋ก๋ฉ๊ณผ ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ํ์ํด ๋ณด์ธ์. ์ฅ์ , ๊ณผ์ , ๊ทธ๋ฆฌ๊ณ ๊ตฌํ ์ ๋ต์ ์์๋ด ๋๋ค.
ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR: ์ ์ง์ ํ์ด์ง ๋ก๋ฉ์ ๋ฏธ๋
์ค๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ๋์งํธ ์ธ์์์ ์น ์ฑ๋ฅ์ ๋ํ ์ฌ์ฉ์๋ค์ ๊ธฐ๋์น๋ ์ฌ์ ์ต๊ณ ์์ค์ ๋๋ค. ๋ฐฉ๋ฌธ์๋ค์ ์ฝํ ์ธ ์ ์ฆ์ ์ ๊ทผํ๊ธฐ๋ฅผ ์ํ๋ฉฐ, ๋๋ฆฌ๊ฒ ๋ก๋ฉ๋๋ ์น์ฌ์ดํธ๋ ์๋นํ ๋ถํธํจ, ์ฐธ์ฌ๋ ํ๋ฝ, ๊ทธ๋ฆฌ๊ณ ๊ถ๊ทน์ ์ผ๋ก๋ ์ ํ์จ ๊ฐ์๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ํ๋ถํ ์ํธ์์ฉ์ ์ ๊ณตํ๋ ์ ํต์ ์ธ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง ๋ฐฉ์์ผ๋ก ์ธํด ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ ์ด๋ ค์์ ๊ฒช๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)์ด ๋ ๋น ๋ฅธ ์ด๊ธฐ ํ์ธํธ๋ฅผ ์ ๊ณตํ๋ ํด๊ฒฐ์ฑ ์ผ๋ก ๋ฑ์ฅํ์ต๋๋ค. ํ์ง๋ง ์ ํต์ ์ธ SSR์กฐ์ฐจ๋ ๋ณ๋ชฉ ํ์์ ์ผ์ผํฌ ์ ์์ต๋๋ค. ๋ฐ๋ก ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(Streaming SSR)์ด ๋ฑ์ฅํ๋ ์ง์ ์ ๋๋ค. ์ด๋ ์ ์ง์ ํ์ด์ง ๋ก๋ฉ์ ์ฌ์ ์ํ๊ณ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ๊ฒ์ ์ฝ์ํ๋ ํ์ ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
์น ๋ ๋๋ง ์ ๋ต์ ์งํ: ํด๋ผ์ด์ธํธ ์ฌ์ด๋์์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง๊น์ง
์คํธ๋ฆฌ๋ฐ SSR์ ์ํฅ์ ์์ ํ ์ดํดํ๊ธฐ ์ํด, ์น ๋ ๋๋ง ์ ๋ต์ ์งํ๋ฅผ ๊ฐ๋ตํ ๋์ง์ด ๋ณด๊ฒ ์ต๋๋ค:
ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง(CSR)
์ผ๋ฐ์ ์ธ CSR ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ฒ๋ ์ต์ํ์ HTML ํ์ผ๊ณผ ํฐ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ ๋ณด๋ ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์คํํ๊ณ UI๋ฅผ ๋ ๋๋งํฉ๋๋ค. ์ด๋ ๋งค์ฐ ์ํธ์์ฉ์ ์ด๊ณ ๋์ ์ธ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ง๋ง, ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ค์ด๋ก๋๋๊ณ ์ฒ๋ฆฌ๋ ๋๊น์ง ๋น ํ๋ฉด์ด๋ ๋ก๋ฉ ์คํผ๋๊ฐ ํ์๋์ด ์ข์ง ์์ FCP(First Contentful Paint)์ LCP(Largest Contentful Paint)๋ฅผ ์ด๋ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)
SSR์ ์๋ฒ์์ HTML์ ๋ ๋๋งํ์ฌ ๋ธ๋ผ์ฐ์ ๋ก ์ ์กํจ์ผ๋ก์จ ์ด๊ธฐ ๋ก๋ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฝํ ์ธ ๋ฅผ ํจ์ฌ ๋นจ๋ฆฌ ํ์ํ ์ ์๊ฒ ํ์ฌ FCP์ LCP๋ฅผ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ํต์ ์ธ SSR์ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฒด ํ์ด์ง๊ฐ ์๋ฒ์์ ๋ ๋๋ง๋ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์์ ํ HTML์ ์ ์กํฉ๋๋ค. ๋ง์ฝ ํ์ด์ง๊ฐ ๋ณต์กํ๊ฑฐ๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ๋๋ฆฌ๋ค๋ฉด, ์ด๋ ์ฌ์ ํ ์ง์ฐ์ ์ ๋ฐํ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์๋ ์ํธ์์ฉํ๊ธฐ ์ ์ ์ ์ฒด ํ์ด์ง๊ฐ ์ค๋น๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ด๋ ๋ฌด์์ธ๊ฐ?
ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ๊ณ ๊ธ ํํ๋ก, ์๋ฒ๊ฐ ์ ์ฒด ํ์ด์ง๊ฐ ๋ ๋๋ง๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ HTML ์ฒญํฌ(chunk)๋ฅผ ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ผ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ์นํ์ด์ง์ ๋ค๋ฅธ ๋ถ๋ถ๋ค์ด ๋ค๋ฅธ ์๊ฐ์ ๋ก๋๋๊ณ ์ํธ์์ฉ ๊ฐ๋ฅํด์ ธ ๋ ์ ๋์ ์ด๊ณ ์ ์ง์ ์ธ ๋ก๋ฉ ๊ฒฝํ์ ๋ง๋ค์ด๋ธ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ์ด์ปค๋จธ์ค ์ํ ํ์ด์ง๋ฅผ ์์ํด ๋ณด์ธ์. ์คํธ๋ฆฌ๋ฐ SSR์ ์ฌ์ฉํ๋ฉด ํค๋์ ๋ด๋น๊ฒ์ด์ ์ด ๋จผ์ ๋ก๋๋๊ณ , ๊ทธ ๋ค์์ผ๋ก ์ํ ์ด๋ฏธ์ง์ ์ ๋ชฉ, ์ํ ์ค๋ช , ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก "์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธฐ" ๋ฒํผ๊ณผ ๊ด๋ จ ์ํ์ด ๋ก๋๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฐ ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ผ๋ก ์คํธ๋ฆฌ๋ฐ๋ ์ ์์ด, ์ฌ์ฉ์๋ค์ด ๋ค๋ฅธ ๋ถ๋ถ์ด ์์ง ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ ๋๋ง๋๋ ๋์ ํ์ด์ง์ ์ผ๋ถ๋ฅผ ๋ณด๊ณ ์ํธ์์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ํต์ฌ ์ด์
ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ์ฑํํ๋ ๊ฒ์ ์ฅ์ ์ ์๋นํ๋ฉฐ ์ฌ์ฉ์ ๋ง์กฑ๋์ ๋น์ฆ๋์ค ์ฑ๊ณผ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค:
1. ๊ทน์ ์ผ๋ก ํฅ์๋ ์ฒด๊ฐ ์ฑ๋ฅ
์ด๊ฒ์ด ์๋ง๋ ๊ฐ์ฅ ์ค์ํ ์ด์ ์ผ ๊ฒ์ ๋๋ค. ์ฝํ ์ธ ๋ฅผ ์คํธ๋ฆฌ๋ฐํจ์ผ๋ก์จ ์ฌ์ฉ์๋ ํ์ด์ง์ ์คํ ๊ฐ๋ฅํ ๋ถ๋ถ๋ค์ ํจ์ฌ ๋นจ๋ฆฌ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์์ ํ ๋ก๋๋ ํ์ด์ง๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์ค์ฌ์ฃผ์ด, ๋ชจ๋ ๊ฒ์ ๋ก๋ํ๋ ์ด ์๊ฐ์ด ๋น์ทํ๋๋ผ๋ ๋ ๋์ ์ฒด๊ฐ ์ฑ๋ฅ์ผ๋ก ์ด์ด์ง๋๋ค. ์ด๋ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด๊ณผ ์ง์ฐ ์๊ฐ์ ๊ฒฝํํ ์ ์๋ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
2. ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ(UX)
์ ์ง์ ์ผ๋ก ๋ก๋ฉ๋๋ ํ์ด์ง๋ ๋ ๋ฐ์์ด ๋น ๋ฅด๊ณ ๋งค๋ ฅ์ ์ผ๋ก ๋๊ปด์ง๋๋ค. ์ฌ์ฉ์๋ค์ ์์๋ค์ด ๋ํ๋๋ ๋๋ก ์ํธ์์ฉ์ ์์ํ ์ ์์ด, ๋ฉ์ถ๊ฑฐ๋ ๋น ํ๋ฉด๊ณผ ๊ด๋ จ๋ ๋ถํธํจ์ ๋ฐฉ์งํฉ๋๋ค. ์ด ๊ฐ์ ๋ UX๋ ๋ ๋์ ์ฐธ์ฌ์จ, ๋ฎ์ ์ดํ๋ฅ , ๊ทธ๋ฆฌ๊ณ ์ฆ๊ฐ๋ ๊ณ ๊ฐ ์ถฉ์ฑ๋๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
3. ๋ ๋์ SEO ์ฑ๋ฅ
๊ฒ์ ์์ง ํฌ๋กค๋ฌ๋ ์ฝํ ์ธ ๊ฐ ์ ์ง์ ์ผ๋ก ์คํธ๋ฆฌ๋ฐ๋ ๋ ๋ ๋น ๋ฅด๊ฒ ์ ๊ทผํ๊ณ ์ธ๋ฑ์ฑํ ์ ์์ต๋๋ค. ์ฝํ ์ธ ๊ฐ ํฌ๋กค๋ง์ ์ํด ๋ ์ผ์ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ก SEO์ ๋ ์ข์ต๋๋ค. ๊ฒ์ ์์ง์ ์ข์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ์น์ฌ์ดํธ๋ฅผ ์ ํธํ๋ฉฐ, ๋ ๋น ๋ฅด๊ณ ์ ์ง์ ์ธ ๋ก๋ฉ์ ์ด์ ์ง์ ์ ์ผ๋ก ๊ธฐ์ฌํฉ๋๋ค.
4. ํจ์จ์ ์ธ ๋ฆฌ์์ค ํ์ฉ
์คํธ๋ฆฌ๋ฐ SSR์ ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฒญํฌ๋ก ๋ณด๋ผ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ํนํ ๋๋ฆฐ ์ฐ๊ฒฐ์ด๋ ์ธํ๋ผ๊ฐ ์ ํ๋ ์ง์ญ์ ์ฌ์ฉ์๋ค์๊ฒ ์๋ฒ ๋ฆฌ์์ค์ ๋คํธ์ํฌ ๋์ญํญ์ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
5. ์ํธ์์ฉ๊น์ง์ ์๊ฐ(TTI) ๊ฐ์
์ง์ ์ ์ธ ๋ชฉํ๋ ์๋์ง๋ง, ํ์ด์ง์ ์ผ๋ถ๊ฐ ๋ก๋๋จ์ ๋ฐ๋ผ ์ํธ์์ฉํ ์ ์๋ ๋ฅ๋ ฅ์ ๋ ๋์ TTI์ ๊ธฐ์ฌํฉ๋๋ค. ์ฌ์ฉ์๋ค์ ์ ์ฒด ํ์ด์ง์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ์ฑ๋๊ณ ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ ๋งํฌ๋ฅผ ํด๋ฆญํ๊ฑฐ๋, ์์์ ์์ฑํ๊ฑฐ๋, ์ฝํ ์ธ ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ์๋ ์๋ฆฌ
ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ํต์ฌ ๋ฉ์ปค๋์ฆ์ ์ ๋ฌธํ๋ ์๋ฒ ์ํคํ ์ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ํ์ด๋๋ ์ด์ ์ ๋ต์ ํฌํจํฉ๋๋ค. React์ React Server Components (RSC)์ HTTP/2 ์คํธ๋ฆฌ๋ฐ์ ์ํ undici์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
์ด ๊ณผ์ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ํฌํจํฉ๋๋ค:
- ์๋ฒ ์ฌ์ด๋ ์คํ: ์๋ฒ๋ React ์ปดํฌ๋ํธ(๋๋ ๋ค๋ฅธ ํ๋ ์์ํฌ์ ๋๋ฑํ ๊ฒ)๋ฅผ ์คํํ์ฌ HTML์ ์์ฑํฉ๋๋ค.
- ์ฒญํฌ ๋จ์ ์๋ต: ์ ์ฒด ํ์ด์ง์ HTML์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ , ์๋ฒ๋ ๋ ๋๋ง๋๋ ๋๋ก HTML ์กฐ๊ฐ๋ค์ ๋ณด๋ ๋๋ค. ์ด ์กฐ๊ฐ๋ค์ ์ข ์ข ํด๋ผ์ด์ธํธ๊ฐ ์ดํดํ ์ ์๋ ํน๋ณํ ๋ง์ปค๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ํ์ด๋๋ ์ด์ : ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฌํ HTML ์ฒญํฌ๋ฅผ ๋ฐ์ ๋ ๋๋งํ๊ธฐ ์์ํฉ๋๋ค. ๊ฐ๋ณ ์ปดํฌ๋ํธ์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํด์ง๋ฉด, ์ด๋ฅผ ํ์ด๋๋ ์ด์ ํ์ฌ ์ํธ์์ฉ ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค. ์ด ํ์ด๋๋ ์ด์ ๋ํ ์ปดํฌ๋ํธ๋ณ๋ก ์ ์ง์ ์ผ๋ก ์ผ์ด๋ ์ ์์ต๋๋ค.
- HTTP/2 ๋๋ HTTP/3: ์ด๋ฌํ ํ๋กํ ์ฝ์ ํจ์จ์ ์ธ ์คํธ๋ฆฌ๋ฐ์ ํ์์ ์ด๋ฉฐ, ๋จ์ผ ์ฐ๊ฒฐ์ ํตํด ์ฌ๋ฌ ์์ฒญ๊ณผ ์๋ต์ ๋ฉํฐํ๋ ์ฑํ์ฌ ์ง์ฐ ์๊ฐ๊ณผ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
์ฃผ์ ํ๋ ์์ํฌ ๋ฐ ๊ตฌํ
๋ช๋ช ํ๋์ ์ธ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์คํธ๋ฆฌ๋ฐ SSR์ ์ฑํํ๊ฑฐ๋ ์ ๊ทน์ ์ผ๋ก ์ง์์ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค:
1. React (Next.js์ ํจ๊ป)
์ธ๊ธฐ ์๋ React ํ๋ ์์ํฌ์ธ Next.js๋ ์คํธ๋ฆฌ๋ฐ SSR์ ๊ตฌํํ๋ ๋ฐ ์์ฅ์ ์์ต๋๋ค. React Server Components์ ์ต์ ๋ฒ์ ์ ๋ด์ฅ๋ ์คํธ๋ฆฌ๋ฐ ์ง์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ๊ฐ๋ฐ์๋ค์ด ์ ์ง์ ๋ก๋ฉ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๊ฒ ํด์ค๋๋ค.
Next.js ์คํธ๋ฆฌ๋ฐ SSR์ ํต์ฌ ๊ฐ๋ :
- ์คํธ๋ฆฌ๋ฐ HTML: Next.js๋ ํ์ด์ง์ ๋ ์ด์์์ ๋ํ HTML ์๋ต์ ์๋์ผ๋ก ์คํธ๋ฆฌ๋ฐํฉ๋๋ค.
- ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ํ Suspense: React์
SuspenseAPI๋ ์๋ฒ์์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ์ ์ํํ๊ฒ ์๋ํ์ฌ, ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ ธ์์ง๋ ๋์ ํด๋ฐฑ ์ฝํ ์ธ ๋ฅผ ๋ ๋๋งํ๊ณ , ์ค๋น๋๋ฉด ์ต์ข ์ฝํ ์ธ ๋ฅผ ์คํธ๋ฆฌ๋ฐํ ์ ์๊ฒ ํฉ๋๋ค. - ์ ํ์ ํ์ด๋๋ ์ด์ : ๋ธ๋ผ์ฐ์ ๋ ์ ์ฒด ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ด ๋ค์ด๋ก๋๋๊ณ ํ์ฑ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ์ฌ์ฉ ๊ฐ๋ฅํด์ง๋ ๋๋ก ์ปดํฌ๋ํธ๋ฅผ ํ์ด๋๋ ์ด์ ํ ์ ์์ต๋๋ค.
2. Vue.js (Nuxt.js์ ํจ๊ป)
Vue.js์ ์ ๋์ ์ธ ํ๋ ์์ํฌ์ธ Nuxt.js ๋ํ ๊ฐ๋ ฅํ SSR ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ ์คํธ๋ฆฌ๋ฐ์ ์ง์ํ๊ธฐ ์ํด ์งํํ๊ณ ์์ต๋๋ค. ๊ทธ ์ํคํ ์ฒ๋ ํจ์จ์ ์ธ ์๋ฒ ๋ ๋๋ง์ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ์งํ ์ค์ธ ๊ฐ๋ฐ์ ๊ณ ๊ธ ์คํธ๋ฆฌ๋ฐ ๊ธฐ๋ฅ์ ํตํฉํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
3. ๋ค๋ฅธ ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
React์ Vue๊ฐ ๋๋๋ฌ์ก์ง๋ง, ๋ค๋ฅธ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ ์ ์ง์ ๋ก๋ฉ๊ณผ ์คํธ๋ฆฌ๋ฐ์ ํตํด ์น ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ ์ฌํ ํจํด์ ํ์ํ๊ฑฐ๋ ์ฑํํ๊ณ ์์ต๋๋ค.
๊ณผ์ ๋ฐ ๊ณ ๋ ค์ฌํญ
์ธ์์ ์ธ ์ด์ ์๋ ๋ถ๊ตฌํ๊ณ , ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ๊ตฌํํ๋ ๋ฐ์๋ ๊ณ ์ ํ ๊ณผ์ ๋ค์ด ๋ฐ๋ฆ ๋๋ค:
1. ์ฆ๊ฐ๋ ์๋ฒ ๋ณต์ก์ฑ
์ฒญํฌ ๋จ์ ์๋ต์ ๊ด๋ฆฌํ๊ณ ์ ์ ํ ํ์ด๋๋ ์ด์ ์ ๋ณด์ฅํ๋ ๊ฒ์ ์๋ฒ ์ฌ์ด๋ ๋ก์ง๊ณผ ์ํ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ ๋ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ๊ฐ์ ธ์์ง๊ณ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ ๋ฌ๋๋์ง์ ์ ์ํด์ผ ํฉ๋๋ค.
2. ํ์ด๋๋ ์ด์ ๋ถ์ผ์น
์๋ฒ์์ ๋ ๋๋ง๋ HTML๊ณผ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง์ ์ถ๋ ฅ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ, ํ์ด๋๋ ์ด์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ์ฌ ์ค๋ฅ๋ ์๊ธฐ์น ์์ ๋์์ ์ ๋ฐํ ์ ์์ต๋๋ค. ์ ์คํ ์ปดํฌ๋ํธ ์ค๊ณ์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด ํ์์ ์ ๋๋ค.
3. ์บ์ ๋ฌดํจํ
์คํธ๋ฆฌ๋ฐ ์๋ต์ ์ํด ์บ์ฑ ์ ๋ต์ ์กฐ์ ํด์ผ ํฉ๋๋ค. ๊ฐ๋ณ ์ฒญํฌ๋ ๋์ ์ฝํ ์ธ ๋ฅผ ์บ์ฑํ๋ ๊ฒ์ ์ ํต์ ์ธ ์ ์ฒด ํ์ด์ง ์บ์ฑ๋ณด๋ค ๋ ์ ๊ตํ ์ ๊ทผ์ด ํ์ํฉ๋๋ค.
4. ๋๋ฒ๊น
์ ์ง์ ์ผ๋ก ๋ก๋ฉ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฒ๊น ํ๋ ๊ฒ์ ๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ค๋ฅ์ ์์ธ์ด๋ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ค๋ฉด ์๋ฒ์ ํด๋ผ์ด์ธํธ ์์ชฝ์์ ๋ฐ์ดํฐ์ ๋ ๋๋ง์ ํ๋ฆ์ ์ดํดํด์ผ ํฉ๋๋ค.
5. ๋ธ๋ผ์ฐ์ ๋ฐ ๋คํธ์ํฌ ํธํ์ฑ
HTTP/2์ HTTP/3๊ฐ ๋๋ฆฌ ์ง์๋์ง๋ง, ํนํ ๋ค์ํ ์ธํฐ๋ท ์ ์ ํ๊ฒฝ์ ๊ฐ์ง ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ๋ชจ๋ ๋์ ๋ธ๋ผ์ฐ์ ์ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ํธํ์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
6. ํ์ต ๊ณก์
React Server Components๋ Suspense์ ๊ฐ์ ์๋ก์ด ํจํด์ ์ฑํํ๋ ๊ฒ์ ๊ฐ๋ฐํ์๊ฒ ํ์ต ๊ณก์ ์ ์๋ฐํ ์ ์์ต๋๋ค. ์ฑ๊ณต์ ์ธ ๊ตฌํ์ ์ํด์๋ ๊ธฐ๋ณธ ์๋ฆฌ์ ๋ํ ์ ์ ํ ๊ต์ก๊ณผ ์ดํด๊ฐ ํ์ํฉ๋๋ค.
๊ธ๋ก๋ฒ ๊ตฌํ์ ์ํ ์ ๋ต
์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ๋ฐฐํฌํ ๋, ๋ค์ ์ ๋ต๋ค์ ๊ณ ๋ คํ์ธ์:
- ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN) ์ต์ ํ: CDN์ ํ์ฉํ์ฌ ์ ์ ์์ฐ๊ณผ ์ ์ฌ์ ์ผ๋ก ๋ฏธ๋ฆฌ ๋ ๋๋ง๋ HTML ์กฐ๊ฐ์ ์ฌ์ฉ์์ ๋ ๊ฐ๊น์ด ๊ณณ์ ์บ์ํ๊ณ ์ ๊ณตํ์ฌ ์ง์ฐ ์๊ฐ์ ์ค์ ๋๋ค.
- ์ฃ์ง ์ปดํจํ : ์ ์ธ๊ณ ์ฌ์ฉ์์ ์ง์ฐ ์๊ฐ์ ๋์ฑ ์ต์ํํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ๊ทธ ์ผ๋ถ๋ฅผ ์ฃ์ง ๋ก์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- ๊ตญ์ ํ(i18n) ๋ฐ ํ์งํ(l10n): ์คํธ๋ฆฌ๋ฐ ์ ๋ต์ด ๋ค๋ฅธ ์ธ์ด, ์ง์ญ, ๋ฌธํ์ ๋์์ค๋ฅผ ๊ณ ๋ คํ๋๋ก ๋ณด์ฅํ์ธ์. ์ด๋ ์ฌ์ฉ์ ๋ก์ผ์ผ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ๊ฐ์ ธ์์ง๊ณ ๋ ๋๋ง๋๋์ง๋ฅผ ํฌํจํฉ๋๋ค.
- ์ ์ง์ ํฅ์: ๊ณ ๊ธ SSR์ ์ฌ์ฉํ๋๋ผ๋ ํญ์ ๊ฒฌ๊ณ ํ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๊ฒฝํ์ผ๋ก์ ํด๋ฐฑ์ ๋ง๋ จํ์ธ์. ์ด๋ ์ค๋๋ ๋ธ๋ผ์ฐ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ง์์ด ์ ํ๋ ์ฌ์ฉ์๋ ๊ธฐ๋ฅ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ๊ฐ์ง ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: ๋ค๋ฅธ ์ง์ญ๊ณผ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๊ฑธ์ณ ์งํ๋ฅผ ์ถ์ ํ ์ ์๋ ํฌ๊ด์ ์ธ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ๊ตฌํํ์ธ์. ์ด๋ ๋ณ๋ชฉ ํ์๊ณผ ์ต์ ํ ์์ญ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
- A/B ํ ์คํธ: ํน์ ์ฌ์ฉ์ ๊ธฐ๋ฐ๊ณผ ์ฝํ ์ธ ์ ๊ฐ์ฅ ์ ํฉํ ๊ฒ์ ์ฐพ๊ธฐ ์ํด ๋ค๋ฅธ ์คํธ๋ฆฌ๋ฐ ์ ๋ต๊ณผ ์ฝํ ์ธ ์ ๋ฌ ์์๋ฅผ ์คํํ์ธ์.
์ค์ฉ์ ์ธ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ๋ค์๊ณผ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค:
- ์ด์ปค๋จธ์ค ์ํ ํ์ด์ง: ์ํ ์ด๋ฏธ์ง, ์ค๋ช , ๊ฐ๊ฒฉ, ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ ๋ฒํผ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํธ๋ฆฌ๋ฐํฉ๋๋ค.
- ๋ด์ค ๊ธฐ์ฌ ๋ฐ ๋ธ๋ก๊ทธ: ์ฃผ์ ๊ธฐ์ฌ ๋ด์ฉ์ ๋จผ์ ๋ก๋ํ ๋ค์, ๊ด๋ จ ๊ธฐ์ฌ, ๋๊ธ, ๊ด๊ณ ๋ฅผ ์คํธ๋ฆฌ๋ฐํฉ๋๋ค.
- ๋์๋ณด๋ ๋ฐ ๊ด๋ฆฌ์ ํจ๋: ๋ค๋ฅธ ์์ ฏ์ด๋ ๋ฐ์ดํฐ ํ ์ด๋ธ์ด ์ฌ์ฉ ๊ฐ๋ฅํด์ง๋ฉด ์คํธ๋ฆฌ๋ฐํ์ฌ, ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์น์ ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋์๋ณด๋์ ์ผ๋ถ์ ์ํธ์์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
- ์์ ๋ฏธ๋์ด ํผ๋: ๊ฒ์๋ฌผ, ์ฌ์ฉ์ ํ๋กํ, ๊ด๋ จ ์ฝํ ์ธ ๋ฅผ ์ ์ง์ ์ผ๋ก ์คํธ๋ฆฌ๋ฐํฉ๋๋ค.
- ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์๋ ๋๊ท๋ชจ ์์: ์์ ์น์ ์ ์คํธ๋ฆฌ๋ฐํ๊ณ ๋ค๋ฅธ ๋ถ๋ถ์ด ์ฒ๋ฆฌ๋๋ ๋์ ์ ํจ์ฑ์ด ๊ฒ์ฆ๋ ํ๋์์ ์ํธ์์ฉ์ ํ์ฑํํฉ๋๋ค.
์น ์ฑ๋ฅ์ ๋ฏธ๋
ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ์น ์ฑ๋ฅ์์ ์๋นํ ๋์ฝ์ ์๋ฏธํฉ๋๋ค. ์ ์ง์ ๋ก๋ฉ์ ๊ฐ๋ฅํ๊ฒ ํจ์ผ๋ก์จ, ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ํฌ์ํ์ง ์์ผ๋ฉด์ ํ๋ถํ๊ณ ์ํธ์์ฉ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ํต์ฌ ๊ณผ์ ๋ฅผ ์ง์ ํด๊ฒฐํฉ๋๋ค. ํ๋ ์์ํฌ์ ๋ธ๋ผ์ฐ์ ๊ธฐ์ ์ด ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ, ์คํธ๋ฆฌ๋ฐ SSR์ ์ง์ ํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ๊ณ ์ฑ๋ฅ, ์ฌ์ฉ์ ์ค์ฌ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ํ์ค ๊ดํ์ด ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํ ์ ์์ต๋๋ค.
์ฝํ ์ธ ๋ฅผ ์กฐ๊ฐ์ผ๋ก ๋ณด๋ด ์ฌ์ฉ์๊ฐ ํ์ด์ง์ ์ผ๋ถ๋ฅผ ๋ก๋๋๋ ๋๋ก ๋ณด๊ณ ์ํธ์์ฉํ ์ ์๊ฒ ํ๋ ๋ฅ๋ ฅ์ ๊ฒ์ ์ฒด์ธ์ ์ ๋๋ค. ์ด๋ ์๋์ ๋ฐ์์ฑ์ ๋ํ ์ฌ์ฉ์์ ์ธ์์ ๋ฐ๊พธ์ด ๋ ๋งค๋ ฅ์ ์ด๊ณ ๋ง์กฑ์ค๋ฌ์ด ์จ๋ผ์ธ ๊ฒฝํ์ผ๋ก ์ด์ด์ง๋๋ค. ๊ธ๋ก๋ฒ ๊ณ ๊ฐ ๊ธฐ๋ฐ์ ํ๋ณดํ๊ณ ์ ์งํ๋ ค๋ ๊ธฐ์ ์๊ฒ ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ๋ง์คํฐํ๋ ๊ฒ์ ๋จ์ง ์ด์ ์ด ์๋๋ผ ํ์๊ฐ ๋๊ณ ์์ต๋๋ค.
๊ฐ๋ฐ์๋ฅผ ์ํ ์คํ ๊ฐ๋ฅํ ์ธ์ฌ์ดํธ
- ํ๋์ ์ธ ํ๋ ์์ํฌ ์์ฉ: ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ฑฐ๋ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐํธํ๋ ๊ฒฝ์ฐ, ์คํธ๋ฆฌ๋ฐ SSR์ ์ผ๊ธ์ผ๋ก ์ง์ํ๋ Next.js์ ๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ๊ณ ๋ คํ์ธ์.
- React Server Components ์ดํดํ๊ธฐ(React ์ฌ์ฉ ์): RSC์ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ฒ ์ฐ์ ๋ ๋๋ง ๋ฐ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋์ง์ ์ต์ํด์ง์ธ์.
- ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ํจ์จ์ฑ ์ฐ์ ์์ ์ง์ : ์ฝํ ์ธ ๊ฐ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์คํธ๋ฆฌ๋ฐ๋๋๋ก ์๋ฒ์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ต์ ํํ์ธ์.
- ๋ก๋ฉ ์ํ๋ฅผ ์ํ Suspense ๊ตฌํ: ๋น๋๊ธฐ ๋ฐ์ดํฐ์ ์์กดํ๋ ์ปดํฌ๋ํธ์ ๋ก๋ฉ ์ํ๋ฅผ ์ฐ์ํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด
SuspenseAPI๋ฅผ ์ฌ์ฉํ์ธ์. - ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ํ ์คํธ: ๋ค์ํ ๋คํธ์ํฌ ์๋์ ์ง์ฐ ์๊ฐ์ ์๋ฎฌ๋ ์ด์ ํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ ๊ธฐ์ ์ผ๋ก ํ ์คํธํ์ฌ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ผ๊ด๋ ๊ฒฝํ์ ๋ณด์ฅํ์ธ์.
- ์ฝ์ด ์น ๋ฐ์ดํ ๋ชจ๋ํฐ๋ง: ์คํธ๋ฆฌ๋ฐ SSR์ด ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ LCP, FID(๋๋ INP), CLS์ ๊ฐ์ ์ฝ์ด ์น ๋ฐ์ดํ์ ์ธ์ฌํ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ธ์.
- ์๋ฐ์คํฌ๋ฆฝํธ ํ์ด๋ก๋ ์ต์ํ: SSR์ด ์ด๊ธฐ ๋ ๋๋ง์ ๋์์ด ๋์ง๋ง, ํฐ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ ์ฌ์ ํ ์ํธ์์ฉ์ฑ์ ์ ํดํ ์ ์์ต๋๋ค. ์ฝ๋ ๋ถํ ๊ณผ ํธ๋ฆฌ ์์ดํน์ ์ง์คํ์ธ์.
๊ฒฐ๋ก
ํ๋ก ํธ์๋ ์คํธ๋ฆฌ๋ฐ SSR์ ๋จ์ํ ๊ธฐ์ ์ ๋ฐ์ ์ ๋์ด, ์ฐ๋ฆฌ๊ฐ ์น ๊ฒฝํ์ ๊ตฌ์ถํ๊ณ ์ ๋ฌํ๋ ๋ฐฉ์์ ํจ๋ฌ๋ค์ ์ ํ์ ๋๋ค. ์ ์ง์ ํ์ด์ง ๋ก๋ฉ์ ๊ฐ๋ฅํ๊ฒ ํจ์ผ๋ก์จ, ๊ฐ๋ฐ์๋ค์ ์ฌ์ฉ์์ ์์น๋ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๊ด๊ณ์์ด ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ด๊ณ ์ํธ์์ฉ์ ์ผ ๋ฟ๋ง ์๋๋ผ ๋ฏฟ์ ์ ์์ ์ ๋๋ก ๋น ๋ฅด๊ณ ๋ฐ์์ด ๋น ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ๋์งํธ ํ๊ฒฝ์ด ๊ณ์ ์งํํจ์ ๋ฐ๋ผ, ์ด๋ฌํ ๊ณ ๊ธ ๋ ๋๋ง ๊ธฐ์ ์ ์์ฉํ๋ ๊ฒ์ ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๊ณ ๊ธ๋ก๋ฒ ๊ท๋ชจ์์ ๊ฒฝ์๋ ฅ์ ์ ์งํ๋ ๋ฐ ์ค์ํ ๊ฒ์ ๋๋ค. ์น ์ฑ๋ฅ์ ๋ฏธ๋๋ ์คํธ๋ฆฌ๋ฐ์ด๋ฉฐ, ๊ทธ๊ฒ์ ์ฌ๊ธฐ์ ๋จธ๋ฌผ ๊ฒ์ ๋๋ค.