์น ์๋ฒ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
์น์๋ฒ
- HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
- ์ ์ ๋ฆฌ์์ค ์ ๊ณต, ๊ธฐํ ๋ถ๊ฐ๊ธฐ๋ฅ
- ์ ์ ํ์ผ์ธ HTML, CSS, JS, ์ด๋ฏธ์ง, ์์
- ex) NGINX, ์ํ์น
์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
- HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
- ์น ์๋ฒ ๊ธฐ๋ฅ ํฌํจ + (์ ์ ๋ฆฌ์์ค ์ ๊ณต ๊ฐ๋ฅ)
- ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์คํํด์ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง ์ํ
- ๋์ HTML. REST API
- JSP, ์คํ๋ง MVC, ์๋ธ๋ฆฟ
- ํฐ์บฃ ๋ฑ..
์น ์๋ฒ vs ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
- ์น ์๋ฒ๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋นํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋นํ๋ค.
- ์ฌ์ค ๋์ ์ฉ์ด์ ๊ฒฝ๊ณ๋ ๋ชจํธํจ
- ์น ์๋ฒ๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ธฐ๋ฅ์ ํฌํจํ๊ธฐ๋ ํจ
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ์น ์๋ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํจ
- ์๋ฐ์์๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ค.
์น ์์คํ ๊ตฌ์ฑ
WAS + DB
WAS๋ ์ ์ ๋ฆฌ์์ค, ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ๋ชจ๋ ์ ๊ณต ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ WAS, DB๋ง์ผ๋ก ์น ์์คํ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํ์ง๋ง, ์ด๋ด ๊ฒฝ์ฐ WAS๊ฐ ๋๋ฌด ๋ง์ ์ญํ ์ ๋ด๋นํ์ฌ ์๋ฒ ๊ณผ๋ถํ๊ฐ ์ฌ ์ ์๋ค.
WEB + WAS + DB
์ ์ ๋ฆฌ์์ค๋ง ์ ๊ณตํ๋ ์น์๋ฒ๋ ์ ์ฃฝ์ง ์๋๋ค. WAS๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ค๊ฐ ์๋ฌ๊ฐ ๋ ์ ์๋๋ฐ ์ด๋ฅผ ์น ์๋ฒ๊ฐ ์ค๋ฅ ํ๋ฉด์ ๋ณด์ฌ์ค๋ค. ์น ์๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๊ฐ ๋ถ๋ฆฌ๋์ด์ ๊ฐ๋ฅํ๋ ์ผ!
์๋ธ๋ฆฟ
๋ง์ฝ ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ฅผ ์น ๋ค ๊ตฌํํด์ผ ํ๋ค๋ฉดโฆ
๋๋ ๋น์ฆ๋์ค ๋ก์ง์ ์คํํ๊ณ ์ถ์๋ฐ, HTTP ๋ฉ์์ง๋ฅผ ์น ๋ค ์ฝ์ด์ผํ๋ค.
์ฌ๊ธฐ์ ์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS๋ฅผ ์ฌ์ฉํ๋ฉด ๋น์ฆ๋์ค ๋ก์ง์๋ง ์ง์คํ ์ ์๋ค.
@WebServlet(name = "helloServlet", urlPattern = "/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
// ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง
}
- ํด๋น URL์ด ํธ์ถ๋๋ฉด ์๋ธ๋ฆฟ ์ฝ๋๊ฐ ์คํ๋๋ค.
- HTTP ์์ฒญ๊ณผ ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ ์๋ธ๋ฆฟ์ ์ ๊ณตํ๋ค.
- ๊ฐ๋ฐ์๋ HTTP ์คํ์ ๋งค์ฐ ํธ๋ฆฌํ๊ฒ ์ ๊ณต
HTTP ์์ฒญ ์ ์๋ธ๋ฆฟ์ ํ๋ฆ
- WAS๋ ์์ฒญ, ์๋ต ๊ฐ์ฒด๋ฅผ ์๋ก ๋ง๋ค์ด์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ค.
- ๊ฐ๋ฐ์๋ ์์ฒญ ๊ฐ์ฒด์์ HTTP ์์ฒญ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ๊บผ๋ด์ ์ฌ์ฉํ๋ค.
- ๊ฐ๋ฐ์๋ ์๋ต ๊ฐ์ฒด์ HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ ๋ ฅํ๋ค.
- WAS๋ ์๋ต ๊ฐ์ฒด์ ๋ด๊ฒจ์๋ ๋ด์ฉ์ผ๋ก HTTP ์๋ต ์ ๋ณด๋ฅผ ์์ฑํ๋ค.
์๋ธ๋ฆฟ ์ปจํ ์ด๋
- WAS ์์ ์กด์ฌํ๋ค.
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ค.
- ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌํ๋ค. (๋๋ฌธ์ ๊ณต์ ๋ณ์ ์ฌ์ฉ ์ฃผ์)
- JSP๋ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ๋์ด ์ฌ์ฉ
- ์ต์ด ๋ก๋ฉ ์์ ์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ ์ฌํ์ฉ
- ๋์ ์์ฒญ์ ์ํ ๋ฉํฐ ์ค๋ ๋ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ค.
๋์ ์์ฒญ - ๋ฉํฐ ์ค๋ ๋
๊ทธ๋ฐ๋ฐ ์๋ธ๋ฆฟ์ ๋๊ฐํธ์ถํ๋?
์ค๋ ๋
- ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒ
- ์๋ฐ ๋ฉ์ธ ๋ฉ์ธ ๋ฉ์๋๋ฅผ ์คํํ๋ฉด main์ด๋ผ๋ ์ด๋ฆ์ ์ค๋ ๋๊ฐ ์คํ๋๋ค.
- ์ค๋ ๋๊ฐ ์์ผ๋ฉด ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ด ๋ถ๊ฐ๋ฅํ๋ค.
- ํ๋ฒ์ ํ๋์ ์ฝ๋ ๋ผ์ธ๋ง ์ํํ๋ค.
- ๋ง์ฝ ๋์์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด ์ค๋ ๋๋ฅผ ์ถ๊ฐ๋ก ์์ฑํ๋ค.
๋จ์ผ ์์ฒญ์๋ ๋จ์ผ ์ค๋ ๋๋ฅผ ์คํ์ํจ๋ค.
ํ์ง๋ง, ๋ค์ค ์์ฒญ์์ ์ค๋ ๋๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค๊ฐ ์๋ธ๋ฆฟ์์ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋๊ณ ์์ ๋,
์ด๋ ์ถ๊ฐ ์์ฒญ์ด ๋ค์ด์ฌ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด?
์์ฒญ๋ง๋ค ์ค๋ ๋๋ฅผ ์์ฑํ๋ค.
์ฅ์
- ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๋ฆฌ์์ค๊ฐ ํ์ฉํ ๋๊น์ง ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ํ๋์ ์ค๋ ๋๊ฐ ์ง์ฐ๋์ด๋ ๋๋จธ์ง ์ค๋ ๋๋ ์ ์ ๋์
๋จ์
- ์ค๋ ๋ ์์ฑ ๋น์ฉ์ ๋น์ธ๋ค.
- ์์ฒญ์ด ์ฌ ๋๋ง๋ค ์ค๋ ๋๋ฅผ ์์ฑํ๋ฉด ์๋ต์ด ๋ฆ์ด์ง๋ค.
- ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
- ์ค๋ ๋ ์์ฑ์ ์ ํ์ด ์๋ค.
- ์์ฒญ์ด ๋๋ฌด ๋ง์ผ๋ฉด ๋ฆฌ์์ค ์๊ณ์ ์ ๋์ด ์๋ฒ๊ฐ ์ฃฝ์ ์ ์๋ค.
์ค๋ ๋ ํ
์์ฒญ์ด ์ค๋ฉด ์ค๋ ๋ ํ์์ ๋๊ณ ์๋ ์ค๋ ๋ํ์ ๊ฐ์ ธ๋ค๊ฐ ์ด๋ค. (ํฐ์บฃ์ ์ต๋ 200๊ฐ ๊ธฐ๋ณธ ์ค์ ).
์ค๋ ๋๋ฅผ ๋ค ์ฐ๋ฉด ์ค๋ ๋ ํ์ ๋ฐ๋ฉํ๋ค.
์ค๋ ๋ ํ์ ์๋ ์ค๋ ๋ ๊ฐ์๋ณด๋ค ์์ฒญ์ด ๋ง์ด๋ค์ด์ค๋ฉด ์ค๋ ๋ ๋๊ธฐ ๋๋ ๊ฑฐ์ ์ ํ๋ค.
์ฅ์
- ๋ฏธ๋ฆฌ ์์ฑ๋์ด ์์ผ๋ฏ๋ก, ์ค๋ ๋๋ฅผ ์์ฑํ๊ณ ์ข ๋ฃํ๋ ๋น์ฉ์ด ์ ์ฝ๋๋ค.
- ์๋ต ์๊ฐ์ด ๋น ๋ฅด๋ค.
- ์์ฑ ์ค๋ ๋ ์ต๋์น๊ฐ ์์ผ๋, ์์ฒญ์ด ๋ง์ด ๋ค์ด์๋ ๊ธฐ์กด ์์ฒญ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๋ค.
์ค๋ฌด ํ
- WAS์ ์ฃผ์ ํ๋ ํฌ์ธํธ๋ ์ต๋ ์ค๋ ๋ ์์ด๋ค.
- ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๋ฉด?
- ๋ฆฌ์์ค๋ ์ฌ์ , ํด๋ผ์ด์ธํธ๋ ๊ธ๋ฐฉ ์๋ต ์ง์ฐ
- ๋๋ฌด ๋๊ฒ ์ค์ ํ๋ฉด?
- ๋์ ์์ฒญ์ด ๋ง์ผ๋ฉด ์ด์์ค ์๊ณ์ ์ด๊ณผ๋ก ์๋ฒ ๋ค์ด
- ์ฅ์ ๋ฐ์ ์
- ํด๋ผ์ฐ๋๋ฉด ์๋ฒ๋ฅผ ๋๋ฆฌ๊ณ ํ๋ํ๋ค.
์ ์ ์ซ์?
์ ํ๋ฆฌ์ผ์ด์
๋ก์ง ๋ณต์ก๋, CPU, ๋ฉ๋ชจ๋ฆฌ, IO ๋ฆฌ์์ค ์ํฉ์ ๋ฐ๋ผ ๋ชจ๋ ๋ค๋ฅด๋ค.
๋๋ฌธ์ ์ค์ ์๋น์ค์ ์ ์ฌํ ์ฑ๋ฅ ํ
์คํธ๋ฅผ ํด๋ณด์์ผ ํ๋ค.
WAS๋ ๋ฉํฐ ์ค๋ ๋๋ฅผ ์ง์ํ๋ค.
๋ฉํฐ ์ค๋ ๋์ ๋ํ ๋ถ๋ถ์ WAS๊ฐ ์ฒ๋ฆฌํ๋ค.
๋๋ฌธ์ ๊ฐ๋ฐ์๋ ๋ฉํฐ ์ค๋ ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค.
๋จ, ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์ด๋ฏ๋ก ์ฑ๊ธํค ๊ฐ์ฒด(์๋ธ๋ฆฟ, ์คํ๋ง ๋น)๋ ์ฃผ์ํด์ ์ฌ์ฉํด์ผํ๋ค.
HTML, HTTP API, CSR, SSR
๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ๊ณ ๋ฏผํด์ผํ ๊ฒโฆ.
์ ์ ๋ฆฌ์์ค
๊ณ ์ ๋ HTML, CSS, js ๋ฑ์ ์ ๊ณตํ๋ค.
HTML ํ์ด์ง
๋ธ๋ผ์ฐ์ ์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด WAS๊ฐ ํ
ํ๋ฆฟ ์์ง์ผ๋ก ๋์ ์ผ๋ก HTML์ ์์ฑํ๋ค.
์น ๋ธ๋ผ์ฐ์ ๋ HTML์ ํด์ํ๋ค.
HTTP API
HTML์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
์ฃผ๋ก JSON ํ์์ ์ฌ์ฉํ๊ณ , ๋ค์ํ ์์คํ
์์ ํธ์ถํ๋ค.
๋ฐ์ดํฐ๋ง ์ฃผ๊ณ ๋ฐ๊ณ , UI ํ๋ฉด์ด ํ์ํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋ณ๋๋ก ์ฒ๋ฆฌํ๋ค.
CSR, SSR
SSR - ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง
- ์๋ฒ์์ ์ต์ข HTML์ ์์ฑํด์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ค.
- ์ฃผ๋ก ์ ์ ์ธ ํ๋ฉด์์ ์ฌ์ฉ
- ๊ด๋ จ ๊ธฐ์ : JSP, ํ์๋ฆฌํ ๋ฑ
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด์ ํ๋ฉด ์ผ๋ถ๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
CRS - ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง
- HTML ๊ฒฐ๊ณผ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ์น ๋ธ๋ผ์ฐ์ ์์ HTML์ ๋์ ์ผ๋ก ์์ฑํ๋ค.
- ๋์ ์ธ ํ๋ฉด์์ ์ฌ์ฉํ์ฌ ํ์ํ ๋ถ๋ถ๋ง ๋ณ๊ฒฝํ ์ ์๋ค.
- ex) ๊ตฌ๊ธ ์ง๋..
- ๊ด๋ จ ๊ธฐ์ : React, Vue.js ๋ฑ
- HTML ์์ฒญ -> ์๋ฐ์คํฌ๋ฆฝํธ ์์ฒญ(ํด๋ผ์ด์ธํธ ๋ก์ง, HTML ๋ ๋๋ง ์ฝ๋) -> HTTP API ๋ฐ์ดํฐ ์์ฒญ -> ์น ๋ธ๋ผ์ฐ์ ์์ JS๋ก HTML ๊ฒฐ๊ณผ ๋ ๋๋ง
์๋ฐ ๋ฐฑ์๋ ๊ธฐ์ ์ญ์ฌ
์๋ธ๋ฆฟ - 1997
HTML ์์ฑ์ด ์ด๋ ค์
JSP - 1999
HTML ์์ฑ์ ํธํ์ง๋ง ๋น์ฆ๋์ค ๋ก์ง๊น์ง ๋๋ฌด ๋ง์ ์ญํ ์ ํ๋ค.
์๋ธ๋ฆฟ, JSP ์กฐํฉ = MVC ํจํด ์ฌ์ฉ
Model, View, Controller๋ก ์ญํ ์ ๋๋์ด ๊ฐ๋ฐ
์๋ง์ MVC ํ๋ ์ ์ํฌ
MVC ํจํด ์๋ํ, ๋ณต์กํ ์น ๊ธฐ์ ์ ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ค์ํ ๊ธฐ๋ฅ
ex) ์คํธ๋ฟ์ธ , ์คํ๋ง MVC(๊ณผ๊ฑฐ ๋ฒ์ ผ)
์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์คํ๋ง MVC
@Controller
๋ฑ์ ์ด๋
ธํ
์ด์
๋ฑ์ฅ.
์คํ๋ง ๋ถํธ์ ๋ฑ์ฅ
์คํ๋ง ๋ถํธ๋ ์๋ฒ๋ฅผ ๋ด์ฅํ๋ค.
๊ณผ๊ฑฐ๋ ์๋ฒ์ WAS๋ฅผ ์ง์ ์ค์นํ๊ณ , ์์ค๋ War ํ์ผ์ ๋ง๋ค์ด ์ค์นํ WAS์ ๋ฐฐํฌํด์ผํ๋ค.
์คํ๋ง ๋ถํธ๋ ๋น๋ ๊ฒฐ๊ณผ(Jar)์ WAS ์๋ฒ๋ฅผ ํฌํจํ๋ค. -> ๋น๋ ๋ฐฐํฌ ๋จ์ํ
์ต์ ๊ธฐ์ - ์คํ๋ง ์น ๊ธฐ์ ์ ๋ถํ
- Web Servlet - Spring MVC
- Web Reactive - Spring WebFlux
Spring WebFlux?
- ์์ ํ ๋น๋๊ธฐ ๋ ผ๋ธ๋กํน ์ฒ๋ฆฌ
- ์ต์ ์ค๋ ๋๋ก ์ต๋ ์ฑ๋ฅ - ์ค๋ ๋ ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ ํจ์จํ
- ํจ์ํ ์คํ์ผ ๊ฐ๋ฐ - ๋์์ฒ๋ฆฌ ์ฝ๋ ํจ์จํ
- ์๋ธ๋ฆฟ ๊ธฐ์ ์ฌ์ฉํ์ง ์์
- ํ์ง๋ง, RDB ์ง์์ด ๋ถ์กฑํ๋ค.
- ํ์ง๋ง, ์ผ๋ฐ MVC์ ์ค๋ ๋ ๋ชจ๋ธ๋ ์ถฉ๋ถํ ๋น ๋ฅด๋ค.
์๋ฐ ๋ทฐ ํ ํ๋ฆฟ ์ญ์ฌ
JSP
์๋๊ฐ ๋๋ฆฌ๊ณ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ๋ค.
ํ๋ฆฌ๋ง์ปค, Velocity
์๋ ๋ฌธ์ ํด๊ฒฐ, ๋ค์ํ ๊ธฐ๋ฅ
ํ์ ๋ฆฌํ
HTML ๋ชจ์์ ์ ์งํ๋ฉด์ ๋ทฐ ํ ํ๋ฆฟ ์ ์ฉ ๊ฐ๋ฅ (HTML ํ๊ทธ์ ์ ์ฉํ๊ธฐ ๋๋ฌธ์) ์คํ๋ง MVC์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ํตํฉ
โ๏ธ ๊น์๋์ ์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ ๊ฐ์ ๋ ธํธ โ๏ธ