CSR๊ณผ SSR ๋น๊ต ๋ฐ CSR์ ๋จ์ ๋ณด์ ๋ฐฉ๋ฒ
์ฐ์ SPA์ MPA์ ๋ํด์ ์์๋ณด์
1. SPA์ MPA์ ๊ธฐ๋ณธ ๊ฐ๋
1๏ธโฃ SPA (Single Page Application)
ํ๋์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ํ์ด์ง ์ ํ ์ ํ๋ฉด์ด ๊น๋นก์ด์ง ์๊ณ , ์๋ก์ด ํ์ด์ง๋ฅผ ์์ฒญํ ๋ ์๋ฒ๋ก๋ถํฐ ํ์ํ ๋ฐ์ดํฐ๋ง ์ ๋ฌ๋ฐ์ ๋ ๋๋งํฉ๋๋ค.
์ฆ, CSR(Client-Side Rendering) ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
2๏ธโฃ MPA (Multi Page Application)
์ ํต์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฉ์์ ๋๋ค. ํ์ด์ง ์ ํ ์๋ง๋ค ์๋ฒ์์ ์๋ก์ด HTML์ ๋ฐ์์ ์ ์ฒด ํ์ด์ง๋ฅผ ์๋ก ๋ ๋๋งํฉ๋๋ค. ์ด๋ ํ์ด์ง๊ฐ ๊น๋นก์ผ ์ ์์ผ๋ฉฐ, SSR(Server-Side Rendering) ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
2. CSR(Client-Side Rendering)๊ณผ SSR(Server-Side Rendering)์ ์ฐจ์ด
CSR๊ณผ SSR์ ์ด๋์ ํ์ด์ง๋ฅผ ๋ ๋๋งํ๋๋ ?์ ๋ฐ๋ผ ๊ตฌ๋ถ๋ฉ๋๋ค.
1๏ธโฃ CSR (Client-Side Rendering)
ํด๋ผ์ด์ธํธ ์ธก์์ JavaScript๋ก ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ์ฌ ๋ ๋๋งํ๋ ๋ฐฉ์์ ๋๋ค. React, Vue, Angular ๋ฑ์ ํ๋ ์์ํฌ๊ฐ ๋ํ์ ์ผ๋ก CSR์ ์ฌ์ฉํฉ๋๋ค.
์๋ฒ๋ ๊ธฐ๋ณธ์ ์ธ HTML ํ์ผ๋ง ์ ๋ฌํ๊ณ , ๊ทธ ์ดํ ํด๋ผ์ด์ธํธ๊ฐ ๋๋จธ์ง ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
2๏ธโฃ SSR (Server-Side Rendering)
์๋ฒ์์ HTML์ ๋ ๋๋งํ ํ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ ๋ฐฉ์์ ๋๋ค. PHP, JSP ๋ฑ์ด SSR ๋ฐฉ์์ ๋ํํฉ๋๋ค.
์ฆ, ์์ฒญํ ๋๋ง๋ค ์๋ฒ์์ ์์ ํ ๋ ๋๋ง๋ HTML์ ์ ๋ฌํ์ฌ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.
3. SPA === CSR, MPA === SSR ์ธ๊ฐ์?
์๋๋๋ค. SPA๋ ์ฃผ๋ก CSR์ ์ฌ์ฉํ์ง๋ง, SPA๋ SSR์ ์ ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, React๋ Vue ๊ฐ์ SPA ํ๋ ์์ํฌ์์๋ ์๋ฒ ์ธก์์ ๋ฏธ๋ฆฌ ๋ ๋๋ง๋ HTML์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ฐ๋๋ก, MPA๋ ์ฃผ๋ก SSR์ ์ฌ์ฉํ์ง๋ง CSR์ ์ ์ฉํ ํ์ด์ง๋ ์กด์ฌํ ์ ์์ต๋๋ค.
์ฆ, SPA์ CSR, MPA์ SSR์ ๊ฐ๋ ์ ์์ ํ ์ผ์นํ์ง ์์ต๋๋ค. ์ด๋ ํ์ด์ง์ ๊ตฌ์ฑ ๋ฐฉ์๊ณผ ๋ ๋๋ง ๋ฐฉ์์ ์ฐจ์ด์ ๋๋ค.
4. CSR๊ณผ SSR์ ์ฅ๋จ์
CSR์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์
- ๋น ๋ฅธ ํ์ด์ง ์ ํ
์ด๊ธฐ ๋ก๋ฉ ์ดํ์๋ ํ์ด์ง ์ผ๋ถ๋ง ๋ณ๊ฒฝ๋๋ฏ๋ก, ์๋ฒ์ ๋ฐ์ดํฐ๋ง ์์ฒญํ์ฌ ๋น ๋ฅด๊ฒ ํ๋ฉด์ ๊ฐฑ์ ํ ์ ์์ต๋๋ค. - ์๋ฒ ๋ถํ ๊ฐ์
ํด๋ผ์ด์ธํธ ์ธก์์ ์ฐ์ฐ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ถ๋ด์ด ์ค์ด๋ญ๋๋ค. - ์ข์ UX
๋น ๋ฅธ ํ์ด์ง ์ ํ๊ณผ ์ฌ์ฉ์ ์ธํฐ๋์ ๋๋ถ์ ์ฌ์ฉ์๊ฐ ๋๋ผ๋ ๊ฒฝํ(UX)์ด ์ฐ์ํฉ๋๋ค.
๋จ์
- ์ด๊ธฐ ๋ก๋ฉ ์๋ ๋๋ฆผ
ํด๋ผ์ด์ธํธ์์ ๋์ ์ผ๋ก ํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ ๋๋ฌธ์, ์ด๊ธฐ ๋ก๋ฉ ์ JavaScript ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ์คํํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. - SEO ์ต์ ํ ๋ถ๋ฆฌ
์น ํฌ๋กค๋ฌ๊ฐ ์คํํ๋ JavaScript๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์์ง์ ์ฝํ ์ธ ๋ฅผ ์ ๋๋ก ์ธ๋ฑ์ฑํ์ง ๋ชปํ ์ ์์ต๋๋ค. - ์ด๊ธฐ ํ๋ฉด ์ง์ฐ
์ฌ์ฉ์๋ ํ์ด์ง๋ฅผ ํด๋ฆญํ๋๋ผ๋, JavaScript๊ฐ ๋ก๋๋๊ธฐ ์ ๊น์ง ํ๋ฉด์ด ๋น์ด ์์ ์ ์์ต๋๋ค.
SSR์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์
- ๋น ๋ฅธ ์ด๊ธฐ ๋ ๋๋ง
HTML ํ์ผ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ์ ธ ์์ด, ์ฌ์ฉ์๋ ๋ฐ๋ก ์ฝํ ์ธ ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. JS ํ์ผ ๋ก๋ฉ ์ ์ ํ๋ฉด์ด ํ์๋ฉ๋๋ค. - SEO ์ต์ ํ ์ ๋ฆฌ
์์ ํ HTML์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์์ง์ด ํ์ด์ง๋ฅผ ์ฝ๊ฒ ํฌ๋กค๋งํ๊ณ ์ธ๋ฑ์ฑํ ์ ์์ต๋๋ค.
๋จ์
- ๋ฐ์ ์๋ ์ง์ฐ
JavaScript ํ์ผ์ด ๋ก๋๋๊ธฐ ์ ๊น์ง ์ฌ์ฉ์์ ์ธํฐ๋์ ์ ๋ํ ์๋ต์ด ์ง์ฐ๋ ์ ์์ต๋๋ค. - ์๋ฒ ๋ถํ
๋งค๋ฒ ์๋ฒ์์ ์๋ก์ด ํ์ด์ง๋ฅผ ์์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ถ๋ด์ด ํฝ๋๋ค.
5. CSR์ ๋จ์ ๋ณด์ ๋ฐฉ๋ฒ
CSR์ ๊ฐ์ฅ ํฐ ๋จ์ ์ ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ์ ๊ณผ SEO ์ต์ ํ๊ฐ ์ด๋ ค์ด ์ ์ ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
1. ์ด๊ธฐ ๋ก๋ฉ ์๋ ๊ฐ์ ๋ฐฉ๋ฒ
- ์ฝ๋ ์คํ๋ฆฌํ
(Code Splitting)
ํ์ํ ๋ถ๋ถ์ JavaScript๋ง ๋ก๋ํ์ฌ ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. Webpack์ด๋ ES6์ import() ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋์ ์ผ๋ก ํ์ํ ๋ถ๋ถ๋ง ๋ก๋ํ ์ ์์ต๋๋ค. - Lazy Loading
์ด๊ธฐ ๋ก๋ฉ ์ ํ์ํ ๋ฆฌ์์ค๋ง ์ฐ์ ๋ก๋ฉํ๊ณ , ๋๋จธ์ง ๋ฆฌ์์ค๋ ๋์ค์ ๋ก๋ฉํ๋ ๋ฐฉ์์ ๋๋ค. ์ด๋ฏธ์ง๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ฉ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ๋์ค์ ๋ฐ์์ค๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.
2. SEO ์ต์ ํ ๋ณด์
- ๋์ ๋ ๋๋ง (Dynamic Rendering)
์น ํฌ๋กค๋ฌ๊ฐ ๋ฐฉ๋ฌธํ์ ๋๋ง ์๋ฒ์์ ๋ฏธ๋ฆฌ ๋ ๋๋ง๋ HTML์ ์ ๊ณตํ๊ณ , ์ผ๋ฐ ์ฌ์ฉ์๋ CSR ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค. Google์ ์ด๋ฌํ ๋์ ๋ ๋๋ง์ ํ์ฉํ๊ณ ์์ต๋๋ค. - ํ๋ ์์ํฌ ํ์ฉ
Next.js์ ๊ฐ์ ํ๋ ์์ํฌ๋ CSR๊ณผ SSR์ ์ฅ์ ์ ๊ฒฐํฉํ์ฌ ์ด๊ธฐ ๋ก๋ฉ ์๋์ SEO ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. Next.js๋ฅผ ์ฌ์ฉํ๋ฉด, ํด๋ผ์ด์ธํธ์์ ์ํํด์ผ ํ ์์ ์ ์๋ฒ์์ ์ฒ๋ฆฌํ๊ณ HTML์ ๋จผ์ ์ ๋ฌํ์ฌ ๊ฒ์ ์์ง์ ์นํ์ ์ธ ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ด์ฒ๋ผ CSR์ ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ์์ด์ง๋ง, ๊ทธ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค. ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๋ ์ต์ ์ ๋ฐฉ๋ฒ์ ์ฐพ์ SEO์ ํผํฌ๋จผ์ค๋ฅผ ๋ชจ๋ ๊ฐ์ ํด ๋๊ฐ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
'๐ฉ๐ปโ๐ป ํ๋ก๊ทธ๋๋ฐ ์ธ์ด > Next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Next.js] - Next.js์์ ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง ์ดํดํ๊ธฐ / API ํธ๋ค๋ฌ์ ํ์ด์ง ์ปดํฌ๋ํธ์ ์ญํ (0) | 2024.09.28 |
---|---|
[Next.js] public ํด๋์ _app.js ํ์ผ (0) | 2024.09.25 |