-
[Spring] ์คํ๋ง MVC : ์๋ฒ-์น๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ์/ CSR, SSR์ ๊ฐ๋
2023. 12. 3.
์๋ฒ์์ ์น ๋ธ๋ผ์ฐ์ ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ค์ฃผ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ์์ ์ฐจ์ด๋ฅผ ์ดํด๋ณด์.
ํฌ๊ฒ (1) ์ ์ ๋ฆฌ์์ค ์ ๋ฌ -์ ์ html ๋ด๋ ค์ค (2) ๋์ html ํ์ด์ง ์ ๋ฌ (3) HTTP API ๋ฐฉ์์ด ์๋ค.
์ ์ ๋ฆฌ์์ค
- ์์ฒญ์ ๊ณ ์ ๋ HTML ํ์ผ, CSS, JS, ์ด๋ฏธ์ง, ์์ ๋ฑ์ ์ ๊ณต
- ์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ
HTML ํ์ด์ง
- ๋์ ์ผ๋ก ํ์ํ HTML ํ์ผ์ ์์ฑํด์ ์ ๋ฌ
- ์น ๋ธ๋ผ์ฐ์ : HTML ํด์
- ex) ์ฃผ๋ฌธ๋ด์ญ. WAS๊ฐ ์ฃผ๋ฌธ ์ ๋ณด ์กฐํ→ ๋์ html(view template) ์์ฑ → ์น ๋ธ๋ผ์ฐ์ ์ ๋ด๋ ค์ค
HTTP API
- HTML ๋จ์ ์ ๋ฌ์๋๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ
- ๋ฐ์ดํฐ๋ ์ฃผ๋ก JSON ํ์์ ๋ฐ์ดํฐ ์ฌ์ฉ
- ๋ค์ํ ์์คํ ์์ ํธ์ถ
- ์น ๋ธ๋ผ์ฐ์ ๋ JSON ํ์์ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ง ๋ชปํจ⇒ html ๋ ๋๋ง์์ ์ฌ์ฉํ์ง ์์. ๊ทธ๋ผ ์ด๋จ ๋ ์ฌ์ฉ?
- ๋ค์ํ ์์คํ ์์ ํธ์ถ, ์ฃผ๋ก 3๊ฐ์ง ์ํฉ
UI ํด๋ผ์ด์ธํธ
- (1) ์ฑ ํด๋ผ์ด์ธํธ
- ๋ฐ์ดํฐ๋ง ์ฃผ๊ณ ๋ฐ์, UI ํ๋ฉด์ด ํ์ํ๋ฉด, ํด๋ผ์ด์ธํธ๊ฐ ๋ณ๋ ์ฒ๋ฆฌ
- DB์์ ์ ๋ณด๋ฅผ ์กฐํํด์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ค์ค
- UI ์ปดํฌ๋ํธ๋ ์์ฒด์ ์ผ๋ก ๋ง๋ค๊ณ , ๋ฐ์ดํฐ๋ง ํ์ํ ๋
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ฑ์ UI ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด ์ฌ์ฉ์์๊ฒ ๋ทฐ ์ ๊ณต
- (2) ์น ํด๋ผ์ด์ธํธ
- ์น ๋ธ๋ผ์ฐ์ ์์ JS์ ajax, patch์ ๊ฐ์ API๋ฅผ ํตํด ์๋ฒ์ API๋ฅผ ํธ์ถ → WAS ์๋ฒ์์ ๋ฐ์ดํฐ ๋ด๋ ค์ค → JS์์ ๋ฐ์ดํฐ๋ฅผ ํตํด html ๋์ ์ผ๋ก ์์ฑ
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ React, Vue.js๊ฐ์ ์น ํด๋ผ์ด์ธํธ๋ฅผ ์ด์ฉํด ์ฌ์ฉ์์๊ฒ ๋ทฐ ์ ๊ณต
(3) ์๋ฒ to ์๋ฒ
- ex) ์ฃผ๋ฌธ ์๋ฒ์ ๊ฒฐ์ ์๋ฒ๊ฐ ํต์ ํ ๋, HTML ์ฃผ๊ณ ๋ฐ์ ํ์ ์์ด ๋ฐ์ดํฐ๋ง ์ฃผ๊ณ ๋ฐ์
- ์์ฆ์ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์ ํ → ๊ธฐ์ ์์์๋ ์ฌ๋ฌ ์๋น์ค๋ค์ด ์ชผ๊ฐ์ ธ ์๊ณ , ๊ฐ ์๋ฒ๋ HTTP API๋ก ํต์
- ๊ธฐ์ ๊ฐ ๋ฐ์ดํฐ ํต์ ์๋ ์ฌ์ฉํจ
โ๏ธ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ ์ ์ ๋ฆฌ์์ค, ๋์ HTML ํ์ด์ง, HTTP API ์ด 3๊ฐ์ง๋ฅผ ์ด๋ป๊ฒ ์ ๊ณตํ ์ง ๊ณ ๋ฏผํด์ผ ํ๋ค
์๋ฒ์ฌ์ด๋ ๋ ๋๋ง, ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง
SSR - ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง
- HTML ์ต์ข
๊ฒฐ๊ณผ๋ฅผ ์๋ฒ์์ ๋ง๋ค์ด์ ์น ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ
- ์๋ฒ์ ์์ฒญ → ์๋ฒ๊ฐ html ๋์ ์์ฑ (์๋ฒ์์ html ํ๋ฉด์ ๋ ๋๋ง!) html์ฝ๋๋ฅผ ์ค์ด์ ์๋ต์ ๋ณด๋ → ์น ๋ธ๋ผ์ฐ์ ๋ html์ ๋ณด์ฌ์ค
- ๋์ html์ ๋ง๋๋ ๊ณผ์ ์ ์๋ฒ๊ฐ, ์น ๋ธ๋ผ์ฐ์ ๋ ์์ฑ๋ html์ ๋ณด์ฌ์ฃผ๊ธฐ๋ง ํจ.
- ์ฃผ๋ก ์ ์ ์ธ ํ๋ฉด์ ์ฌ์ฉ
- ๊ด๋ จ๊ธฐ์ : JSP, ํ์๋ฆฌํ → ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ์์ญ
CSR - ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง
- HTML ๊ฒฐ๊ณผ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ ์ผ๋ก html ์์ฑํด์ ์ ์ฉ
- ํด๋ผ์ด์ธํธ ์ชฝ์์ html์ ์์ฑํ๋ฏ๋ก ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง
- ์ฃผ๋ก ๋์ ์ธ ํ๋ฉด์ ์ฌ์ฉ, ์น ํ๊ฒฝ์ ๋ง์น ์ฑ ์ฒ๋ผ ํ์ํ ๋ถ๋ถ๋ถ๋ถ ๋ณ๊ฒฝํ ์ ์์
- ์) ๊ตฌ๊ธ ์ง๋(ํ๋, ์ถ์ํด๋ url์ด ๋ณํ์ง ์๊ณ ์ฑ์ฒ๋ผ ๋์), Gmail, ๊ตฌ๊ธ ์บ๋ฆฐ๋
- ๊ด๋ จ๊ธฐ์ : React, Vue.js → ์น ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ์์ญ
- ex) ์ฃผ๋ฌธ๋ด์ญ ๊ด๋ จ ์น. ์น ๋ธ๋ผ์ฐ์ ์์ html ์์ฒญ(์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง๊ณผ ๋์ผ) → html์์ ๋ด์ฉ์ด X. JS๋ฅผ ์๋ฒ์ ๋ด๋ ค์ค(ํด๋ผ์ด์ธํธ ๋ก์ง, html๋ ๋๋ง ๋ก์ง์ด ์์) HTTP API๋ฅผ ํตํด ์๋ฒ๋ฅผ ํธ์ถ → ์๋ฒ์์ ๊ด๋ จ ์ ๋ณด๋ฅผ JSON ํ์์ผ๋ก ๋ด๋ ค์ค → ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํ, html ๋ ๋๋ง ์ฝ๋์ ์ด ์ ๋ณด๋ฅผ ์์ด์ html ๋์ ์ผ๋ก ์์ฑ
- ์ฐธ๊ณ
- CSR SSR ๊ฐ๊ฐ์ ์ฅ๋จ์ด ์์
- React, Vue.js๋ฅผ CSR + SSR ๋์์ ์ง์ํ๋ ์น ํ๋ ์์ํฌ๋ ์์
- SSR์ ์ฌ์ฉํ๋๋ผ๋, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด์ ํ๋ฉด ์ผ๋ถ๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
'๐ญ Study > : Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