๋ ์ง:2025-10-22
ํ์ต ๋ชฉํ
- MVC ํจํด์ ๊ธฐ๋ณธ ๊ฐ๋
(Model, View, Controller)๊ณผ ์ญํ ์ ์ดํดํ๋ค.
- Thymeleaf ํ
ํ๋ฆฟ ์์ง์ ์๊ฐํ๋ค.
- SSR(Server Side Rendering)๊ณผ CSR(Client Side Rendering)์ ์ฐจ์ด๋ฅผ ์ดํดํ๋ค.
โ
์๋ธ๋ฆฟ ๊ตฌ์กฐ์ ํ๊ณ
1.๋ฎ์ ์์ง๋ (Low Cohesion)
- ํ๋์ ํด๋์ค ์์ ์์ฒญ ์ฒ๋ฆฌ, ๋น์ฆ๋์ค ๋ก์ง, ์๋ต ์์ฑ์ด ๋ชจ๋ ๋ค์ด์์ต๋๋ค.
- ์ฆ, ํ ํด๋์ค๊ฐ ๋๋ฌด ๋ง์ ์ผ์ ํ๊ฒ ๋์ด ์ ์ง๋ณด์์ ํ
์คํธ๊ฐ ์ด๋ ต์ต๋๋ค.
2.๋์ ๊ฒฐํฉ๋ (High Coupling)
- ๋น์ฆ๋์ค ๋ก์ง์ด HttpServletRequest, HttpServletResponse ๊ฐ์ ์๋ธ๋ฆฟ API์ ์์กดํฉ๋๋ค.
- ์ด๋ฐ ๊ตฌ์กฐ๋ ๋จ์ ํ
์คํธ๋ฅผ ํ๊ฑฐ๋ ์น ์ด์ธ ํ๊ฒฝ์์ ์ฌ์ฌ์ฉํ๊ธฐ ํ๋ญ๋๋ค.
3.๋ฐ๋ณต์ ์ธ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋ (Boilerplate)
- ๋งค๋ฒ ํ๋ผ๋ฏธํฐ ํ์ฑ, ์๋ต ํ์
์ค์ , JSON ๋ณํ ๋ฑ์ ์ง์ ํด์ผ ํฉ๋๋ค.
โ
MVC ํจํด

