Spring MVC / ์น ์ ํ๋ฆฌ์ผ์ด์
by rlaehddnd0422์น ์๋ฒ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS)
์น ์๋ฒ
- HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
- ์ ์ ๋ฆฌ์์ค ์ ๊ณต, ๊ธฐํ ๋ถ๊ฐ ๊ธฐ๋ฅ
- ์ ์ ๋ฆฌ์์ค : ์ ์ HTML, CSS, JS ์ด๋ฏธ์ง, ์์ ๋ฑ..
์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS)
- ๋ง์ฐฌ๊ฐ์ง๋ก HTTP ๊ธฐ๋ฐ ๋์
- ์น ์๋ฒ ๊ธฐ๋ฅ ํฌํจ (์ ์ ๋ฆฌ์์ค ์ ๊ณต)
- ์ฃผ๋ก ํ๋ก๊ทธ๋จ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์ํ
- ๋์ HTML, HTTP API(json) ์ ๊ณต
- ์๋ธ๋ฆฟ, JSP, ์คํ๋ง MVC ์ ๊ณต
- ex) ํฐ์บฃ ์๋ฒ, Jetty, Underflow
์น ์๋ฒ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ์ฐจ์ด
์น ์๋ฒ (์ ์ ๋ฆฌ์์ค) ์ ๊ณต, WAS๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์คํ(์ ์ ๋ฆฌ์์ค ๋ํ ์ ๊ณตํ์ง๋ง)์ด ์ฃผ ๋ชฉ์ ์ ๋๋ค.
์๋ธ๋ฆฟ ์์ด ์๋ฐ์ฝ๋๋ฅผ ์คํํ๋ ์๋ฒ ํ๋ ์์ํฌ๋ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ์๋ฐ๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉด WAS๋ผ๊ณ ํฉ๋๋ค.
WAS์ Web server๋ฅผ ๋๋ ์ด์
WAS๊ฐ ๋๋ฌด ๋ง์ ์ญํ ์ ๋ด๋นํ๋ฉด ์๋ฒ ๊ณผ๋ถํ ์ฐ๋ ค๊ฐ ์๊ณ , ์ ์ ๋ฆฌ์์ค ๋๋ฌธ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์ํ์ด ์ด๋ ค์์ง๋ ๊ฒฝ์ฐ๋ ์์ด์ ์ ์ ๋ฆฌ์์ค๋ ์น์๋ฒ๊ฐ ์ฒ๋ฆฌํ๊ณ WAS๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๊ฐ์ ๋์ ์ธ ์ฒ๋ฆฌ๋ฅผ ํ๋๋ก ๋ถ๋ฆฌํ์์ต๋๋ค.
์๋ธ๋ฆฟ
๋์ ์นํ์ด์ง๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ ์๋ฐ ๊ธฐ๋ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ .
์์ฒญ(Request) ๊ณผ ์๋ต(Response)์ ํ๋ฆ์ ๊ฐ๋จํ ๋ฉ์๋ ํธ์ถ๋ง์ผ๋ก ์ฒด๊ณ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์ .
ํน์ง
- ํด๋ผ์ด์ธํธ์ request์ ๋ํด ๋์ ์ผ๋ก ์๋ํฉ๋๋ค.
- java์ ์ฐ๋ ๋๋ฅผ ์ด์ฉํ์ฌ ๋์ํฉ๋๋ค.
์๋ธ๋ฆฟ ์ปจํ ์ด๋
ํฐ์บฃ์ฒ๋ผ ์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS๋ฅผ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ผ๊ณ ํฉ๋๋ค.
- ์๋ธ๋ฆฟ์ ๋ด๊ณ ๊ด๋ฆฌํด์ฃผ๋ ์ปจ๋ค์ด๋.
- ๊ตฌํ๋์ด ์๋ servlet ํด๋์ค์ ๊ท์น์ ๋ง๊ฒ ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํด์ค๋๋ค.
- ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌ
- ๋ฉํฐ ์ฐ๋ ๋ฉ ์ง์
- ํด๋ผ์ด์ธํธ โฃ ์๋ฒ ์์ฒญ ์ ํ๋ฉด ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ HttpServletRequest, HttpServletResponse ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉฐ GET,POST ์ฌ๋ถ์ ๋ฐ๋ผ ๋์ ์ธ ํ์ด์ง๋ฅผ ์์ฑํด ์๋ต์ ๋ณด๋ ๋๋ค.
๋์ ์์ฒญ - ๋ฉํฐ ์ฐ๋ ๋
์ฐ๋ ๋
> ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ํ๋ํ๋ ์์ฐจ์ ์ผ๋ก ์คํ
> ๋จ์ผ์์ฒญ ํ๋๋ ์ฐ๋ ๋ ํ๋๋ฅผ ์ฌ์ฉ
์ฌ๋ฌ ๊ณณ์์ ๋์์ ์์ฒญ์ด ์จ๋ค๋ฉด?
1. ์์ฒญ๋ง๋ค ์ฐ๋ ๋ ์์ฑ
์ฅ์
/ ๋์ ์์ฒญ ์ฒ๋ฆฌ ๊ฐ๋ฅ
/ ๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ)๊ฐ ํ์ฉํ ๋ ๊น์ง ์ฒ๋ฆฌ ๊ฐ๋ฅ
/ ํ๋์ ์ฐ๋ ๋๊ฐ ์ง์ฐ๋์ด๋, ๋๋จธ์ง ์ฐ๋ ๋๋ ์ ์ ๋์
๋จ์
/ ์ฐ๋ ๋ ์์ฑ๋น์ฉ์ ๋น์ธ๊ธฐ ๋๋ฌธ์, ๊ณ ๊ฐ์ ์์ฒญ์ด ์ฌ ๋๋ง๋ค ์ฐ๋ ๋๋ฅผ ์์ฑํ๋ฉด, ์๋ต ์๋๊ฐ ๋ฆ์ด์ง
/ ๊ณ ๊ฐ ์์ฒญ์ด ๋๋ฌด ๋ง์ด ์ค๋ฉด, ์ฐ๋ ๋๋ฅผ ์์ฑํ๋ ๋ฐ์ CPU, ๋ฉ๋ชจ๋ฆฌ ์๊ณ์ ์ ๋์ด ์๋ฒ๊ฐ ์ฃฝ์ ์ ์๋ค.
2. ์ฐ๋ ๋ ํ ์ฌ์ฉ
ํ์ํ ์ฐ๋ ๋๋ฅผ ์ฐ๋ ๋ ํ์ ๋ณด๊ดํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.
์ฐ๋ ๋ ํ์ ์์ฑ ๊ฐ๋ฅํ ์ฐ๋ ๋์ ์ต๋์น๋ฅผ ๊ด๋ฆฌํ๋๋ฐ ํฐ์บฃ์ ๊ธฐ๋ณธ์ ์ผ๋ก 200๊ฐ๋ก ์ค์ ๋์ด ์์ต๋๋ค.
์ฐ๋ ๋๊ฐ ํ์ํ๋ฉด ์ด๋ฏธ ์์ฑ ๋์ด ์๋ ์ฐ๋ ๋๋ฅผ ์ฐ๋ ๋ ํ์์ ๊บผ๋ด์ ์ฐ๊ณ , ์ฌ์ฉ ์ข ๋ฃ์ ๋ฐ๋ฉ.
์ต๋ ์ฐ๋ ๋๊ฐ ๋ชจ๋ ์ฌ์ฉ์ค์ด์ด์ ์ฐ๋ ๋ํ์ ์ฐ๋ ๋๊ฐ ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ค๋ฆฌ๋ ์์ฒญ์ ๊ฑฐ์ ํ๊ฑฐ๋ ํน์ ์ซ์๋งํผ๋ง ๋๊ธฐํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
์ฅ์
1. ์ฐ๋ ๋๊ฐ ๋ฏธ๋ฆฌ ์์ฑ๋์ด ์์ผ๋ฏ๋ก, ์ฐ๋ ๋๋ฅผ ์์ฑํ๊ณ ์ข ๋ฃํ๋ ๋น์ฉ(CPU)์ด ์ ์ฝ๋๊ณ , ์๋ต ์๊ฐ์ด ๋น ๋ฅด๋ค.
2. ์์ฑ ๊ฐ๋ฅํ ์ฐ๋ ๋์ ์ต๋์น๊ฐ ์์ผ๋ฏ๋ก ๋๋ฌด ๋ง์ ์์ฒญ์ด ๋ค์ด์๋ ๊ธฐ์กด ์์ฒญ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
WAS์ ์ฃผ์ ํ๋ํฌ์ธํธ๋ ์ต๋ ์ฐ๋ ๋ ์์ธ๋ฐ ์ต๋ ์ฐ๋ ๋ ์๋ฅผ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด ๋์ ์์ฒญ์ ํด๋ผ์ด์ธํธ ์๋ต์ง์ฐ ํ์์ด ๋ฐ์ํ ์ ์๊ณ , ๋๋ฌด ๋๊ฒ ์ค์ ์ ๋์ ์์ฒญ์ด ๋ง์ผ๋ฉด CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค ์๊ณ์ ์ด๊ณผ๋ก ์๋ฒ๊ฐ ์ฃฝ์ ์ ์๋ค.
โ๏ธ๋ฉํฐ ์ฐ๋ ๋์ ๋ํ ๋ถ๋ถ์ WAS๊ฐ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐํ ๋์๋ ๋ฉํฐ ์ฐ๋ ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ์ ๊ฒฝ์ฐ์ง ์๊ณ , ์ฑ๊ธ ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ ํ๋ฏ์ด ๊ฐ๋ฐํ๋ฉด ๋ฉ๋๋ค.
HTML
์น ์๋ฒ๋ ๊ณ ์ ๋ HTML ํ์ผ, css, js, ์ด๋ฏธ์ง, ์์ ๋ฑ ์ ์ ๋ฆฌ์์ค ์ ๊ณต
WAS๋ ๋์ ์ผ๋ก ํ์ํ HTMLํ์ผ์ ์์ฑํด์ ์ ๋ฌํด ์ค๋๋ค.
HTTP API
HTML์ด ์๋ ๋ฐ์ดํฐ (์ฃผ๋ก jsonํ์)๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํฉ๋๋ค.
HTTP API๋ ์น ํด๋ผ์ด์ธํธ - ์๋ฒ๋ฟ๋ง ์๋๋ผ ์ฑํด๋ผ์ด์ธ - ์๋ฒ, ์๋ฒ - ์๋ฒ ๋ฑ ๋ค์ํ ์์คํ ๊ณผ ์ฐ๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ฒ ํด์ค๋๋ค.
SSR ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง (๋ฐฑ์๋)
- ์๋ฒ์์ ์ต์ข HTML์ ์์ฑํด์ ํด๋ผ์ด์ธํธ์ ์ ๋ฌ
- HTML ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์๋ฒ์์ ๋ง๋ค์ด์ ์น๋ธ๋ผ์ฐ์ ์๊ฒ ์ ๋ฌํฉ๋๋ค.
- ์ฃผ๋ก ์ ์ ์ธ ํ๋ฉด์ ์ฌ์ฉํ๊ณ ๊ด๋ จ๊ธฐ์ ๋ก๋ thymeleaf, jsp๊ฐ ์์ต๋๋ค.
CSR ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง (ํ๋ก ํธ์๋)
- HTML ๊ฒฐ๊ณผ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ ์ผ๋ก ์์ฑํด์ ์ ์ฉ ์ฃผ๋ก ๋์ ์ธ ํ๋ฉด์ ์ฌ์ฉ, ์น ํ๊ฒฝ์ ๋ง์น ์ฑ ์ฒ๋ผ ํ์ํ ๋ถ๋ถ๋ถ๋ถ ๋ณ๊ฒฝํ ์ ์์
- ์) ๊ตฌ๊ธ ์ง๋, Gmail, ๊ตฌ๊ธ ์บ๋ฆฐ๋
๊ด๋ จ๊ธฐ์ : React, Vue.js
<์ฐธ๊ณ ์๋ฃ>
https://coding-factory.tistory.com/742
'๐ Backend > MVC Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Front-Controller ํจํด (0) | 2023.02.27 |
---|---|
Spring / MVC ํจํด (0) | 2023.02.24 |
Spring / ์์ Servlet ํจํด, JSP ํจํด (0) | 2023.02.23 |
Spring MVC / HttpServletResponse (0) | 2023.02.22 |
Spring MVC / HttpServletRequest (0) | 2023.02.22 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422