[Web] Web Server ์ WAS์ ์ฐจ์ด
Web Server
์น ๋ธ๋ผ์ฐ์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ HTTP ์์ฒญ์ ๋ฐ์ ์ ์ ์ธ ์ปจํ ์ธ (.html .jpeg .css ๋ฑ)๋ฅผ ์ ๊ณตํ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ
HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ ๋๋ ์น ํฌ๋กค๋ฌ)์ ์์ฒญ์ ์๋น์ค ํ๋ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ค.
- ์ ์ ์ธ ์ฝํ ์ธ ์ ๊ณต : WAS๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก ์์ ์ ๊ณต
- ๋์ ์ธ ์ปจํ
์ธ ์ ๊ณต์ ์ํ ์์ฒญ ์ ๋ฌ : ํด๋ผ์ด์ธํธ ์์ฒญ์ WAS์ ๋ณด๋ด๊ณ , WAS๊ฐ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ(์๋ต)ํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ผ๋ฐ์ ์ผ๋ก ์น ๋ธ๋ผ์ฐ์
ex) Apache Server, Nginx, IIS(Windows ์ ์ฉ Web ์๋ฒ) ๋ฑ
์์ง์์ค๋ ์ํ์น์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋ง๋ ํ๋ก๊ทธ๋จ.
์ํ์น๋ C10K Problem์ด๋ผ๊ณ ํด์ ํ๋์ ์น์๋ฒ์ 10,000๊ฐ์ ํด๋ผ์ด์ธํธ ์ ์์ ์ปค๋ฒํ ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ๋ฒผ์๊ณผ ๋์ ์ฑ๋ฅ์ ์ถ๊ตฌํ๋ฉฐ ๋ง๋ค์ด์ก์ต๋๋ค.
์ํ์น์์ ์ฐจ์ด์ ์
์ํ์น๋ ์ฐ๋ ๋/ํ๋ก์ธ์ค ๊ธฐ๋ฐ ๊ตฌ์กฐ(MPM : Multi-Process Module)์ด๋ฉฐ, ๊ฐ ์์ฒญ๋น ์ฐ๋ ๋ ํ๋๊ฐ ์ฒ๋ฆฌํฉ๋๋ค. ํ๋ช ์ ํด๋ผ์ด์ธํธ ๋น ํ๋์ ์ฐ๋ ๋๊ฐ ํ ๋น ๋๋ฏ๋ก ์ฌ์ฉ์๊ฐ ๋ง์์ง๋ฉด ์์คํ ์์ ๋ญ๋น๊ฐ ์ฌํด์ง๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๋ฐ๋ฉด ์์ง์์ค๋ ๋น๋๊ธฐ ๊ธฐ๋ฐ ๊ตฌ์กฐ(Event-Driven ๋ฐฉ์)๋ผ ๋ ์ ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํด์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
Web Server๋ง ์กด์ฌํ๋ค๋ฉด?
์น ํ์ด์ง๋ ์ ์ ์ปจํ ์ธ ์ ๋์ ์ปจํ ์ธ ๊ฐ ๋ชจ๋ ์กด์ฌํ๋ค. ์ฌ์ฉ์์ ์์ฒญ์ ๋ง๊ฒ ์ ์ ํ ๋์ ์ปจํ ์ธ ๋ฅผ ๋ง๋ค์ด์ ์ ๊ณตํด์ผ ํ๋ค.
์ด๋, Web Server๋ง์ ์ด์ฉํ๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์ํ๋ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ์ ๋ชจ๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๊ณ ์๋น์ค๋ฅผ ํด์ผ ํ๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ์ํํ๊ธฐ์๋ ์์์ด ์ ๋์ ์ผ๋ก ๋ถ์กฑํ๋ค.
๋ฐ๋ผ์ WAS๋ฅผ ํตํด ์์ฒญ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ DB์์ ๊ฐ์ ธ์์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ง๊ฒ ๊ทธ๋ ๊ทธ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์ ๊ณตํจ์ผ๋ก์จ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
WAS(Web Application Server)
DB ์กฐํ๋ ๋ค์ํ ๋ก์ง ์ฒ๋ฆฌ๋ฅผ ์๊ตฌํ๋ ๋์ ์ธ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ง๋ค์ด์ง Application Server
WAS = Web Server + Web Container
- HTTP๋ฅผ ํตํด ์ปดํจํฐ๋ ์ฅ์น์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํํด์ฃผ๋ ๋ฏธ๋ค์จ์ด(์ํํธ์จ์ด ์์ง).
- “์น ์ปจํ
์ด๋(Web Container)” ํน์ “์๋ธ๋ฆฟ ์ปจํ
์ด๋(Servlet Container)”๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
- Container๋ JSP, Servlet์ ์คํ์ํฌ ์ ์๋ ์ํํธ์จ์ด๋ฅผ ๋งํ๋ค.
- ์ฆ, WAS๋ JSP, Servlet ๊ตฌ๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
- Web Server ๊ธฐ๋ฅ๋ค์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ฒ๋ฆฌํ๊ณ ์ํ๋ ๋ชฉ์ ์ผ๋ก ์ ์
- ๋ถ์ฐ ํธ๋์ญ์ , ๋ณด์, ๋ฉ์์ง, ์ฐ๋ ๋ ์ฒ๋ฆฌ ๋ฑ์ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ ๋ถ์ฐ ํ๊ฒฝ์์ ์ฌ์ฉ๋๋ค.
- ์ฃผ๋ก DB ์๋ฒ์ ๊ฐ์ด ์ํ๋๋ค.
- ํ๋ก๊ทธ๋จ ์คํ ํ๊ฒฝ๊ณผ DB ์ ์ ๊ธฐ๋ฅ ์ ๊ณต
- ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์ (๋ ผ๋ฆฌ์ ์ธ ์์ ๋จ์) ๊ด๋ฆฌ ๊ธฐ๋ฅ
- ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ ๋น์ฆ๋์ค ๋ก์ง ์ํ
ex) Tomcat, JBoss, Jeus, Web Sphere ๋ฑ
ํ์ฌ๋ WAS๊ฐ ๊ฐ์ง๊ณ ์๋ Web Server๋ ์ ์ ์ธ ์ปจํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์์ด์ ์ฑ๋ฅ์ ํฐ ์ฐจ์ด๊ฐ ์์ง๋ง ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ฒ ๋ถํ๋ฅผ ๋ฐฉ์งํ๊ณ , WAS๋ฅผ ํตํด ์์ฒญ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ DB์์ ๊ฐ์ ธ์์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ง๊ฒ ๊ทธ๋ ๊ทธ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์ ๊ณตํจ์ผ๋ก์จ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ๋ ์ด์
- ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ์๋ฒ ๋ถํ ๋ฐฉ์ง
- WAS๋ DB ์กฐํ๋ ๋ค์ํ ๋ก์ง์ ์ฒ๋ฆฌํ๋๋ผ ๋ฐ์๊ธฐ ๋๋ฌธ์ ๋จ์ํ ์ ์ ์ปจํ ์ธ ๋ Web Server์์ ๋น ๋ฅด๊ฒ ํด๋ผ์ด์ธํธ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ข๋ค.
- WAS๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์กด์ฌํ๋ ์๋ฒ์ด๋ค.
- ๋ง์ฝ ์ ์ ์ปจํ ์ธ ์์ฒญ๊น์ง WAS๊ฐ ์ฒ๋ฆฌํ๋ค๋ฉด ์ ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ก ์ธํด ๋ถํ๊ฐ ์ปค์ง๊ฒ ๋๊ณ , ๋์ ์ปจํ ์ธ ์ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋จ์ ๋ฐ๋ผ ์ํ ์๋๊ฐ ๋๋ ค์ง๋ค.
- ์ฆ, ์ด๋ก ์ธํด ํ์ด์ง ๋ ธ์ถ ์๊ฐ์ด ๋์ด๋๊ฒ ๋ ๊ฒ์ด๋ค.
- ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ๋ณด์ ๊ฐํ
- SSL์ ๋ํ ์๋ณตํธํ ์ฒ๋ฆฌ์ Web Server๋ฅผ ์ฌ์ฉ
- ์ฌ๋ฌ ๋์ WAS๋ฅผ ์ฐ๊ฒฐ ๊ฐ๋ฅ
- Load Balancing์ ์ํด์ Web Server๋ฅผ ์ฌ์ฉ
- fail over(์ฅ์ ๊ทน๋ณต), fail back ์ฒ๋ฆฌ์ ์ ๋ฆฌ
- ํนํ ๋์ฉ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ(์ฌ๋ฌ ๊ฐ์ ์๋ฒ ์ฌ์ฉ) Web Server์ WAS๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ฌด์ค๋จ ์ด์์ ์ํ ์ฅ์ ๊ทน๋ณต์ ์ฝ๊ฒ ๋์ํ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด, ์ ๋จ์ Web Server์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ WAS๋ฅผ ์ด์ฉํ์ง ๋ชปํ๋๋ก ํ ํ WAS๋ฅผ ์ฌ์์ํจ์ผ๋ก์จ ์ฌ์ฉ์๋ ์ค๋ฅ๋ฅผ ๋๋ผ์ง ๋ชปํ๊ณ ์ด์ฉํ ์ ์๋ค.
- ์ฌ๋ฌ ์น ์ดํ๋ฆฌ์ผ์ด์
์๋น์ค ๊ฐ๋ฅ
- ์๋ฅผ ๋ค์ด, ํ๋์ ์๋ฒ์์ PHP Application๊ณผ Java Application์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ๊ธฐํ
- ์ ๊ทผ ํ์ฉ IP ๊ด๋ฆฌ, 2๋ ์ด์์ ์๋ฒ์์์ ์ธ์ ๊ด๋ฆฌ ๋ฑ๋ Web Server์์ ์ฒ๋ฆฌํ๋ฉด ํจ์จ์ ์ด๋ค.
์ฆ, ์์ ์ด์ฉ์ ํจ์จ์ฑ ๋ฐ ์ฅ์ ๊ทน๋ณต, ๋ฐฐํฌ ๋ฐ ์ ์ง๋ณด์์ ํธ์์ฑ ์ ์ํด Web Server์ WAS๋ฅผ ๋ถ๋ฆฌํ๋ค.
Web Server๋ฅผ WAS ์์ ๋๊ณ ํ์ํ WAS๋ค์ Web Server์ ํ๋ฌ๊ทธ์ธ ํํ๋ก ์ค์ ํ๋ฉด ๋์ฑ ํจ์จ์ ์ธ ๋ถ์ฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.