MPA(Multiple Page Application)์ด๋?
- ์ฌ๋ฌ ๊ฐ์ Page๋ก ๊ตฌ์ฑ๋ Application์ด๋ค.
- MAP๋ SSR ๋ฐฉ์์ผ๋ก ๋ ๋๋งํ๋ค. ์๋ก์ด ํ์ด์ง๋ฅผ ์์ฒญํ ๋๋ง๋ค ์๋ฒ์์ ๋ ๋๋ง๋ ์ ์ ๋ฆฌ์์ค(HTML, CSS, Javascript)๊ฐ ๋ค์ด๋ก๋๋๋ค. ํ์ด์ง๋ฅผ ์ด๋ํ๊ฑฐ๋ ์๋ก๊ณ ์นจํ๋ฉด ์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ ๋๋งํ๋ค.
MPA์ ์ฅ์
- SEO ์ต์ ํ
- MPA๋ ์์ฑ๋ ํํ์ HTML ํ์ผ์ ์๋ฒ๋ก๋ถํฐ ์ ๋ฌ๋ฐ๋๋ค. ์ด๋ ๊ฐ ํ์ด์ง๊ฐ ๋ ๋ฆฝ์ ์ธ URL์ ๊ฐ์ง๋ฏ๋ก ๊ฒ์ ์์ง์ด ํ์ด์ง๋ฅผ ์ฝ๊ฒ ์์ธํ(Indexing)์ ํ ์ ์๋ค. ๋ฐ๋ผ์ SEO(Search Engine Optimization)์ ์ ๋ฆฌํ๋ค.
-
์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋น ๋ฅด๋ค.
- ์๋ฒ์์ ๊ทธ๋ ค์ง HTML์ ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์ด๋ค.
MPA์ ๋จ์
-
์๋ก์ด ํ์ด์ง๋ก ์ด๋ํ๋ฉด '๊น๋นก'์ด๋ ํ์์ด ์๋ค.
- ํ์ด์ง ์์ฒญ๋ง๋ค ์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ ๋๋ง(์๋ก๊ณ ์นจ)์ ํ๋ค.
- ํ์ด์ง ์ด๋ ์ ๋ถํ์ํ ํ ํ๋ฆฟ๋ ์ค๋ณตํด์ ๋ก๋ฉ
- ์๋ฒ ๋ ๋๋ง์ ๋ฐ๋ฅธ ๋ถํ
SPA(Single Page Application)์ด๋?
- SPA๋ ๋ง ๊ทธ๋๋ก ํ ๊ฐ์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งํ๋ค.
-
SPA๋ ๋ณดํต CSR(Client Side Rendering) ๋ฐฉ์์ผ๋ก ๋ ๋๋งํ๋ค.
- ๊ทธ๋ฌ๋ SPA๋ SSR์ด๋ SSG์ ๊ฐ์ ๋ค๋ฅธ ๋ ๋๋ง ๋ฐฉ์์ ์ฌ์ฉํ ์๋ ์๋ค.
์๋ฅผ ๋ค์ด, Next.js๋ SPA๋ฅผ ๊ตฌํํ๋ฉด์๋ SSR์ด๋ SSG๋ฅผ ์ง์ํ๋ค.
- ๊ทธ๋ฌ๋ SPA๋ SSR์ด๋ SSG์ ๊ฐ์ ๋ค๋ฅธ ๋ ๋๋ง ๋ฐฉ์์ ์ฌ์ฉํ ์๋ ์๋ค.
- ์ฒ์ ํ์ด์ง ๋ก๋ฉ ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ชจ๋ ์ ์ ๋ฆฌ์์ค(Html, Css, Javascript ...)๋ฅผ
ํ ๋ฒ์ ๋ค์ด๋ฐ๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ์ฒ์ ์ ์ํ ๋ ๋ก๋ฉ ์๊ฐ์ด ๊ธธ ์ ์๋ค. - ์ต์ด ํ์ด์ง๋ฅผ ๋ก๋ฉํ ์์ ๋ถํฐ๋ ํ์ด์ง ๋ฆฌ๋ก๋ฉ์์ด ํ์ํ ๋ถ๋ถ๋ง ์๋ฒ๋ก๋ถํฐ ๋ฐ์์ ํ๋ฉด์ ๊ฐฑ์ ํ๋ค.(Ajax ๋๋ถ์ ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ ํ์๊ฐ ์๋ค) ํ์ํ ๋ถ๋ถ๋ง ๊ฐฑ์ ํ๊ธฐ ๋๋ฌธ์ ์์ฐ์ค๋ฌ์ด ํ์ด์ง ์ด๋๊ณผ UX๋ฅผ ์ ๊ณตํ๋ค.
SPA์ ์ฅ์
-
์์ฐ์ค๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ(UX)๊ณผ ๋น ๋ฅธ ์๋
- ์ ์ฒด ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฐ๊พธ๋ฏ๋ก ๋ง์น ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ๊ฐ์ด ๋น ๋ฅด๊ณ '๊น๋นก' ๊ฑฐ๋ฆผ์ด ์๋ค.
-
๋คํธ์ํฌ ํธ๋ํฝ ๊ฐ์
- ์๋ฒ์ ์ ์ฒด ํ์ด์ง๋ฅผ ์์ฒญํ๋ ๋์ ํ์ํ ๋ฐ์ดํฐ๋ง ์์ฒญํ๋ฏ๋ก ๋คํธ์ํฌ ํธ๋ํฝ์ด ๊ฐ์ํ๋ค.
- ๋ฐฑ์๋ ์๋ฒ ๋ถํ ๊ฐ์
SPA์ ๋จ์
-
์ด๊ธฐ ๋ก๋ฉ ์๊ฐ(Code Splitting์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅ)
- SPA๋ ์ฒ์ ๋ก๋ฉํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฒด๋ฅผ ๋ก๋ํด์ผ ํ๋ฏ๋ก ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ด ๊ธธ ์ ์๋ค.
-
SEO์ ์ทจ์ฝ(SSR๋ก ํด๊ฒฐ ๊ฐ๋ฅ)
- ์น ํฌ๋กค๋ฌ๊ฐ Javascript๋ฅผ ์๋ฒฝํ๊ฒ ํด์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ, ํ์ด์ง์ ๋ด์ฉ์ด ์ ๋๋ก ์์ธํ(Indexing)๋์ง ์์ ์ ์๋ค.
SSR vs CSR
SSR์ ์๋ฒ์์ ํ์ด์ง๋ฅผ ๋ ๋๋งํ๋ ๋ฐฉ์์ด๋ค. ์ฌ์ฉ์๊ฐ ์น ํ์ด์ง์ ์ ์ํ๋ฉด, ์๋ฒ์์ ํด๋น ํ์ด์ง๋ฅผ ๋ ๋๋งํ์ฌ HTML ํํ๋ก ์ฌ์ฉ์์๊ฒ ์ ์กํ๋ค. ์ด ๋ฐฉ์์ ์ ํต์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฃผ๋ก ์ฌ์ฉ๋์์ผ๋, ์ต๊ทผ์๋ React, Vue ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ์๋ SSR์ ์ง์ํ๊ณ ์๋ค.
SSR์ ์ฅ์
- ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ์งง๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ๋น ๋ฅด๊ฒ ํ๋ฉด์ ๋ณผ ์ ์๋ค.
- SEO์ ํจ์จ์ ์ด๋ค.
SSR์ ๋จ์
- ํ์ด์ง๋ฅผ ์์ฒญํ ๋๋ง๋ค ํ์ํ ๋ถ๋ถ๋ง ๋ฐ๊ฟ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์๋๋ผ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ํ๋ฉด์ด ๊น๋นก์ด๋ ํ์์ด ์๋ค.
- ์๋ฒ์ ๊ณ์ ์์ฒญ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ๋ถํ๊ฐ ์ปค์ง๋ค.
- ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํ์ผ์ ๋ฐ์๋ ธ๋ ๊ฒ์ด ๋๋ฆฌ๋ฉด, ์ฌ์ฉ์๊ฐ ์๋ฌด๋ฆฌ ํด๋ฆญ์ ํด๋ ๋ฐ์ํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ธฐ๋ ํ๋ค.
CSR์ ํด๋ผ์ด์ธํธ ์ธก์์ ํ์ด์ง๋ฅผ ๋ ๋๋งํ๋ ๋ฐฉ์์ด๋ค. ์ฌ์ฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ์ ์ ์ํ๋ฉด, ์๋ฒ๋ก๋ถํฐ ํ์ํ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ๋๋ค. ์ดํ ํ์ด์ง์ ๋ ๋๋ง์ ํด๋ผ์ด์ธํธ ์ธก์์ ์ด๋ฃจ์ด์ง๋ค. ์ฌ์ฉ์์ ์ํธ์์ฉ์ ๋ฐ๋ผ ํ์ํ ๋ฐ์ดํฐ๋ง ์๋ฒ๋ก๋ถํฐ ๊ฐ์ ธ์์ ํ์ด์ง๋ฅด๋ฅด ์ ๋ฐ์ดํธํ๋ค. ์ด ๋ฐฉ์์ SPA์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
CSR์ ์ฅ์
- ์ฌ์ฉ์ ๊ฒฝํ์ด ์ข๊ณ , ์๋ฒ ๋ถํ๊ฐ ์ ๋ค.
- ํ ๋ฒ์ ๋ก๋ฉ ํ์๋ ์๋ฒ๋ก๋ถํฐ ์๋ก์ด ํ์ด์ง๋ฅผ ์์ฒญํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์์ฑ์ด ์ข๋ค.
CSR์ ๋จ์
- ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๊ธธ๋ค.
- SEO์ ๋ฌธ์ ๊ฐ ์์ ์ ์๋ค. ์น ํฌ๋กค๋ฌ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์๋ฒฝํ๊ฒ ํด์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ, ํ์ด์ง์ ๋ด์ฉ์ด ์ ๋๋ก ์์ธํ๋์ง ์์ ์ ์๋ค.