Apache๋ Nginx๋, ๊ทธ๊ฒ์ด ์๊ณ ์ถ๋ค.
์น์๋ฒ๋ HTTP ํ๋กํ ์ฝ์ ํตํด ์ฝํ์ ์๋ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌ๋ฅผ ํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์น ์ดํ๋ฆฌ์ผ์ด์
์ ์๋จ์ ๋ฐฐ์น๋๊ณค ํ๋ค. ๋์ ์ธ ๋ฆฌ์์ค๋ WAS์๊ฒ ์ฒ๋ฆฌํ๋๋ก ํ๊ณ ์ ์ ์ธ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ์๋ ์๋ค. ํฌ๊ฒ Apache์ Nginx๊ฐ ์ฌ์ฉ๋๊ณค ํ๋๋ฐ ์ด ๋์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น? ์ฌ์ค ํ์๋ ์ฌ๋ด์์ ์ฃผ๋ก Apache๋ง ์ฌ์ฉํ๋ค๋ณด๋ Nginx๋ ๊ทธ์ Apache์๋ ๋ค๋ฅธ ๋ฐฉ์์ ์น์๋ฒ๋ค
๋๋ ๋ณด๋ค ๊ฒฝ๋ํ ๋์๋ค
์ ๋๋ก๋ง ์๊ณ ์์๋๋ฐ ์ด๋ฒ๊ธฐํ๋ฅผ ํตํด ์ ๋๋ก ์๊ณ ๋น๊ต๋ฅผ ํด๋ณด๋ฉด์ ๊ฒฐ๊ตญ ์ด๋ค๊ฒ ์ข์์ง ์์๋ณด๊ณ ์ ํ๋ค.
๊ตฌ๊ธ๋ง์ ์กฐ๊ธ๋ง ํด๋ณด๋ฉด Apache์ Nginx๋ฅผ ๋น๊ตํ๋ ํฌ์คํ ์ด ๋ง์ด ๋์จ๋ค. ์ด๋ฒ ํฌ์คํ ์ ๋ชฉ์ ์ด๋ฌํ ์ ๋ณด๋ค์ ๋จ์ํ ์์ฝ/์ข ํฉ ํ๋ ค๋๊ฒ ์๋๊ณ , ์ต๋ํ ์ค๋ฌด ์๋น์ค๋ฅผ ์ด์ํ๋ ์๊ฐ์ผ๋ก ์ ๋ฆฌํ๊ณ ์ ํจ์ ๋ฐํ๋ค.
Apache ( https://httpd.apache.org/ )
์ฐ๋ฆฌ๋๋ผ์์ ์น์ดํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ์ฌ๋๋ค์ ํ๋ฒ์ฏค์ ๋ค์ด๋ดค์ Apache
. ๊ตญ๋ด ์ผ๋ฐ์ ์ธ ๊ธฐ์
์์ ์น์๋ฒ์ ํ์ค์ผ๋ก ์๋ฆฌ์ก์๋ค๊ณ ํด๋ ๊ณผ์ธ์ด ์๋๊ฒ ๊ฐ๋ค. Client์์ ์์ฒญ์ ๋ฐ์ผ๋ฉด MPM (Multi Processing Module : ๋ค์ค์ฒ๋ฆฌ๋ชจ๋) ์ด๋ผ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํ๋๋ฐ ๋ํ์ ์ผ๋ก๋ Prefork์ Worker๋ฐฉ์์ด ์๋ค. ๊ฐ๋จํ๊ฒ ์ด๋ค์์ผ๋ก ์ฒ๋ฆฌํ๋์ง ์๊ณ ๋์ด๊ฐ์.
- Prefork MPM
Prefork MPM, http://old.zope.org/Members/ike/Apache2/osx/configure_html
์คํ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๋ณต์ ๋์ด ์ฒ๋ฆฌ๊ฐ ๋๋ค. ๊ฐ ํ๋ก์ธ์ค๋ ํ๋ฒ์ ํ ์ฐ๊ฒฐ๋ง ์ฒ๋ฆฌํ๊ณ ์์ฒญ๋์ด ๋ง์์ง์๋ก ํ๋ก์ธ์ค๋ ์ฆ๊ฐํ์ง๋ง ๋ณต์ ์ ๋ฉ๋ชจ๋ฆฌ์์ญ๊น์ง ๋ณต์ ๋์ด ๋์ํ๋ฏ๋ก ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต์ ๊ฐ ์์ด ์์ ์ ์ด๋ผ ๋ณผ์ ์๋ค.
- Worker MPM
Worker MPM, http://old.zope.org/Members/ike/Apache2/osx/configure_html
Prefork ๋์๋ฐฉ์์ด 1๊ฐ์ ํ๋ก์ธ์ค๊ฐ 1๊ฐ์ ์ค๋ ๋๋ก ์ฒ๋ฆฌ๊ฐ ๋์๋ค๋ฉด Worker ๋์๋ฐฉ์์ 1๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๊ฐ๊ฐ ์ฌ๋ฌ ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค. ์ฐ๋ ๋๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ฉฐ PreFork๋ฐฉ์๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ฌ์ฉํ๋ ์ฅ์ ์ด ์๋ค.
์ฐธ๊ณ ๋ก WAS๋ก tomcat์ ์ฐ๋ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด mod_jk, mod_proxy, mod_proxy_ajp ๋ฐฉ์์ Apache ์์ฒด์ ์ผ๋ก ์ง์ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ค์ํ๊ณ ํจ์จ์ ์ผ๋ก tomcat์ ์ฐ๋ํ ์ ์๋ค. ์ฐธ๊ณ ๋งํฌ
Nginx ( https://nginx.org/en/ )
Nginx์ ๋ํด ์ดํด๋ณด๊ธฐ ์ ์ ๊ตฌ๊ธ ํธ๋๋๋ฅผ ํ์ฉํ์ฌ Nginx์ ๋ํ ๊ด์ฌ์ด ์ด๋์ ๋์ธ์ง๋ฅผ ๋ณด๊ณ ๋์ด๊ฐ์.

์ ์ธ๊ณ๋ Nginx๋ณด๋ค๋ Apache์ ๋ํ ๊ด์ฌ์ด ๋ง์๊ฒ์ผ๋ก ๋ณด์ด๋๋ฐ ๊ตญ๋ด๋ ์์ฃผ ์กฐ๊ธ์ฉ Nginx์ ๋ํ ๊ด์ฌ์ด ์ค๋ฅด๋๊ฒ์ ๋ณผ์์์๋ค. (๊ทธ๋๋ ์์ง์ Apache๊ฐ ์๋ฑํ ์ฐ์ธํ ํธ์ด๋ค.)
๊ทธ๋ผ Nginx๋ ์ด๋ค์์ผ๋ก ๋์๊ฐ๋ ๊ฒ์ผ๊น? ๊ฐ์ฅ ์ ๋ช
ํ(?) ํน์ง์ด๋ผ๋ฉด Event Driven ๋ฐฉ์
์ ๊ผฝ์์ ์์๊ฒ ๊ฐ๋ค. Event Driven ๋ฐฉ์์ ๋ํด ์ ๊น ์ธ๊ธ์ ํ๊ณ ๋์ด๊ฐ๋ฉด ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ด๋ค ๋์์ ํด์ผํ๋์ง๋ง ์๋ ค์ฃผ๊ณ ๋ค๋ฅธ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค. (Producer Consumer Pattern๊ณผ ์ ์ฌํ๋ค.) ๊ทธ๋ฌ๋ค๋ณด๋ ํ๋ก์ธ์ค๋ฅผ forkํ๊ฑฐ๋ ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๋ ์ํ์น์๋ ๋ฌ๋ฆฌ CPU์ ๊ด๊ณ์์ด ๋ชจ๋ IO๋ค์ ์ ๋ถ Event Listener๋ก ๋ฏธ๋ฃจ๊ธฐ ๋๋ฌธ์ ํ๋ฆ์ด ๋๊ธฐ์ง ์๊ณ ์๋ต์ด ๋น ๋ฅด๊ฒ ์งํ์ด ๋์ด 1๊ฐ์ ํ๋ก์ธ์ค๋ก ๋ ๋น ๋ฅธ ์์
์ด ๊ฐ๋ฅํ๊ฒ ๋ ์ ์๋ค. ์ด๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ์ธ ์ธก๋ฉด์์ Nginx๊ฐ System Resource๋ฅผ ์ ๊ฒ ์ฒ๋ฆฌํ๋ค๋ ์ฅ์ ์ด ์๋ค๊ณ ํ๋ค.

๊ทธ๋์ ๋ญ๊ฐ ์ข์๊ฐ?
์ด ํฌ์คํ
์ ์ ์ผ๋ฉด์ ๋ง์ง๋ง์ Apache๊ฐ ๋์ข๋ค
๋๋ Nginx๊ฐ ๋์ข๋ค
๋ก ๋ง๋ฌด๋ฆฌ๋ฅผ ์ง๊ณ ์ถ์๋๋ฐ ์ด๋ ์์ฌ/๊ต์ ํ๋ก๊ทธ๋จ์ฒ๋ผ ์ด์ฉ์ ์๋ ์ด๋ฆฐ๊ฒฐ๋ง
๋ก ๋ง๋ฌด๋ฆฌ๋ฅผ ์ง์์๋ฐ์ ์์๊ฒ ๊ฐ๋ค. (์ด์ฐ๋ณด๋ฉด ์ด๊ฒ ์ ๋ต์ผ์๋?)
๊ธฐ์ ์ ์ ํ์ ์์ด์ ์ ๋ต์ ์๋๊ฒ ๊ฐ๋ค.(๋ฌผ๋ก Spring ์ ์ฌ์ฉํ๋๋ ์๋ธ๋ฆฟ์ ์ง์ ๊ตฌํํ๋๋ ์๋ ์ข ๋ค๋ฅธ ์ฑ๊ฒฉ์ ์ด์ผ๊ธฐ;;) ์ด์ํ๊ณ ์๋ ์๋น์ค์ ์ํฉ์ ์ ์๊ณ ํ๋์ ํด๊ฐ๋ฉด์ ๊ฐ์ฅ ํจ์จ์ ์ธ๊ฒ์ ์ ํํ๋๊ฒ ์ ๋ต์ด๋ผ๊ณ ๋งํ ์ ๋ฐ์… ์ปค๋ฎค๋ํฐ ํ์๋ฅผ ๋ฌด์ ๋ชปํ๊ธฐ ๋๋ฌธ์ Apache๋ฅผ ์ ํํ ์๋ ์์ํ ๊ณ , ์ ์ ๊ด์ฌ๋๊ฐ ์ฌ๋ผ๊ฐ๋ค๋๊ฑด ๊ทธ๋งํผ์ ์ฅ์ ์ด ์๊ณ ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ๋์ ์ ์ฒ๋ฆฌ์ ํจ์จ์ ์ธ Nginx๋ฅผ ์ฌ์ฉํ ์ ์์๊ฒ ๊ฐ๋ค.