[์ฐธ๊ณ ๊ฐ์] ๊น์ํ๋์ ์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์
๐ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ดํด
โ๏ธ ์น - HTTP ๊ธฐ๋ฐ
HTTP ๋ฉ์์ง์ ๋ชจ๋ ๊ฒ์ ์ ์ก
- HTML, TEXT
- IMAGE, ์์ฑ, ์์, ํ์ผ
- JSON, XML(API)
- ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
- ์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋๋ถ๋ถ HTTP ์ฌ์ฉ
โ๏ธ ์น ์๋ฒ
- HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
- ์ ์ ๋ฆฌ์์ค ์ ๊ณต, ๊ธฐํ ๋ถ๊ฐ๊ธฐ๋ฅ
- ์ ์ (ํ์ผ) HTML, CSS, JS, ์ด๋ฏธ์ง, ์์
- ์) NGINX, APACHE
โ๏ธ ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ (WAS)
- HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
- ์น ์๋ฒ ๊ธฐ๋ฅ ํฌํจ+(์ ์ ๋ฆฌ์์ค ์ ๊ณต ๊ฐ๋ฅ)
- ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์คํํด์ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง ์ํ
- ๋์ HTML, HTTP API(JSON)
- ์๋ธ๋ฆฟ, JSP, ์คํ๋ง MVC
- ์) ํฐ์บฃ Jetty, Undertow
โ๏ธ ์น ์๋ฒ, WAS ์ฐจ์ด
- ์น์๋ฒ๋ ์ ์ ๋ฆฌ์์ค(ํ์ผ), WAS๋ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง
- ์ฌ์ค ๋์ ์ฉ์ด๋ ๊ฒฝ๊ณ๋ ๋ชจํธํจ
- ์น์๋ฒ๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ธฐ๋ฅ์ ํฌํจํ๊ธฐ๋ ํจ
- ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ ์น ์๋ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํจ
- ์๋ฐ๋ ์๋ธ๋ฆฟ ์ปจํ
์ด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉด WAS
- ์๋ธ๋ฆฟ ์์ด ์๋ฐ์ฝ๋๋ฅผ ์คํํ๋ ์๋ฒ ํ๋ ์์ํฌ๋ ์์
- WAS๋ ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋๋ฅผ ์คํํ๋๋ฐ ๋ ํนํ
โ๏ธ ์น ์์คํ
๊ตฌ์ฑ - WAS, DB
- WAS, DB ๋ง์ผ๋ก ์์คํ
๊ตฌ์ฑ ๊ฐ๋ฅ
- WAS๋ ์ ์ ๋ฆฌ์์ค, ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง ๋ชจ๋ ์ ๊ณต ๊ฐ๋ฅ
- WAS๊ฐ ๋๋ฌด ๋ง์ ์ญํ ์ ๋ด๋น, ์๋ฒ ๊ณผ๋ถํ ์ฐ๋ ค
- ๊ฐ์ฅ ๋น์ผ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ด ์ ์ ๋ฆฌ์์ค ๋๋ฌธ์ ์ํ์ด ์ด๋ ค์ธ ์ ์์
- WAS ์ฅ์ ์ ์ค๋ฅ ํ๋ฉด๋ ๋
ธ์ถ ๋ถ๊ฐ๋ฅ
โ๏ธ ์น ์์คํ
๊ตฌ์ฑ - WEB, WAS, DB
- ์ ์ ๋ฆฌ์์ค๋ ์น ์๋ฒ๊ฐ ์ฒ๋ฆฌ
- ์น ์๋ฒ๋ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง๊ฐ์ ๋์ ์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด WAS์ ์์ฒญ์ ์์
- WAS๋ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง ์ฒ๋ฆฌ ์ ๋ด
- ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ
- ์ ์ ๋ฆฌ์์ค๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ฉด Web ์๋ฒ ์ฆ์ค
- ์ ํ๋ฆฌ์ผ์ด์
๋ฆฌ์์ค๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ฉด WAS ์ฆ์ค
- ์ ์ ๋ฆฌ์์ค๋ง ์ ๊ณตํ๋ ์น ์๋ฒ๋ ์ ์ฃฝ์ง ์์
- ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ด ๋์ํ๋ WAS์๋ฒ๋ ์ ์ฃฝ์
- WAS, DB ์ฅ์ ์ WEB ์๋ฒ๊ฐ ์ค๋ฅ ํ๋ฉด ์ ๊ณต ๊ฐ๋ฅ
โ๏ธ ์๋ธ๋ฆฟ
ํน์ง
- urlPatterns(/hello)์ URL์ด ํธ์ถ๋๋ฉด ์๋ธ๋ฆฟ ์ฝ๋๊ฐ ์คํ
- HTTP ์์ฒญ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ HttpServletRequest
- HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ ๊ณตํ ์ ์๋ HttpServletResponse
- ๊ฐ๋ฐ์๋ HTTP ์คํ์ ๋งค์ฐ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ
HTTP ์์ฒญ, ์๋ต ํ๋ฆ
- HTTP ์์ฒญ์
- WAS๋ Request, Response ๊ฐ์ฒด๋ฅผ ์๋ก ๋ง๋ค์ด์ ์๋ธ๋ฆฟ ๊ฐ์ฒด ํธ์ถ
- ๊ฐ๋ฐ์๋ Request ๊ฐ์ฒด์์ HTTP ์์ฒญ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ๊บผ๋ด์ ์ฌ์ฉ
- ๊ฐ๋ฐ์๋ Response ๊ฐ์ฒด์ HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์
๋ ฅ
- WAS๋ Response ๊ฐ์ฒด์ ๋ด๊ฒจ์๋ ๋ด์ฉ์ผ๋ก HTTP ์๋ต ์ ๋ณด๋ฅผ ์์ฑ
โ๏ธ ์๋ธ๋ฆฟ ์ปจํ
์ด๋
์๋ธ๋ฆฟ ์ปจํ
์ด๋
- ํฐ์บฃ์ฒ๋ผ ์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS๋ฅผ ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ผ๊ณ ํจ
- ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์์ฑ, ์ด๊ธฐํ, ํธ์ถ, ์ข
๋ฃํ๋ ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ
- ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌ
- ๊ณ ๊ฐ์ ์์ฒญ์ด ์ฌ ๋๋ง๋ค ๊ณ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋นํจ์จ
- ์ต์ด ๋ก๋ฉ ์์ ์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ ์ฌํ์ฉ
- ๋ชจ๋ ๊ณ ๊ฐ ์์ฒญ์ ๋์ผํ ์๋ธ๋ฆฟ ๊ฐ์ฒด ์ธ์คํด์ค์ ์ ๊ทผ
- ๊ณต์ ๋ณ์ ์ฌ์ฉ ์ฃผ์
- ์๋ธ๋ฆฟ ์ปจํ
์ด๋ ์ข
๋ฃ์ ํจ๊ป ์ข
๋ฃ
- JSP๋ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ๋์ด์ ์ฌ์ฉ
- ๋์ ์์ฒญ์ ์ํ ๋ฉํฐ ์ฐ๋ ๋ ์ฒ๋ฆฌ ์ง์
โ๏ธ ์ฐ๋ ๋
- ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋๋ฅผ ํ๋ํ๋ ์์ฐจ์ ์ผ๋ก ์คํํ๋ ๊ฒ์ ์ฐ๋ ๋
- ์๋ฐ ๋ฉ์ธ ๋ฉ์๋๋ฅผ ์ฒ์ ์คํํ๋ฉด main์ด๋ผ๋ ์ด๋ฆ์ ์ฐ๋ ๋๊ฐ ์คํ
- ์ฐ๋ ๋๊ฐ ์๋ค๋ฉด ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์คํ์ด ๋ถ๊ฐ๋ฅ
- ์ฐ๋ ๋๋ ํ๋ฒ์ ํ๋์ ์ฝ๋ ๋ผ์ธ๋ง ์ํ
- ๋์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด ์ฐ๋ ๋๋ฅผ ์ถ๊ฐ๋ก ์์ฑ
์์ฒญ๋ง๋ค ์ฐ๋ ๋ ์์ฑ ์ฅ๋จ์
- ์ฅ์
- ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ)๊ฐ ํ์ฉํ ๋๊น์ง ์ฒ๋ฆฌ๊ฐ๋ฅ
- ํ๋์ ์ฐ๋ ๋๊ฐ ์ง์ฐ๋์ด๋, ๋๋จธ์ง ์ฐ๋ ๋๋ ์ ์ ๋์ํ๋ค.
- ๋จ์
- ์ฐ๋ ๋๋ ์์ฑ ๋น์ฉ์ด ๋น์ธ๋ค (๊ณ ๊ฐ์ ์์ฒญ์ด ์ฌ ๋๋ง๋ค ์ค๋ ๋๋ฅผ ์์ใ
ํ๋ฉด ์๋ต ์๋๊ฐ ๋๋ ค์ง๋ค)
- ์ฐ๋ ๋๋ ์ปจํ
์คํธ ์ค์์นญ ๋น์ฉ์ด ๋ฐ์ํ๋ค
- ์ฐ๋ ๋ ์์ฑ์ ์ ํ์ด ์๋ค
(๊ณ ๊ฐ ์์ฒญ์ด ๋๋ฌด ๋ง์ด ์ค๋ฉด, CPU, ๋ฉ๋ชจ๋ฆฌ ์๊ณ์ ์ ๋์ด์ ์๋ฒ๊ฐ ์ฃฝ์ ์ ์๋ค)
โ๏ธ ์ฐ๋ ๋ ํ
์์ฒญ๋ง๋ค ์ฐ๋ ๋ ์์ฑ์ ๋จ์ ๋ณด์
- ํน์ง
- ํ์ํ ์ฐ๋ ๋๋ฅผ ์ฐ๋ ๋ ํ์ ๋ณด๊ดํ๊ณ ๊ด๋ฆฌํ๋ค.
- ์ฐ๋ ๋ ํ์ ์์ฑ ๊ฐ๋ฅํ ์ฐ๋ ๋์ ์ต๋์น๋ฅผ ๊ด๋ฆฌํ๋ค. ํฐ์บฃ์ ์ต๋ 200๊ฐ ๊ธฐ๋ณธ ์ค์ (๋ณ๊ฒฝ ๊ฐ๋ฅ)
- ์ฌ์ฉ
- ์ฐ๋ ๋๊ฐ ํ์ํ๋ฉด ์ด๋ฏธ ์์ฑ๋์ด ์๋ ์ฐ๋ ๋๋ฅผ ์ค๋ ๋ ํ์์ ๊บผ๋ด์ ์ฌ์ฉํ๋ค.
- ์ฌ์ฉ์ ์ข
๋ฃํ๋ฉด ์ฐ๋ ๋ ํ์ ํด๋น ์ฐ๋ ๋ ๋ฐ๋ฉ
- ์ต๋ ์ฐ๋ ๋๊ฐ ๋ชจ๋ ์ฌ์ฉ์ค์ด์ด์ ์ฐ๋ ๋ ํ์ ์ฐ๋ ๋๊ฐ ์์ผ๋ฉด?
๊ธฐ๋ค๋ฆฌ๋ ์์ฒญ์ ๊ฑฐ์ ํ๊ฑฐ๋ ํน์ ์ซ์๋งํผ๋ง ๋๊ธฐํ๋๋ก ์ค์ ํ ์ ์๋ค
- ์ฅ์
- ์ฐ๋ ๋๊ฐ ๋ฏธ๋ฆฌ ์์ฑ๋์ด ์์ผ๋ฏ๋ก, ์ค๋ ๋๋ฅผ ์์ฑํ๊ณ ์ข
๋ฃํ๋ ๋น์ฉ(CPU)์ด ์ ์ฝ๋๊ณ , ์๋ต ์๊ฐ์ด ๋น ๋ฅด๋ค
- ์์ฑ ๊ฐ๋ฅํ ์ค๋ ๋์ ์ต๋์น๊ฐ ์์ผ๋ฏ๋ก ๋๋ฌด ๋ง์ ์์ฒญ์ด ๋ค์ด์๋ ๊ธฐ์กด ์์ฒญ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
์ค๋ฌด ํ
- WAS์ ์ฃผ์ ํ๋ ํฌ์ธํธ๋ ์ต๋ ์ฐ๋ ๋ ์์ด๋ค
- ์ด ๊ฐ์ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด?
๋์ ์์ฒญ์ด ๋ง์ผ๋ฉด ์๋ฒ๋ฆฌ์์ค๋ ์ฌ์ ๋กญ์ง๋ง ํด๋ผ์ด์ธํธ๋ ๊ธ๋ฐฉ ์๋ต ์ง์ฐ
- ๋๋ฌด ๋์ผ๋ฉด?
๋์ ์์ฒญ์ด ๋ง์ผ๋ฉด CPU,๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค ์๊ณ์ ์ด๊ณผ๋ก ์๋ฒ ๋ค์ด
- ์ฅ์ ๋ฐ์์?
ํด๋ผ์ฐ๋๋ฉด ์ผ๋จ ์๋ฒ๋ถํฐ ๋๋ฆฌ๊ณ ์ดํ์ ํ๋, ํด๋ผ์ฐ๋๊ฐ ์๋๋ฉด ์ด์ฌํ ํ๋
โ๏ธ WAS์ ๋ฉํฐ ์ฐ๋ ๋ ์ง์
ํต์ฌ
- ๋ฉํฐ ์ฐ๋ ๋์ ๋ํ ๋ถ๋ถ์ WAS๊ฐ ์ฒ๋ฆฌ
- ๊ฐ๋ฐ์๊ฐ ๋ฉํฐ ์ฐ๋ ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋จ
- ๊ฐ๋ฐ์๋ ๋ง์น ์ฑ๊ธ ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฏ์ด ํธ๋ฆฌํ๊ฒ ์์ค ์ฝ๋๋ฅผ ๊ฐ๋ฐ
- ๋ฉํฐ ์ฐ๋ ๋ ํ๊ฒฝ์ด๋ฏ๋ก ์ฑ๊ธํค ๊ฐ์ฒด(์๋ธ๋ฆฟ, ์คํ๋ง ๋น)๋ ์ฃผ์ํด์ ์ฌ์ฉ