DevLog ๐ถ
[Spring] WAS, ์๋ธ๋ฆฟ, ๋ฉํฐ ์ค๋ ๋์ ์ค๋ ๋ ํ ๋ณธ๋ฌธ
[Spring] WAS, ์๋ธ๋ฆฟ, ๋ฉํฐ ์ค๋ ๋์ ์ค๋ ๋ ํ
dolmeng2 2022. 8. 8. 22:49- ๊น์ํ ๋์ '์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ '์ ๋ณด๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค ๐
| ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด๋?
- ์น์ ๊ธฐ๋ณธ์ ์ผ๋ก HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํต์ ์ ํ๋ค.
โ ์น ์๋ฒ
→ HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
→ ์ ์ ๋ฆฌ์์ค ์ ๊ณต ๋ฐ ๊ธฐํ ๋ถ๊ฐ ๊ธฐ๋ฅ
→ ์ ์ (ํ์ผ) HTML, CSS, JS, ์ด๋ฏธ์ง ์์์ ํ์ผ์ ๋๋ฉด, ์๋ฒ๊ฐ ํด๋น ํ์ผ์ ์๋นํจ.
ex) NGINX, APACHE
โ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ - WAS
→ HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์
→ ์น ์๋ฒ ๊ธฐ๋ฅ์ ๋๋ถ๋ถ ํฌํจํจ! + (์ ์ ๋ฆฌ์์ค ์ ๊ณต ๊ฐ๋ฅ)
→ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์คํํด์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์ํ
: ์ฌ์ฉ์์ ๋ฐ๋ผ์ ๋์ ์ผ๋ก ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค ์ ์์.
: ๋์ HTML, HTTP API(JSON) : ์๋ธ๋ฆฟ, JSP, ์คํ๋ง MVC
ex) ํฐ์บฃ(Tomcat), Jetty, Undertow
โ ์น ์๋ฒ vs WAS
- ์น ์๋ฒ๋ ์ ์ ๋ฆฌ์์ค(ํ์ผ), WAS๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๊น์ง ์คํ
- ํ์ง๋ง... ์น ์๋ฒ๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ธฐ๋ฅ์ ํฌํจํ๊ธฐ๋ ํ๊ณ . WAS๋ ์น ์๋ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ๋ ํ๋ค.
- WAS๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์คํํ๋๋ฐ ๋ ํนํ๋์ด ์๋ค๊ณ ์๊ฐํ์.
โ ์น ์์คํ ๊ตฌ์ฑ - WAS, DB
- WAS, DB ๋ง์ผ๋ก๋ ์ฌ์ค ์์คํ ์ ๊ตฌ์ฑํ ์ ์๋ค. WAS๋ ์ ์ ๋ฆฌ์์ค, ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๊น์ง ์ปค๋ฒํ ์ ์์ผ๋๊น.
๐ฉ ๊ทธ๋ฌ๋ฉด, WAS ํ๋๋ง ๋๊ณ ์ฌ์ฉํ๋ฉด ์ ๋ ๊น?
- ๊ทผ๋ฐ, ์ด๋ฐ ์์ผ๋ก WAS๊ฐ ๋๋ฌด ๋ง์ ์ญํ ์ ๋ด๋นํ๋ฉด ์๋ฒ ๊ณผ๋ถํ๊ฐ ์ฌ ์ ์๋ค.
- ๋ํ, WAS๊ฐ ์ฅ์ ๋๋ฉด ์ค๋ฅ ํ๋ฉด๊น์ง ๋ ธ์ถ์ ๋ชปํ ์ ์๋ค. ์ ์ ๋ฆฌ์์ค๊น์ง ๋ด๋น์ ํด๋ฒ๋ฆฌ๋๊น.
โญ ๊ทธ๋์, ์ผ๋ฐ์ ์ผ๋ก Client -> Web Server -> WAS -> DB ์์ผ๋ก ๊ตฌ์ฑํ๋ค.
- ์ ์ ๋ฆฌ์์ค๋ ์น ์๋ฒ๊ฐ ์ฒ๋ฆฌ
- ์น ์๋ฒ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๊ฐ์ ๋์ ์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด WAS์ ์์ฒญ์ ์์
- WAS๋ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์ฒ๋ฆฌ๋ฅผ ๋งก๋๋ค.
๐ฉ ์ด๋ฐ ์์ผ๋ก ๋๋ฉด ๋ญ๊ฐ ์ข์๊น?
๋ฆฌ์์ค ๊ด๋ฆฌ๊ฐ ํจ์จ์ ์ด๋ค.
์ ์ ๋ฆฌ์์ค๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ค๋ฉด Web ์๋ฒ๋ฅผ, ์ ํ๋ฆฌ์ผ์ด์ ๋ฆฌ์์ค๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ฉด WAS๋ฅผ ์ฆ์คํ๋ฉด์ ์กฐ์ ํ๊ธฐ.
๋ํ, ๋ณดํต ์ ์ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ ์น ์๋ฒ๋ ์ ์ฃฝ์ง ์๊ธฐ ๋๋ฌธ์, WAS๊ฐ ์ฅ์ ๋ฌ์ ๋ ์น ์๋ฒ๊ฐ ๋์ ์ค๋ฅ ํ๋ฉด์ ์ ๊ณตํด์ค ์ ์๋ค.
| ์๋ธ๋ฆฟ์ด๋?
- ์๋ธ๋ฆฟ์ ์ฌ์ฉํ๋ฉด ์๋ฒ์์ ๋น์ฆ๋์ค ๋ก์ง ์คํ + DB ์ ๊ทผ์ ๋ ์ง์คํ ์ ์๋ค.
: ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญํ HTTP ๋ฉ์์ง๋ฅผ ์ง์ ํ์ฑํ ํ์ ์์ด, ์๋ธ๋ฆฟ ์ฝ๋๊ฐ ๋์ ์ํํด์ฃผ๋ ๊ฒ. (์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS ์ฌ์ฉํ๊ธฐ)
โ HttpServletRequest : HTTP ์์ฒญ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๋๋ก ๋์์ค๋ค.
โ HttpServletResponse : HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ ๊ณตํ๋๋ก ๋์์ค๋ค.
- ์ฆ, ๊ฐ๋ฐ์๊ฐ HTTP ์คํ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ญํ !
1. ํด๋ผ์ด์ธํธ๊ฐ localhost:8080/hello๋ก ์์ฒญ์ ์งํ.
2. WAS๋ ์์ฒญ ๋ฉ์์ง๋ฅผ ๋ฐํ์ผ๋ก HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
3. ์๋ธ๋ฆฟ ์ปจํ ์ด๋์์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ํจ์ (์ฌ๊ธฐ์์๋ HelloServlet์ด๋ผ๊ณ ๋ถ์๋๋ฐ, ์ค ์ฝ๋์์๋ HttpServlet์ ์์๋ฐ์ ์ปค์คํ ์๋ธ๋ฆฟ)์ ์คํํ๋ค.
: ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ ๊ฐ์ฒด (HelloServlet)๋ฅผ ์์ฑ ๋ฐ ํธ์ถ, ๊ทธ๋ฆฌ๊ณ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ๋ฅผ ํด์ค๋ค.
: ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ WAS์ ๋์ผํ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง๋ค.
4. ํจ์ ์คํ ์ข ๋ฃ ํ, HttpServletResponse ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก HTTP ์๋ต ๋ฉ์์ง๋ฅผ ๋ง๋ค์ด ๋ธ๋ผ์ฐ์ ์๊ฒ ์ ๋ฌํ๋ค.
๐ฉ ์ฆ, ๊ฐ๋ฐ์๋ Request ๊ฐ์ฒด๋ฅผ ํตํด HTTP ์์ฒญ ์ ๋ณด๋ฅผ ๊บผ๋ด์ ์ฌ์ฉํ๊ณ , Response ๊ฐ์ฒด๋ฅผ ํตํด HTTP ์๋ต ์ ๋ณด๋ฅผ ์ ๋ ฅํด์ฃผ๋ฉด ๋๋ค!
โ ์๋ธ๋ฆฟ ์ปจํ ์ด๋
- ํํ ์ฌ์ฉํ๋ ํฐ์บฃ์ ๊ฒฝ์ฐ ์๋ธ๋ฆฟ์ ์ง์ํ๋ฉฐ, ์ด๋ฌํ WAS๋ฅผ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ผ๊ณ ํ๋ค.
- ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ, ์ต์ด ๋ก๋ฉ ์์ ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ ์ดํ ์์ฒญ์ ๋์ผํ ์ธ์คํด์ค๋ฅผ ์ ๊ทผํ๋๋ก ํ๋ค.
- ๋จ, ์ฑ๊ธํค์ธ ๋งํผ ๊ฐ ์์ฒญ์ด ๋์์ ์ ๊ทผํ๋ ํ๋ ๊ด๋ฆฌ์ ์ฃผ์ํด์ผ ํ๋ค.
- ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ๋์ผํ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง๋ค.
- JSP (Java Server Page) ์ญ์ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ๋์ด ์ฌ์ฉ๋๋ค.
- ์๋ธ๋ฆฟ์ ๊ฒฝ์ฐ ๋์ ์์ฒญ์ ์ํด ๋ฉํฐ ์ค๋ ๋ ์ฒ๋ฆฌ๋ฅผ ์ง์ํด์ค๋ค! (WAS๊ฐ ์์์ ์ฒ๋ฆฌํด์ค๋ค!)
๐ฉ ์ฆ, WAS๋ Web Server + Web Container (Servlet Container)๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์ฐธ๊ณ ๋ก, ์๋ธ๋ฆฟ์ ๊ฒฝ์ฐ ์๋ฒ ์ค์ ์ ๋ฐ๋ผ ์์ฑ ์์ ์ด ๋ค๋ฅด๋ค. ๋ก๋ฉ ์์ ์ ์์ฑํ ์๋ ์๊ณ , ์ต์ด ์์ฒญ ์์ ์๋ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
์ฌ๊ธฐ์, ์๋ธ๋ฆฟ ๋ก๋ฉ ์์ ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ init() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ณผ์ ์ด๋ค.
: init() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ํ์ํ ์ด๊ธฐํ ์์ ์ ์ํํ ์ ์๋ค.
: ์๋ธ๋ฆฟ์ ์ปค์คํ ์ด๊ธฐํํ๊ธฐ ์ํด์ init() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ์ฌ๊ตฌํํด์ฃผ๋ฉด ๋๋ค.
์ฌ๋งํ๋ฉด ์ด๊ธฐํ ์์ ์ ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ (์๋์ ) ์์ฒญ ์์ ๋ง๊ณ ๋ก๋ฉ ์์ ์ ์์ฑํ๋ ๊ฒ ์ข๋ค. (๋ํดํธ๋ ์์ฒญ ์์ )
: ์์ฑ ์์ ์ผ๋ก ๋ฐ๊พธ๋ ค๋ฉด @WebServlet(loadOnStartUp=0) ์ด๋ฐ ์์ผ๋ก ์ฐ์ ์์๋ฅผ ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
์ ๊ทธ๋ฆผ์์ service() ๋ฉ์๋๋ ์๋ธ๋ฆฟ์ด ๋ธ๋ผ์ฐ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋จ๊ณ์ด๋ฉฐ, doGet(), doPost()๋ ๊ฐ๊ฐ GET, POST ๊ฐ์ HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ด๋ค. init()์ ๊ฐ์ฒด ์์ฑ ํ 1ํ์ง๋ง, doGet(), doPost()๋ ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ๋งค๋ฒ ํธ์ถ๋๋ค๊ณ ๋ณผ ์ ์๋ค.
| ๋์ ์์ฒญ๊ณผ ๋ฉํฐ ์ค๋ ๋
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ํ๋ฉด ์๋ฒ์์๋ servlet์ ํธ์ถํด์ ์๋ต์ ์ค์ผ ํ๋๋ฐ, ์ด๋ฅผ ๋๊ฐ ํธ์ถํด์ค๊น?
- ๋ฐ๋ก, ์ค๋ ๋๊ฐ ํธ์ถ์ ํด์ค๋ค!
โ ์ค๋ ๋๋?
- ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ํ๋ํ๋ ์์ฐจ์ ์ผ๋ก ์คํํ๋ ๊ฒ
- ์๋ฐ์์๋ main์ด๋ผ๋ ์ด๋ฆ์ ์ค๋ ๋๊ฐ ๊ฐ์ฅ ์ฒ์ ์คํ๋๋ฉฐ, ์ค๋ ๋๋ ํ ๋ฒ์ ํ๋์ ์ฝ๋ ๋ผ์ธ๋ง ์ํ๋๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ๋์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด ์ค๋ ๋๋ฅผ ์ถ๊ฐ๋ก ์์ฑํด์ผ ํ๋ค.
[๋จ์ผ ์์ฒญ ์ํฉ - ๋จ์ผ ์ค๋ ๋ ์ฌ์ฉ]
1. ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ํ๋ฉด, ํด๋น ์์ฒญ์ ๋ํ ์ค๋ ๋๊ฐ ํ ๋น์ด ๋๋ค.
2. ํด๋น ์ค๋ ๋๋ฅผ ์ด์ฉํ์ฌ ์๋ธ๋ฆฟ์ ์คํํ๋ค.
3. ์๋ต๊น์ง ์งํํ ๋ค์, ์ค๋ ๋๋ ํด์์ ๋ค์ด๊ฐ๋ค.
[๋ค์ค ์์ฒญ ์ํฉ - ๋จ์ผ ์ค๋ ๋ ์ฌ์ฉ]
1. ์์ฒญ์ด ๋ค์ด์์ ๋ ์ค๋ ๋๋ฅผ ์์ฑํ์ฌ ์๋ธ๋ฆฟ์ ํธ์ถํ์๋ค.
2. ๋ง์ฝ, ์ด๋ ํ ํด๋น ์๋ธ๋ฆฟ์ด ์ด๋ ํ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์์ ๋ ๋ ๋ค๋ฅธ ์์ฒญ์ด ๋ค์ด์จ๋ค๋ฉด ๋๊ธฐ ์ํ์ ๋ค์ด๊ฐ๋ค.
3. ์ด๋ ๊ฒ ๋๋ฉด ์์ฒญ1์ ์ฒ๋ฆฌ ์ง์ฐ, ์์ฒญ 2๋ ๋๊ธฐํ๋ค ๋ณด๋ ๋ ๋ค timeout์ผ๋ก ์ฃฝ์ด๋ฒ๋ฆฐ๋ค.
[๋ค์ค ์์ฒญ ์ํฉ - ๋ค์ค ์ค๋ ๋ ์ฌ์ฉ]
- ์์ฒญ๋ง๋ค ์ค๋ ๋๋ฅผ ์์ฑํ๊ธฐ. ๋น์ฐํ ๋์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- ํ์ง๋ง, ์ ๋ฐฉ๋ฒ์ ๋น์ฉ์ ์ผ๋ก๋ ๋น์ธ๊ณ , ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ ๋ฌธ์ , ๊ทธ๋ฆฌ๊ณ CPU, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ฐ๋ผ ์๋ฒ๊ฐ ์ฃฝ์ด๋ฒ๋ฆด ์๋ ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์ค๋ ๋ ํ์ ์ฌ์ฉํด๋ณด์.
โ ์ค๋ ๋ ํ
- ์์ฒญ์ด ์ค๋ฉด ์ค๋ ๋ ํ์๊ฒ ์์ฒญ์ ํ๊ณ , ์ค๋ ๋ ํ์์ ๊ฐ์ ธ๋ค ์ด ๋ค์ ๋๋ ํ ๋ฐํํ๊ธฐ.
- ์ค๋ ๋ ํ๋ณด๋ค ๋ ๋ง์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋๊ธฐํ๊ฑฐ๋ ๊ฑฐ์ ๋๋ค.
- ์์ฑ ๊ฐ๋ฅํ ์ค๋ ๋์ ์ต๋์น๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค. (ํฐ์บฃ์ ๊ธฐ๋ณธ์ ์ผ๋ก 200๊ฐ)
- ์ค๋ ๋๊ฐ ๋ฏธ๋ฆฌ ์์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ค๋ ๋ ์์ฑ ๋ฐ ์ข ๋ฃ ๋น์ฉ์ด ์ ์ฝ๋๋ฉฐ, ์๋ต์๊ฐ์ด ๋น๊ต์ ๋น ๋ฅด๋ค.
๐ฉ WAS์์ ์ต๋ ์ค๋ ๋ ์๋ฅผ ์ด๋ป๊ฒ ๋๋์ง๊ฐ ์ค์ํ๋ค.
์ต๋ ์ค๋ ๋ ์๊ฐ ๋๋ฌด ์์ผ๋ฉด ์๋ฒ๋ ์ฌ์ ๋กญ์ง๋ง ํด๋ผ์ด์ธํธ๋ ์๋ต ์ง์ฐ์ด ๊ณ์ ๋ํ๋ ๊ฒ์ด๊ณ ,
๋๋ฌด ๋ง์ผ๋ฉด ์๋ฒ๊ฐ ์ฝ๊ฒ ๋ค์ด๋ ์๊ฐ ์๋ค๋ ์ ์ด ์กด์ฌํ๋ค. ๊ทธ๋์ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ ์ํํด๋ณด๋ ๊ฒ ์ค์.
์๋ฌดํผ, WAS์์๋ ๋ฉํฐ ์ค๋ ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ์์์ ์ ๊ฒฝ์ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ ํฌ๊ฒ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค. (์ฑ๊ธ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ฒ๋ผ ์ฝ๋ ์ง๊ธฐ) ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ ์ฑ๊ธํค ๊ฐ์ฒด - ์๋ธ๋ฆฟ, ์คํ๋ง ๋น์ ์ฃผ์ํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๐ฉ ์ค๋ ๋ ํ ๋์ ๊ณผ์
- ์ด๊ธฐ์ ์ค๋ ๋๋ฅผ ์ต๋์น๋งํผ ์์ฑํด๋๋ค. (server.tomcat.threads.max๋ก ์ค์ )
- ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์์ ํ์ ๋ด์๋๊ณ , idle ์ํ์ธ ์ค๋ ๋๊ฐ ์กด์ฌํ๋ค๋ฉด ํ์์ ๊บผ๋ด ์ค๋ ๋์๊ฒ ์์ ์ ํ ๋นํ๋ค.
- ๋ง์ฝ, idle์ธ ์ํ์ ์ค๋ ๋๊ฐ ์๋ค๋ฉด ํ์์ ๋๊ธฐํ๊ณ , ์ด ์ํ๊ฐ ์ง์๋์ด ํ๊ฐ ๊ฝ ์ฐจ๋ฉด ์๋ก์ด ์ค๋ ๋๋ฅผ ์์ฑํ๋ค.
- ๋ง์ฝ ์ค๋ ๋๊น์ง ์ต๋ ์ฌ์ด์ฆ๊ฐ ๋๋ค๋ฉด connection-refused๋ฅผ ๋ฐํํ๋ค.- ์์ฒญ ์์ ์ด ์ข ๋ฃ๋๋ฉด ์ค๋ ๋๋ idle ์ํ๊ฐ ๋๋ค.
- Connector : ์์ผ ์ฐ๊ฒฐ ๋ฐ ๋ฐ์ดํฐ ํจํท์ ํ๋ํ์ฌ HttpServletRequest ๊ฐ์ฒด๋ก ๋ณํ, Servlet ๊ฐ์ฒด์ ์ ๋ฌํด์ฃผ๋ ์ญํ .
- Acceptor์์ while๋ฌธ์ ํตํด ๋๊ธฐํ๋ฉฐ port listen์ ํตํด ์์ผ ์ฐ๊ฒฐ์ ์ป๋๋ค.
- ์์ผ ์ฐ๊ฒฐ๋ก๋ถํฐ ์ป์ ๋ฐ์ดํฐ๋ฅผ ํ์ฑํด์ HttpServletRequest ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ํด๋น ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๊ณ , ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ ์ฐพ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
- ํฐ์บฃ 8.5๋ถํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก NIO Connector๋ฅผ ์ฑํํ์๋ค.
- NIO Connector์ ๊ฒฝ์ฐ Poller๋ผ๋ ๋ณ๋์ ์ค๋ ๋๊ฐ ์ปค๋ฅ์ ์ ์ฒ๋ฆฌํ๋๋ฐ,
Socket์ ์บ์๋ก ๋ค๊ณ ์๋ค๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๋๋ง์ค๋ ๋๋ฅผ ํ ๋นํ์ฌ idle ์ํ๋ก ๋จ๋ ๊ฑธ ์ต๋ํ ์ค์ฌ์ฃผ๋ ๊ฒ์ด๋ค.
๐ฉ Acceptor์์ ์์ผ ์ฐ๊ฒฐ ์ป๊ธฐ -> ์์ผ์์ ์์ผ ์ฑ๋ ๊ฐ์ฒด๋ฅผ ํตํด ํฐ์บฃ์ NIOChannel ๊ฐ์ฒด๋ก ๋ณํ -> PollEvent๋ผ๋ ๊ฐ์ฒด๋ก ์บก์ํํ์ฌ ํ์ ์ ๋ฌ -> ์ค๋ ๋๋ ํ์ ์๋ ๊ฐ์ฒด๋ฅผ ๊บผ๋ด์ ์ฌ์ฉ
| HTML, API, CSR, SSR
โ ์ ์ ๋ฆฌ์์ค
- ๊ณ ์ ๋ HTML ํ์ผ, CSS, JS, ์ด๋ฏธ์ง, ์์ ๋ฑ ์ ๊ณต. ์์ฒญ์ด ์ค๋ฉด ์ด๋ฏธ ์์ฑ๋์ด ์๋ ํ์ผ์ ๋ฆฌํดํ๋ค.
โ HTML ํ์ด์ง
- ๋์ ์ผ๋ก ํ์ํ HTML ํ์ผ์ ์์ฑ(JSP, ํ์๋ฆฌํ ๋ฑ ์ ์ฉ)ํด์ ์ ๋ฌํ๋ฉฐ, ์น ๋ธ๋ผ์ฐ์ ๋ HTML ํ์ผ์ ํด์ํ์ฌ ๋์์ค๋ค.
โ HTML API
- HTML์ด ์๋๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก, ์ฃผ๋ก JSON ํํ๋ก ์ ๋ฌํ๋ค.
- ์น ๋ธ๋ผ์ฐ์ ๋ JSON ํํ๋ก ๋ฐ์ดํฐ๊ฐ ์ค๋ฉด ๋ณ๋์ ํด์ ์์ด ๊ทธ๋๋ก ํ๋ฉด์ ๋ณด์ฌ์ค๋ค.
- ๋ฐ์ดํฐ๋ง ์ฃผ๊ณ ๋ฐ๊ธฐ ๋๋ฌธ์ UI๊ฐ ํ์ํ๋ค๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋ณ๋๋ก ์ฒ๋ฆฌํด์ผ ํ๋ค.
๐ฉ ๊ฐ๋ฐ์๋ ์ ์ ๋ฆฌ์์ค๋ฅผ ์ด๋ป๊ฒ ์ ๊ณตํ ๊ฒ์ธ์ง, ๋์ ์ผ๋ก ์ ๊ณต๋๋ HTML ํ์ด์ง๋ฅผ ์ด๋ป๊ฒ ์ ๊ณตํ ๊ฒ์ธ์ง,
HTTP api๋ฅผ ์ด๋ป๊ฒ ์ ๊ณตํ ๊ฒ์ธ์ง ๊ณ ๋ฏผํ๋ฉด ๋๋ค.
โ SSR (Server-Side Rendering)
- ๋ค ๋ง๋ค์ด์ง HTML์ ๋ฐ์์์ ๋ ๋๋งํ๋ ๋ฐฉ๋ฒ.
- ์น ์๋ฒ์ ๊ณ์ ์๋ก์ด ํ์ด์ง์ ๋ํ ์์ฒญ์ ์งํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์ด๊ธฐ ๋ก๋ฉ ์๋๋ ๋น ๋ฅด์ง๋ง, ๋งค๋ฒ ์์ฒญํ ๋๋ง๋ค ์๋ก๊ณ ์นจ์ด ๋๊ธฐ ๋๋ฌธ์ ์ดํ ์๋ฒ์ ๋ถํ๊ฐ ๊ฐ๋ค.
- JSP, ํ์๋ฆฌํ ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค.
โ CSR (Client-Side Rendering)
- HTML ๊ฒฐ๊ณผ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ์ฌ ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ ์ผ๋ก ์์ฑํ์ฌ ์ ์ฉํ๋ ๋ฐฉ๋ฒ.
- ์ด๊ธฐ ๋ก๋ฉ ์ HTML, static ํ์ผ๋ค์ ๋ฐ๊ธฐ ๋๋ฌธ์ (๋น์ด์์) ๋น๊ต์ ๋๋ฆฌ์ง๋ง, ๊ทธ ์ดํ ํ์์ ๋ฐ๋ผ ์๋ฒ์๊ฒ ์์ฒญํ๊ธฐ ๋๋ฌธ์ ๋ถํ๊ฐ ์ ๋ค.
- React, Vue.js ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ค์ ํฌ์คํ ๋ถํฐ๋ ์คํ๋ง์์ ์ ๊ณตํ๋ ์๋ธ๋ฆฟ์ ๋ํด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์๋ณด์!