MVC ํจํด
- ํ๋์ ์๋ธ๋ฆฟ์ด ๋ชจ๋ ์ผ์ ์ฒ๋ฆฌํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์ญํ ๋ณ๋ก ๋ถ๋ฆฌํ ์ค๊ณ ๋ฐฉ์์
๋๋ค.
| ๊ตฌ์ฑ์์ | ์ญํ |
|---|
| Model | ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง ๋ด๋น (์: ์ํ ๋ฐ์ดํฐ, ์ถ์ฒ ๋ก์ง) |
| View | ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ํ๋ฉด(UI) ๋ด๋น (์: HTML, Thymeleaf ํ
ํ๋ฆฟ) |
| Controller | ์์ฒญ์ ๋ฐ์ Model๊ณผ View๋ฅผ ์ฐ๊ฒฐํ๋ ์ค๊ฐ ๋ค๋ฆฌ ์ญํ |
์ด๋ ๊ฒ ์ญํ ์ ๋ถ๋ฆฌ(Separation of Concerns) ํ๋ฉด
์ฝ๋๊ฐ ํจ์ฌ ๊น๋ํด์ง๊ณ , ์ ์ง๋ณด์์ฑ๊ณผ ํ
์คํธ ํจ์จ์ด ํฌ๊ฒ ์ฌ๋ผ๊ฐ๋๋ค.
Controller
-
ํด๋ผ์ด์ธํธ์ HTTP ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌํฉ๋๋ค.
-
์ด๋ค URL์ด ์ด๋ค ๋ฉ์๋๋ก ์ฐ๊ฒฐ๋ ์ง ๊ฒฐ์ ํฉ๋๋ค.
-
๋น์ฆ๋์ค ๋ก์ง์ ํธ์ถํ๊ณ , ๋ฐ์ดํฐ๋ฅผ Model์ ๋ด์ ๋ค View ์ด๋ฆ์ ๋ฐํํฉ๋๋ค.
Model
- Controller์์ View๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด์
๋๋ค.
- Key-Value ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
-๐ก Model์ ๋ด๊ธด ๋ฐ์ดํฐ๋ View(HTML)์์ ${title}๋ก ์ฐธ์กฐํ ์ ์์ต๋๋ค.
View
- ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ํ๋ฉด(UI)์ ๋ด๋นํฉ๋๋ค.
- Controller๊ฐ ๋ฐํํ View ์ด๋ฆ์ ViewResolver๊ฐ ์ค์ ํ์ผ๊ณผ ๋งคํํฉ๋๋ค.
- Thymeleaf ๊ฐ์ ํ
ํ๋ฆฟ ์์ง์ด ์ด ์ญํ ์ ์ํํฉ๋๋ค.
โ
Thymeleaf๋?
Thymeleaf(ํ์๋ฆฌํ)
- ์๋ฒ์์ HTML์ ๋์ ์ผ๋ก ์์ฑํด์ฃผ๋ ์๋ฐ ๊ธฐ๋ฐ ํ
ํ๋ฆฟ ์์ง์
๋๋ค.
-์ฆ, Controller์์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ HTML ์ฝ๋์ ์๋์ผ๋ก ๋ฐ์ํด์ค๋๋ค.
โ
Thymeleaf์ ์ฃผ์ ํน์ง
- HTML ํ์ผ ์์์ ๋ณ์ ํํ (${}) ๊ฐ๋ฅ
- ์์ HTML๋ก๋ ๋ฏธ๋ฆฌ ํ๋ฉด ํ์ธ ๊ฐ๋ฅ (๊ฐ๋ฐ ํธ์์ฑ โ)
- Spring MVC์ ์๋ฒฝํ๊ฒ ํตํฉ
โ
SSR vs CSR
์๋ฒ์์ HTML์ ๋ง๋ค์ด์ฃผ๋ Thymeleaf๋ฅผ ๋ฐฐ์ฐ๋ค ๋ณด๋ฉด
ํ๋ก ํธ์๋(React, Vue ๋ฑ)์์ ์ฐจ์ด๊ฐ ํท๊ฐ๋ฆด ์ ์์ต๋๋ค.
์ด ์ฐจ์ด๋ฅผ ์ดํดํ๋ ค๋ฉด SSR๊ณผ CSR ๊ฐ๋
์ ์์์ผ ํฉ๋๋ค.
SSR (Server Side Rendering)
- SSR์ ์๋ฒ์์ ์์ฑ๋ HTML์ ๋ง๋ค์ด ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ด๋ ๋ฐฉ์์
๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋ฐ์ HTML์ ๊ทธ๋๋ก ๋ ๋๋งํ๋ฏ๋ก ์ด๊ธฐ ๋ก๋ฉ์ด ๋น ๋ฅด๊ณ , SEO์๋ ์ ๋ฆฌํฉ๋๋ค.
๐ก Thymeleaf๋ SSR ๋ฐฉ์์ ๋ํ์ ์ธ ์์
๋๋ค.
- ์ฆ, ์๋ฒ์์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฑ์ ๋ฃ์ HTML์ ํต์งธ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํฉ๋๋ค.
CSR (Client Side Rendering)
- CSR์ ์๋ฒ๊ฐ ๋น์ด์๋ HTML ๋ผ๋์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ง ์ ๋ฌํ๋ ๋ฐฉ์์
๋๋ค.
- ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํด ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ๊ทธ ์๋ฆฌ์์ ์ง์ HTML์ ์กฐ๋ฆฝํด ํ๋ฉด์ ๊ทธ๋ฆฝ๋๋ค.
๐ก React, Vue, Svelte ๋ฑ ์ต์ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๋ค์ด ์ด ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
์ฅ์ : ์ฑ์ฒ๋ผ ๋น ๋ฅธ ํ๋ฉด ์ ํ
๋จ์ : ์ด๊ธฐ ๋ก๋ฉ์ด ๋๋ฆฌ๊ณ , SEO์ ๋ถ๋ฆฌํจ
์ ๋ฆฌ
| ๊ตฌ๋ถ | SSR | CSR |
|---|
| ์ฒ๋ฆฌ ์์น | ์๋ฒ | ํด๋ผ์ด์ธํธ |
| ๋ํ ๊ธฐ์ | Thymeleaf, JSP | React, Vue |
| ์ด๊ธฐ ์๋ | ๋น ๋ฆ | ๋๋ฆผ |
| ํ๋ฉด ์ ํ | ์๋ก๊ณ ์นจ ๋ฐ์ | ๋ถ๋๋ฌ์ด ์ ํ |
| SEO | ์ ๋ฆฌ | ๋ถ๋ฆฌ |