์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ ๋๋ง ๋ฐฉ์์ ํฌ๊ฒ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ ๋๋ง ๋ฐฉ์์ด ์์ต๋๋ค. ์ด ๋ฐฉ์์ ์ดํด๋ณด๊ธฐ์ ์์ ๊ณผ๊ฑฐ ์น ์ฌ์ดํธ์ ์ญ์ฌ์ ๋ํด ๊ฐ๋จํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Static Site
1990๋ ์ค๋ฐ๊น์ง๋ ๋๋ถ๋ถ์ ์ฌ์ดํธ๊ฐ static ์ฌ์ดํธ ์์ต๋๋ค. ์๋ฒ์ ์ด๋ฏธ ์ ๋ง๋ค์ด์ง html๋ฌธ์๋ค์ด ์๊ณ ์ฌ์ฉ์๊ฐ ๋ถ๋ผ์ฐ์ ์์ ์ฃผ์์ ์ ์ํ๋ฉด ์๋ฒ์ ์ด๋ฏธ ๋ฐฐํฌ๋์ด์๋ HTML ๋ฌธ์๋ฅผ ๋ฐ์์ ๋ณด์ฌ์ฃผ๋ ํ์์ด์ฃ . ์ด๋ฐํ ๋ฐฉ์์ ๋ฌธ์ ์ ์ ํ์ด์ง์์ ๋ค๋ฅธ ๋ฉ๋ด๋ฅผ ํด๋ฆญํ๋ฉด ๋ค์ ์๋ฒ์์ ํด๋นํ์ด์ง์ HTML์ ๋ฐ์์์ ํ์ด์ง ์ ์ฒด๊ฐ ์ ๋ฐ์ดํธ ๋์ด์ผ ํฉ๋๋ค. (๊น๋ฐ, ๊น๋ฐ... ์ ๋ง ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง์ฃ )
iframe
์ดํ 1996๋
๋ฌธ์๋ด์์ ๋ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ๋ด์ ์ ์๋ iframe
ํ๊ทธ๊ฐ ๋์
์ด ๋์๊ณ ์ด์ ๋ ํ์ด์ง๋ด์์ ๋ถ๋ถ์ ์ผ๋ก ๋ฌธ์๋ฅผ ๋ฐ์์์ ์
๋ฐ์ดํธ ํ ์๊ฐ ์๊ฒ ๋ฉ๋๋ค. (์ง๊ธ๋ ๊ฐํน ์ฐ์ด๊ณ ์๋ ํ๊ทธ์
๋๋ค.)
XMLHttpRequest API
๊ทธ๋ฆฌ๊ณ 1998๋
์ฐ๋ฆฌ๊ฐ ๋ง์ด ์ฐ๊ณ ์๋ fetch API์ ์์กฐ XMLHttpRequest API
๊ฐ ๊ฐ๋ฐ์ด ๋์ด ์ด์ ๋ HTML๋ฌธ์ ์ ์ฒด๊ฐ ์๋๋ผ JSON
๊ณผ ๊ฐ์ ํฌ๋ฉง์ผ๋ก ์๋ฒ์์ ๊ฐ๋ฒ๊ฒ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฐ์ ์ฌ ์ ์๊ฒ ๋ฉ๋๋ค. ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ ๋์ ์ผ๋ก HTML์์๋ฅผ ์์ฑํ์ฌ ํ์ด์ง์ ์
๋ฐ์ดํธ ํ๋ ๋ฐฉ์์ด์ฃ .
AJAX, SPA
2005๋
์ด๋ฐ ๋ฐฉ์์ด ๊ณต์์ ์ผ๋ก AJAX๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง๊ฒ ๋๊ณ ๊ตฌ๊ธ์์๋ AJAX๋ฅผ ์ด์ฉํด GMail, Google Map๊ณผ ๊ฐ์ด ์ฐ๋ฆฌ๊ฐ ๋ง์ด ์ฐ๊ณ ์๋ ์น ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๊ธฐ ์์ํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ํ์ฌ ๋๋ฆฌ ์ฐ์ด๊ณ ์๋ ์ฑ๊ธํ์ด์ง ์ดํ๋ฆฌ์ผ์ด์
(SPA)
์
๋๋ค.
์ฌ์ฉ์๊ฐ ํ ํ์ด์ง ๋ด์์ ๋จธ๋ฌด๋ฅด๋ฉด์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์์ ๋ฐ์์ ๋ถ๋ถ์ ์ผ๋ก๋ง ์
๋ฐ์ดํธ ํ๊ฒ ๋์ฃ . ์ด๋ฐ ๋ฐฉ์์ผ๋ก ํ๋์ ์ดํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉ ํ๋ฏ ์น์ฌ์ดํธ์์๋ ์ด์ ์ฌ์ฉ์ฑ์ด ๊ต์ฅํ ์ข์์ง๊ฒ ๋ฉ๋๋ค.
์ด๋ฐ SPAํธ๋๋ + ์ฌ์ฉ์์ PC์ฑ๋ฅ์ด ์ ์ฐจ ์ข์์ ธ์ ๋ง์ ๊ฒ๋ค์ ๋ฌด๋ฆฌ ์์ด ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๋ ํ์คํ๊ฐ ์ ๋์ด์ง์ ๋ฐ๋ผ Angular, React, Vue์ ๊ฐ์ ํ๋ ์์ํฌ๊ฐ ๋์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง(CSR)
์๋๋ก ์ ์ด๋ญ๋๋ค.
Client Side Rendering
ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง์ด๋ ์ฝ๊ฒ ์๊ธฐํ๋ฉด ํด๋ผ์ด์ธํธ์์ ๋ค ์ฒ๋ฆฌํ๋๊ฑธ ๋งํ๋๋ฐ์, ์๋ฒ์์ index.html ํ์ผ์ ํด๋ผ์ด์ธํธ์ ๋ณด๋ด์ฃผ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ ์ผ๋ก HTML์ ์์ฑํ์ฌ ์ฌ์ฉ์์๊ฒ ์ต์ข ์ ์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ณด์ฌ ์ฃผ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ ๋๋ค. ์ด๋ฐ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ด ์์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ฒซ ํ๋ฉด์ ๋ณด๊ธฐ๊น์ง์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์๋ค
- ์ฉ ์ข์ง ์๋ SEO(Search Engin Optimization)
Server Side Rendering
์ด๋ฌํ CSR์ ๋ฌธ์ ์ ๋๋ฌธ์ ๊ธฐ์กด Static ์ฌ์ดํธ์์ ์๊ฐ์ ๋ฐ์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)
์ด ๋์
๋๊ฒ ๋ฉ๋๋ค. ํด๋ผ์ด์ธํธ์์ ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๊ณผ๋ ๋ค๋ฅด๊ฒ ์น์ฌ์ดํธ์ ์ ์ํ๋ฉด ์๋ฒ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์์ HTMLํ์ผ์ ๋ง๋ค๊ฒ ๋๊ณ ์ด๋ ๊ฒ ๋ง๋ค์ด์ง HTMLํ์ผ์ ๋์ ์ผ๋ก ์ ์ดํ ์ ์๋ ์์ค์ฝ๋์ ํจ๊ป ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด์ค๋๋ค. ๊ทธ๋ผ ํด๋ผ์ด์ธํธ์์๋ ์ ๋ง๋ค์ด์ง HTML๋ฌธ์๋ฅผ ๋ฐ์์ ๋ฐ๋ก ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ์ ์๊ฒ ๋๋๊ฑฐ์ฃ .
์ด๋ค๊ฒ์ด ๋ ์ข์๊น?
์ด๋ฐ SSR์ ์ด์ฉํ๊ฒ ๋๋ฉด CSR๊ณผ ๋น๊ตํ์๋ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์์ต๋๋ค.
- ์ฒซ ๋ฒ์งธ ํ์ด์ง ๋ก๋ฉ์ด ๋นจ๋ผ์ง
- ๋ชจ๋ ์ปจํ ์ธ ๊ฐ HTML์ ๋ด๊ฒจ์ ธ ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ธ SEO ๊ฐ๋ฅ
๊ทธ๋ผ ์ด๋ฐ SSR ๊ณผ์ฐ ๋ชจ๋ ๊ฒ์ ํด๊ฒฐ์ฑ ์ด ๋ ๊น์? ๊ทธ๊ฒ์ ์๋๋๋ค.
SSR์๋ ๋ค์๊ณผ ๊ฐ์ ํฐ ๋ฌธ์ ์ ์ด ์กด์ฌํ๋๋ฐ์,
- Static ์ฌ์ดํธ์ ๊ฐ์ ๊น๋ฐ์ ์ด์ ์ฆ, ์ฉ ์ข์ง ์๋ UX
- ์๋ฒ์ ๊ณผ๋ถํ (์ฌ์ฉ์๊ฐ ๋ง์ ์ฌ์ดํธ ์ผ์๋ก)
- ์ฌ์ฉ์๊ฐ ๋น ๋ฅด๊ฒ ์น์ฌ์ดํธ๋ฅผ ํ์ธํ ์ ์์ง๋ง ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ง ๋ชปํด ์ฌ๊ธฐ์ ๊ธฐ ํด๋ฆญํด๋ ๋ฐ์์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
TTV(Time To View), TTI(Time to interact)
TTV, TTI ๋๊ฐ์ง์ ๋ํด ์ข ๋ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
CSR์
- ์ฌ์ดํธ์ ์ ์
- ์๋ฒ์๊ฒ์ ํ ํ ๋น ์ธ๋ฑ์ค ํ์ผ์ ๋ฐ์์ด
- ์น์ฌ์ดํธ์ ํ์ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์๋ฒ์ ์์ฒญ
- ์๋ฒ์๊ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ฐ์์ด
- ์ต์ข ์ ์ผ๋ก ๋์ ์ผ๋ก HTML์ ์์ฑํ ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ์์ ์น์ฌ์ดํธ๋ฅผ ์ฌ์ฉ์๊ฐ ๋ณผ์ ์๊ฒ ํด์ค๊ณผ ๋์์ ์ฌ์ฉ์ ํด๋ฆญ์ด ๊ฐ๋ฅ
์ฆ, CSR์ TTV ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ๋ฅผ ๋ณผ ์ ์์๊ณผ ๋์์ TTI ํด๋ฆญ์ ํ๊ฑฐ๋ ์ธํฐ๋์ ์ด ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋๋ก SSR์
- ์ฌ์ดํธ์ ์ ์์ ํ๋ฉด ์๋ฒ์์ ์ ๋ง๋ค์ด์ง ์ธ๋ฑ์ค ํ์ผ์ ๋ฐ์์ค๊ณ
- ์ฌ์ฉ์๋ ์น์ฌ์ดํธ๋ฅผ ๋ณผ์ ์๊ฒ ๋ฉ๋๋ค.
- ํ์ง๋ง ์์ง ๋์ ์ผ๋ก ์ ์ดํ ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ฐ์์ค์ง ์์๊ธฐ ๋๋ฌธ์ ์ด ์๊ฐ ์ฌ์ฉ์๊ฐ ํด๋ฆญ์ ํด๋ ๋ฐ์์ด ์์ต๋๋ค.
- ์ดํ ์ต์ข ์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์๋ฒ์์ ๋ฐ์์จ ์ดํ์๋ ์ฌ์ฉ์์ ํด๋ฆญ์ ์ฒ๋ฆฌํ ์ ์๋ ์ธํฐ๋์ ์ด ๊ฐ๋ฅํด์ง๋๋ค.
์ฆ, SSR์ ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ๋ฅผ ๋ณผ ์ ์๋ ์๊ฐ๊ณผ ์ค์ ๋ก ์ธํฐ๋ ์ ์ ํ ์ ์๋ ๊ณต๋ฐฑ ๊ธฐ๊ฐ์ด ๊ฝค ๊ธดํธ์ ๋๋ค.
๊ทธ๋์ ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ๋ถ์ํ ๋ TTV
์ TTI
๋ ์ค์ํ ๋งคํธ๋ฆญ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
CSR์ ๋ง์ด ์ฌ์ฉํ๋ ๋ถ๋ค์ด๋ผ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ต์ข ์ ์ผ๋ก ๋ฒ๋ค๋งํด์ ์ฌ์ฉ์์๊ฒ ๋ณด๋ด์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์ด๋ป๊ฒ ํ๋ฉด ํจ์จ์ ์ผ๋ก ๋ง์ด ๋ถํ ํด์ ์ฒซ๋ฒ์งธ๋ก ์ฌ์ฉ์๊ฐ ๋ณด๊ธฐ์ํ ์ ๋ง ํ์์ ์ธ ๋ถ๋ถ๋ง ๋ณด๋ผ ์ ์์์ง๋ฅผ ๊ณ ๋ฏผํด์ผ ํฉ๋๋ค.
SSR๊ฐ์ ๊ฒฝ์ฐ๋ ์ฌ์ฉ์๊ฐ ๋ณด๊ณ , ์ธํฐ๋ ์ ํ๋ ์๊ฐ์ ๊ณต๋ฐฑ์ ์ค์ด๊ธฐ ์ํด ์ด๋ป๊ฒ ํด์ผํ ์ง, ์ด๋ป๊ฒ ์กฐ๊ฒ๋ ๋งค๋๋ฌ์ด UI์ UX๋ฅผ ์ ๊ณตํ ์ ์์์ง ๊ณ ๋ฏผํด ๋ณด๋ฉด ์ข์๊ฒ ๊ฐ์ต๋๋ค.
๋ง์น๋ฉฐ
์์ฆ์๋ ๊ผญ CSR ๋๋ SSR๋ง์ ๊ณ ์งํด์ ์ฌ์ฉํ๊ธฐ ๋ณด๋ค๋ Gatsby
์ ๊ฐ์ SSG(Static Site Generation)
๋ ์์ต๋๋ค. (์ง๊ธ ๋ณด๊ณ ๊ณ์๋ ๋ธ๋ก๊ทธ๋ Gatsby๋ฅผ ์ฌ์ฉ)
๋ฟ๋ง์๋๋ผ React์ Next.js, Angular Universal๊ณผ ๊ฐ์ Angular ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ฒ์์ ์คํํ๋ ํ
ํฌ๋๋ ์์ผ๋, ์ด๋ค ๋ฐฉ์์ด ์ข๊ณ ๋์๊ณ ๊ฐ ์๋ ๊ฐ๊ฐ์ ๋ฐฉ์์ ์ดํดํ๊ณ ํ์์ ์ํด ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.