๋งํ๋ฉด์ ๋ฐฐ์์ ์คํฐ๋์์ ๊ณต๋ถํ๋ ๋ด์ฉ์ผ๋ก ๊ฐ๋
์ ๋ํด์ ์ง๋ฌธ๊ณผ ๋๋ต ์์ฃผ์ ๊ธ์
๋๋ค. ๋ํ ๋ด์ฉ์ ์ค๋ฅ๋ ์คํ๊ฐ ์์ ์ ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์์์ง๋ฌธ ๋ฐ ๋ต๋ณ
1. SPA์ MPA์ ๋ํด์ ๊ฐ๊ฐ ์ค๋ช
ํด์ฃผ์ธ์.
MPA(Multi-page Application)
๋ ๊ฐ ์ด์์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ฏธํ๋ค. ์ฌ์ฉ์์ ํด๋ฆญ๊ณผ ๊ฐ์ด ์ธํฐ๋ ์
์ด ๋ฐ์ํ ๋๋ง๋ค ํด๋น ๋งํฌ๋ก ์ด๋ํ์ฌ ์ฑ์ด ๋ค์ ์๋ก๊ณ ์นจ๋๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค. ๋๋๋ง ๋ฐฉ์์ผ๋ก ์๋ฒ์ฌ์ด๋ ๋๋๋ง์ ์ฑํํ๋ค.
SPA(Single-page Application)
ํ๋์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ฏธํ๋ค. ๋ ๋๋ง ๋ฐฉ์์ผ๋ก CSR์ ์ฑํํ๋ค. Angular, React, Vue ์์ ์ ์ฉ๋์๋ค.
2. SSR (Server Side Rendering) ๊ณผ CSR (Client Side Rendering)์ ๊ฐ๊ฐ ์ค๋ช
ํด์ฃผ์ธ์.
SSR
์๋ฒ๋ก๋ถํฐ ์์ ํ๊ฒ ๋ง๋ค์ด์ง html ํ์ผ์ ๋ฐ์์ ํ์ด์ง ์ ์ฒด๋ฅผ ๋ ๋๋งํ๋ ๋ฐฉ์
์ฅ์
- SEO(๊ฒ์ ์์ง ์ต์ ํ)์ ์ ๋ฆฌ : ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๊ฐ๊ฐ์ ํ์ด์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ SEO์ ์ ๋ฆฌํ๋ค.
- ๋น ๋ฅธ ์ด๊ธฐ ๋ก๋ฉ ์๋ : ์๋ฒ๋ก๋ถํฐ ํ๋ฉด์ ๋ ๋ํ๊ธฐ ์ํ ํ์์ ์ธ ์์๋ฅผ ๋จผ์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ CSR ๋ณด๋ค ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋น ๋ฅด๋ค.
๋จ์
- ๋ถํธํ ์ฌ์ฉ์ ๊ฒฝํ : ๋งค๋ฒ ํ์ด์ง๋ฅผ ์์ฒญํ ๋๋ง๋ค ์๋ก๊ณ ์นจ
- ์๋ฒ ๋ถํ ์ฆ๊ฐ : ํ์ด์ง๋ฅผ ์์ฒญํ ๋๋ง๋ค ์๋ฒ์์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์๋ตํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ๋ถ๋ด์ด ์ฆ๊ฐ๋จ
CSR
์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ํ์ํ ๋ถ๋ถ๋ง ๋ ๋๋งํ๋ ๋ฐฉ์
์ฅ์
- ๋น ๋ฅธ ์๋ ๋ฐ ์๋ฒ ๋ถํ ๊ฐ์ : ๋ณ๊ฒฝ๋ ๋ถ๋ถ๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ด
- ์ฌ์ฉ์ ์นํ์ : ํ์ด์ง ์์ ์ปจํ
์ธ ๋ฅผ ํด๋ฆญํ์ฌ ๋ค์ ๋จ๊ณ๋ก ์ ํํ๋ ๊ณผ์ ์์ ๋งํฌ๊ฐ ์์ด์ ๊น๋นก์ ์์ด ๋ถ๋๋ฌ์ด ์ด๋์ ๊ฒฝํํ ์ ์๋ค.
๋จ์
- SEO์ ๋ถ๋ฆฌ : ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ์ํธ์์ฉ ํ์ ํ์ด์ง๋ฅผ ๋ก๋ํจ -> ์น ํฌ๋กค๋ฌ๊ฐ ํ์ด์ง๋ฅผ ์์ธํํ๋ ค๊ณ ํ๋ฉด ๋น ํ์ด์ง๋ฅผ ๋ณด์ด๊ฒ ํจ
- ๋๋ฆฐ ์ด๊ธฐ ๋ก๋ฉ ์๋ : ์ด๊ธฐ์ ๋ชจ๋ JS ํ์ผ์ ๋ค์ด๋ฐ์์ผํจ
3. SSR๊ณผ CSR์ ๋์๊ณผ์ ๋ฅผ ๋งํด์ฃผ์ธ์.
SSR
- ํด๋ผ์ด์ธํธ์์ ์ด๊ธฐ ํ๋ฉด์ ๋ก๋ํ๊ธฐ ์ํด ์๋ฒ์ ์ฝํ
์ธ ์์ฒญ์ ๋ณด๋ธ๋ค.
- ์๋ฒ๋ ํ๋ฉด์ ํ์ํ๋๋ฐ ํ์ํ ์์ ํ ๋ฆฌ์์ค(HTML, JS, CSS ๋ฑ)๋ฅผ ์๋ตํ๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ JS๋ฅผ ๋ค์ด๋ก๋ํ๊ณ HTML์ JS๋ฅผ ์ฐ๊ฒฐํ๋ค.
- ํ๋ฉด์ ๊ตฌ์ฑํ๋ ์์ ์ค ํ๋๋ง ๋ณ๊ฒฝํด๋ ์๋ฒ๋ ์์ ํ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ์ฑ์ด ๋ค์ ์์๋๊ณ ํ๋ฉด์ด ๊น๋นก์
CSR
- ํด๋ผ์ด์ธํธ์์ ์ด๊ธฐ ํ๋ฉด์ ๋ก๋ํ๊ธฐ ์ํด ์๋ฒ์ ์ฝํ
์ธ ์์ฒญ์ ๋ณด๋ธ๋ค.
- ์๋ฒ๋ ๋น ๋ผ๋๋ง ์๋ html์ ์๋ต์ผ๋ก ๋ณด๋ด์ค๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ ์ฐ๊ฒฐ๋ JS๋งํฌ๋ฅผ ํตํด ์๋ฒ๋ก๋ถํฐ ๋ค์ JSํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ต๋๋ค. ๋ชจ๋ JS๋ฅผ ๋ค์ด ๋ฐ์์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ด ๋ ์ค๋๊ฑธ๋ฆฐ๋ค.
- ํ๋ฉด์ ๊ตฌ์ฑํ๋ ์์ ์ค ํ๋๋ง ๋ณ๊ฒฝํ๋ฉด ๊ทธ ๋ถ๋ถ๊ณผ ๊ด๋ จ๋ ๋ฆฌ์์ค๋ง ์๋ตํ๋ค. ํ๋ฉด์ด ๊น๋นก์ด์ง ์๊ณ ์์ ๋ ๋ฐ์ดํฐ๊ฐ ํ์๋๋ค.
4. SPA (Single Page Application) ์ CSR (Client Side Rendering) ์ ๊ฐ์ ๊ฐ๋
์ธ๊ฐ์?
๋ค๋ฅธ ๊ฐ๋
์ด๋ค. SPA๋ ๋ง ๊ทธ๋๋ก ๋ง ๊ทธ๋๋ก ํ๋์ ํ์ด์ง์์ ์คํ๋๋ค๋ ๋ป์
๋๋ค. ๋งจ ์ฒ์ ํ๋ฉด์ ๋ค ๋ฐ์์ค๊ณ ์ดํ์๋ ๋ฐ์์ค์ง ์๋๋ฐ๋ ๋ฐ์ดํฐ์ ์์ ,์กฐํ๊ฐ ๊ฐ๋ฅํ๊ณ ์ถ์ด์ CSR์ด๋ ๊ธฐ์ ์ ์ ํ ํ ๊ฒ์
๋๋ค.
5. CSR์ ๋จ์ ์ ๋ณด์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๊น์?
์์ต๋๋ค.
- ์ด๊ธฐ ๋ก๋ฉ ์๋ ๋ณด์
code splitting
, tree-shaking
, chunk ๋ถ๋ฆฌ
๋ฅผ ํตํด js ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ฌ์ ์ด๊ธฐ ๋ ์์ฑ ์๋๋ฅผ ์ค์ด๋ฉด ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ ํ ์ ์๋ค.
- SEO ๊ฐ์
pre-rendering
์ผ๋ก ๊ฐ์ : ์น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์นํฉ ํ๋ฌ๊ทธ์ธ์ ํตํด ๊ฐ ํ์ด์ง์ ๋ํ html ํ์ผ์ ๋ฏธ๋ฆฌ ์์ฑํด ๋ ๋ค ์๋ฒ์์ ์์ฒญํ๋ ์๊ฐ ๋ง์ฝ ํฌ๋กค๋ฌ๋ผ๋ฉด ์ฌ์ ์ ๋ ๋๋ง๋ HTML ๋ฒ์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ ํตํด ๊ฐ์ ํ ์ ์๋ค.
- ์ด๊ธฐ ๋ก๋ฉ ์๋ ๋ณด์ & SEO ๊ฐ์
- CSR์ ์ฌ์ฉํ๊ณ ์๋ SPA์ SSR์ด๋ SSG๋ฅผ ๋์
ํ๋ฉด ๋๋ค.
6. SSR๊ณผ CSR์ ์ค์ฌ์ผ๋ก, ๋ ๋๋ง ๊ด์ ์์์ ํ๋ฆ ๋ณํ๋ฅผ ๋งํด์ฃผ์ธ์.(์ต๊ทผ ์ถ์ธ)
XMLHttpRequest(1998)
- fetch API์ ์์กฐ์ธ XMLHttpRequest API๊ฐ ๊ฐ๋ฐ ๋์๋ค.
- html ๋ฌธ์ ์ ์ฒด๊ฐ ์๋๋ผ JSON๊ณผ ๊ฐ์ ํฌ๋งท์ผ๋ก ์๋ฒ์์ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฐ์์ฌ ์ ์๊ฒ ๋์๊ณ
- ์ด ๋ฐ์ดํฐ๋ฅผ JavaScript๋ฅผ ์ด์ฉํด์ ๋์ ์ผ๋ก HTML ์์๋ฅผ ์์ฑํด์ ํ์ด์ง์ ์
๋ฐ์ดํธ ํ๋ ๋ฐฉ์์ด๋ค.
AJAX(2005)
- XMLHttpRequest ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ์์ด ๊ณต์์ ์ผ๋ก AJAX๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง๊ฒ ๋์๋ค.
- ๊ตฌ๊ธ์์๋ AJAX๋ฅผ ์ด์ฉํด์ Gmail, Google Maps๊ณผ ๊ฐ์ ์น ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๊ธฐ ์์ํ๊ณ ์ด๊ฒ์ด ํ์ฌ ๋๋ฆฌ ์ฐ์ด๋ SPA์ด๋ค.
CSR
- ๊ธฐ์กด์๋ Server์์ ๋ฐ์ html์ ๋ฐํ์ผ๋ก Client๊ฐ ํ๋ฉด์ ๊ทธ๋ ธ์ง๋ง, CSR ๋ฐฉ์์ ์๋ฒ์์ ๋ฐ๋ ๊ฒ ์๋๋ผ Client์์ ์์์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ด๋ค. React๋ Vue ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ/ํ๋ ์์ํฌ๋ SPA๋ฅผ ๋ง๋๋ ๊ฒ์ ์ง์ํ๊ณ CSR ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
- CSR์ ๋จ์ ๋ค ๋๋ฌธ์ 1990๋
์ค๋ฐ์ ์ฌ์ฉํ๋ Static Sites์์ ์๊ฐ์ ๋ฐ์ SSR์ด ๋์
๋๊ฒ ๋๋ค.
SSR
- CSR์ ์ฌ์ฉํ์ ๋๋ณด๋ค ์ฒซ ํ์ด์ง ๋ก๋ฉ์ด ๋นจ๋ผ์ง๋ค.
- ๋ชจ๋ ๋ด์ฉ์ด html์ ๋ด๊ฒจ์ ธ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ธ SEO ๋์์ด ๊ฐ๋ฅํ๋ค.
- Static Sites์์ ๋ฐ์ํ๋ ๊น๋นก์ ์ด์(SSR๋จ์ ) + CSR ๋จ์ ๋ฑ์ผ๋ก ์ธํด CSR + SSR ๋ฐฉ์์ด ๋์
๋จ.
CSR + SSR
- ์ฌ์ฉ์๊ฐ ์ฒ์ ๋ค์ด์์ ๋์ ํ์ด์ง๋ ์๋ฒ์์ ๋ฐ์ ๋ ๋๋งํ๊ณ (SSR) ๊ทธ ๋ค์ ๋ฐ์ํ๋ ๋ผ์ฐํ
์ CSR๋ก ํ๋ ๋ฐฉ์์ด๋ค.
- ์ฒซ ์ง์
์ดํ์๋ CSR ๋ฐฉ์์ผ๋ก ๋์ํ๋๋ก ํ๋ฉด ์ฌ์ฉ์๊ฐ url์ ์ด์ฉํด๋ ํ์ด์ง ๊น๋นก์ ์์ด ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
SSG(Static Site Generation)
- ์ ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ์์ฑํด์ฃผ๋ ํด์ธ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ๋งํฌ๋ค์ด ํ์ผ์ ์ฝ์ด HTML์ ์์ฑํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ค.
- React์ ๊ฒฝ์ฐ๋ CSR์ ํนํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด์ง๋ง Gatsby ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์ฌ์ฉํ๋ฉด React๋ก ๋ง๋ ์น ์ดํ๋ฆฌ์ผ์ด์
์ ์ ์ ์ผ๋ก ์น ํ์ด์ง ์์ฑ์ ๋ฏธ๋ฆฌ ํด๋์ด์ ์๋ฒ์ ๋ฐฐํฌํด๋์ ์ ์๋ค.
7. SEO๋ ๋ฌด์์ธ๊ฐ์?
๊ฒ์์์ง์ด ์น์ ํฌ๋กค๋ง(์๋์ผ๋ก ์น ์ฌ์ดํธ์ ์์ธ์คํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ป๋ ๊ณผ์ )ํ๋ฉด์ ํ์ด์ง์ ์ปจํ
์ธ ์์ธ์ ์์ฑํ๋ ๊ณผ์ ์ด๋ค.
Ref