[WEB] ๐ ์น ์๋น์ค ๊ตฌ์กฐ (Web์๋ฒ / ์น์ปจํ ์ด๋ / WAS) ์ ๋ฆฌ
Static vs Dynamic ํ์ด์ง
Static Pages ์ ์ ํ์ด์ง
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ฑ ๋ณ๋์ ์๋ฒ์์์ ์ฒ๋ฆฌ๊ฐ ์์ด๋, ์ฌ์ฉ์๋ค์๊ฒ ๋ณด์ฌ์ค ์ ์๋ ํ์ด์ง.
์ด๋ ํ ์ฌ์ฉ์๊ฐ ์ค๋๊ฐ์ ๋์ผํ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค.
Ex) image, html, css, javascript ํ์ผ๊ณผ ๊ฐ์ด ์ปดํจํฐ์ ์ ์ฅ๋์ด ์๋ ํ์ผ๋ค
โ
Dynamic Pages ๋์ ํ์ด์ง
์๋ฒ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ฒ๋ผ, ์ด๋ ํ ์์ฒญ์ ์ํ์ฌ ์๋ฒ๊ฐ ์ผ์ ์ํํ๊ณ ํด๋น ๊ฒฐ๊ณผ๊ฐ ํฌํจ๋ ํ์ผ์ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง.
์ฌ์ฉ์๋ค๋ง๋ค ๋ค๋ฅธ ํ์ด์ง๊ฐ ๋ณด์ฌ์ง ์ ์์ต๋๋ค.
Web Server์ WAS์ ์ฐจ์ด
Web Server
- ์น ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์ ์ ์ธ ์ฝํ ์ธ ๋ฅผ HTTP ํ๋กํ ์ฝ์ ํตํ์ฌ ์ ๊ณตํด์ฃผ๋ ์๋ฒ์ ๋๋ค. ์์์ ์ธ๊ธํ ์ ์ ํ์ด์ง๋ฅผ ๋ณด๋ด์ค๋๋ค. ์ ์ ์ธ ์ฝํ ์ธ ์ ๊ณต ์ด ๊ฐ์ฅ ํฐ ์ญํ ์ ๋๋ค.
- ๋ค๋ฅธ ์ญํ ์ผ๋ก๋ ๋์ ์ธ ์์ฒญ์ด ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ค์ด์์ ๋, ํด๋น ์์ฒญ์ ์น ์๋ฒ์์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋(Container)๋ก ๋ณด๋ด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
ex) Nginx, Appach HTTP Server, IIS
โ
๊ธฐ๋ฅ 1)
- ์ ์ ์ธ ์ปจํ ์ธ ์ ๊ณต
- WAS๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก ์์์ ์ ๊ณต
โ
๊ธฐ๋ฅ 2)
- ๋์ ์ธ ์ปจํ ์ธ ์ ๊ณต์ ์ํ ์์ฒญ ์ ๋ฌ
- ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ )์ ์์ฒญ(Request)์ WAS์ ๋ณด๋ด๊ณ , WAS๊ฐ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ(์๋ต, Response)ํ๋ค.
โ
์น ์ปจํ ์ด๋ (Container)
- ์ปจํ ์ด๋๋ ๋์ ์ธ ๋ฐ์ดํฐ๋ค์ ์ฒ๋ฆฌํ์ฌ ์ ์ ์ธ ํ์ด์ง๋ก ์์ฑํด์ฃผ๋ ์ํํธ์จ์ด ๋ชจ๋.
โ
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํด์ My Page ๋ฉ๋ด์ ๋ค์ด๊ฐ๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค.
์ด ๋ฉ๋ด์์๋ ๊ฐ์ ์ฌ์ฉ์์ ๋ฐ๋ผ ๋ณด์ฌ์ง ์ ๋ณด๊ฐ ๋ค๋ฆ ๋๋ค. ์ฌ์ฉ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์น ์๋ฒ๋ ์ ์ ์ธ ์์๋ง ํด๋ผ์ด์ธํธ ์ธก์ ๋ณด๋ผ ์ ์๊ณ , ๋์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ ๋ถ๋ถ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ปจํ ์ด๋๋ ์ด๋ฌํ ๋ถ๋ถ์ ๋์ ์ฒ๋ฆฌํด์ ์น ์๋ฒ์ ์ ์ ์ธ ํ์ผ๋ก ๋ง๋ค์ด์ ๋ณด๋ด์ฃผ๋ ๋ชจ๋์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
โ
โApache๋ CGI๋ผ๋ ๊ฐ๋ ์ ์ง์ํฉ๋๋ค.
CGI๋?
Common Gateway Interface(๊ณต์ฉ ๊ฒ์ดํธ์จ์ด ์ธํฐํ์ด์ค)
์ธํฐํ์ด์ค๋ก์, ์น ์๋ฒ ์์์ ํ๋ก๊ทธ๋จ์ ๋์์ํค๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์ ์ํ ํ๋ก๊ทธ๋จ.
์น ์๋ฒ์ ์ธ๋ถ ํ๋ก๊ทธ๋จ ์ฌ์ด์์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ๋ ๊ท์ฝ.
์ฝ๊ฒ ์ค๋ช ํ์๋ฉด, ๋ ๊ฐ ์ด์์ ์ปดํจํฐ ๊ฐ์ ์๋ฃ๋ค์ ์ฃผ๊ณ ๋ฐ๋ ํ๋ก๊ทธ๋จ, ๋๋ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ ์์ฒด๋ฅผ ์๋ฏธ.
PHP, Perl, Python๋ฑ์ ์ธ์ด๋ Apache๋ฅผ ํตํด CGI๋ฅผ ์ ์ฉ์ํค๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ฐ, JAVA๋ ์๋ฉ๋๋ค.
์ฆ, Java๋ ๋ฐ๋ก CGI ์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํด ์ปจํ ์ด๋ ๋ผ๋ ๊ฒ์ด ํ์ํ๋ฐ ๊ทธ๊ฒ์ด ์๋ธ๋ฆฟ ์ ๋๋ค.โ
โ
์น ์ปจํ ์ด๋์ ์๋
1) ํด๋ผ์ด์ธํธ๋ ์น์๋ฒ๋ก request(์์ฒญ)์ ๋ณด๋ธ๋ค.
2) ์๋ธ๋ฆฟ์ ํฌํจํ๋ WAS๋ ์ปจํ ์ด๋๋ก ์์ฒญ์ ๋ณด๋ธ๋ค.
3) ์ปจํ ์ด๋๊ฐ ์์ฒญ์ ๊ฐ ์๋ธ๋ฆฟ์๊ฒ ์ ๋ฌํ๋ค.
4) ์๋ธ๋ฆฟ ๋ฉ์๋๊ฐ ๋ก๋๋๋ค.
5) ์๋ธ๋ฆฟ์ ์ปจํ ์ด๋์ ๊ด๋ จ response(์๋ต)์ ๋๊ฒจ์ค๋ค.
6) ์ปจํ ์ด๋๋ ์ด๋ฅผ ์๋ฒ์ ์ ๋ฌํ๋ค. ์๋ฒ๋ ์๋ต์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ค.
โ
WAS(Web Application Server)
- ์น ์๋ฒ๋ก๋ถํฐ ์ค๋ ๋์ ์ธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ฒ๋ฅผ ๋งํ๋ค. ์น ์๋ฒ์ ์ปจํ ์ด๋๋ฅผ ๋ถ์ฌ๋์ ์๋ฒ ๋ผ๊ณ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
โ
์๋ฅผ ๋ค์ด์, ํด๋ผ์ด์ธํธ์์ http://caffelove.com ์ด๋ผ๋ ๋๋ฉ์ธ์ ๊ฐ์ง ์๋ฒ์์ ‘๋ด ์ ๋ณด’๋ฅผ ๋๋ฌ http://caffelove.com/myinfo ๋ผ๋ ๊ฒฝ๋ก์ ๋ค์ด๊ฐ๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ๋ค.
โ/myinfo ๋ผ๋ ๊ฒฝ๋ก๋ก ์์ฒญํ๋ฉด WAS๋ ์์ ์ ๋ผ์ฐํ ์ ๋ณด๋ฅผ ํตํ์ฌ ์ด๋ค ์ฒ๋ฆฌ๋ฅผ ํด์ผ๋ ์ง ์ดํด๋ณธ๋ค.
์ด ๋, myinfo๋ฅผ ๋ผ์ฐํ ํ ๋, ๋จ์ํ ‘myinfo.html ์ด๋ผ๋ ํ์ผ์ ๋ณด์ฌ์ค!’ ๋ผ๋ ์์ฒญ์ ํ๊ฒ ๋๋ค๋ฉด ์ ์ ์ธ ์์์ด๊ธฐ ๋๋ฌธ์, ์น์๋ฒ์์ ํด๋ผ์ด์ธํธ์๊ฒ myinfo.html ํ์ผ์ ๋ณด๋ด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
โํ์ง๋ง, myinfo๋ ๊ฐ์ธ์ ๊ณ ์ ํ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง์ด๋ WAS์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
๊ทธ ๋ค์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ, ํ์ผ๋ก ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค๋ค
Ex) Tomcat, JBoss, Jeus, Web Sphere ๋ฑ
Web Server๊ฐ ํ์ํ ์ด์
ํด๋ผ์ด์ธํธ(์น ๋ธ๋ผ์ฐ์ )์ ์ด๋ฏธ์ง ํ์ผ(์ ์ ์ปจํ ์ธ )์ ๋ณด๋ด๋ ๊ณผ์ ์ ์๊ฐํด๋ณด์.
์ด๋ฏธ์ง ํ์ผ๊ณผ ๊ฐ์ ์ ์ ์ธ ํ์ผ๋ค์ ์น ๋ฌธ์(HTML ๋ฌธ์)๊ฐ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด์ง ๋ ํจ๊ป ๊ฐ๋ ๊ฒ์ด ์๋๋ค.
ํด๋ผ์ด์ธํธ๋ HTML ๋ฌธ์๋ฅผ ๋จผ์ ๋ฐ๊ณ ๊ทธ์ ๋ง๊ฒ ํ์ํ ์ด๋ฏธ์ง ํ์ผ๋ค์ ๋ค์ ์๋ฒ๋ก ์์ฒญํ๋ฉด ๊ทธ๋์์ผ ์ด๋ฏธ์ง ํ์ผ์ ๋ฐ์์จ๋ค.
Web Server๋ฅผ ํตํด ์ ์ ์ธ ํ์ผ๋ค์ Application Server๊น์ง ๊ฐ์ง ์๊ณ ์๋จ์์ ๋น ๋ฅด๊ฒ ๋ณด๋ด์ค ์ ์๋ค.
โ๋ฐ๋ผ์ Web Server์์๋ ์ ์ ์ปจํ ์ธ ๋ง ์ฒ๋ฆฌํ๋๋ก ๊ธฐ๋ฅ์ ๋ถ๋ฐฐํ์ฌ ์๋ฒ์ ๋ถ๋ด์ ์ค์ผ ์ ์๋ค.
โ
WAS๊ฐ ํ์ํ ์ด์
์น ํ์ด์ง๋ ์ ์ ์ปจํ ์ธ ์ ๋์ ์ปจํ ์ธ ๊ฐ ๋ชจ๋ ์กด์ฌํ๋ค.
์ฌ์ฉ์์ ์์ฒญ์ ๋ง๊ฒ ์ ์ ํ ๋์ ์ปจํ ์ธ ๋ฅผ ๋ง๋ค์ด์ ์ ๊ณตํด์ผ ํ๋ค.
์ด๋, Web Server๋ง์ ์ด์ฉํ๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์ํ๋ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ์ ๋ชจ๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๊ณ ์๋น์ค๋ฅผ ํด์ผ ํ๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ์ํํ๊ธฐ์๋ ์์์ด ์ ๋์ ์ผ๋ก ๋ถ์กฑํ๋ค.
โ๋ฐ๋ผ์ WAS๋ฅผ ํตํด ์์ฒญ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ DB์์ ๊ฐ์ ธ์์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ง๊ฒ ๊ทธ๋ ๊ทธ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์ ๊ณตํจ์ผ๋ก์จ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
โ
Web Server + WAS ์กฐํฉ
๊ฐ ๋์๊ฒ ์ฅ๋จ์ ์ ์์ ๋ดค๋ค.
๊ทธ๋ ๋ค๋ฉด WAS์ Web Server์ ๊ธฐ๋ฅ๋ ๋ชจ๋ ์ํํ๋ฉด ์ต์ ์ ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ๋๋ค.
1. ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ์๋ฒ ๋ถํ ๋ฐฉ์ง
- WAS๋ DB ์กฐํ๋ ๋ค์ํ ๋ก์ง์ ์ฒ๋ฆฌํ๋๋ผ ๋ฐ์๊ธฐ ๋๋ฌธ์ ๋จ์ํ ์ ์ ์ปจํ ์ธ ๋ Web Server์์ ๋น ๋ฅด๊ฒ ํด๋ผ์ด์ธํธ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ข๋ค.
- WAS๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์กด์ฌํ๋ ์๋ฒ์ด๋ค.
- ๋ง์ฝ ์ ์ ์ปจํ ์ธ ์์ฒญ๊น์ง WAS๊ฐ ์ฒ๋ฆฌํ๋ค๋ฉด ์ ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ก ์ธํด ๋ถํ๊ฐ ์ปค์ง๊ฒ ๋๊ณ , ๋์ ์ปจํ ์ธ ์ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋จ์ ๋ฐ๋ผ ์ํ ์๋๊ฐ ๋๋ ค์ง๋ค.
โ
2. ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ๋ณด์ ๊ฐํ
- SSL์ ๋ํ ์๋ณตํธํ ์ฒ๋ฆฌ์ Web Server๋ฅผ ์ฌ์ฉ
3. ์ฌ๋ฌ ๋์ WAS๋ฅผ ์ฐ๊ฒฐ ๊ฐ๋ฅ
- fail over(์ฅ์ ๊ทน๋ณต), fail back ์ฒ๋ฆฌ์ ์ ๋ฆฌ
- ํนํ ๋์ฉ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ(์ฌ๋ฌ ๊ฐ์ ์๋ฒ ์ฌ์ฉ) Web Server์ WAS๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ฌด์ค๋จ ์ด์์ ์ํ ์ฅ์ ๊ทน๋ณต์ ์ฝ๊ฒ ๋์ํ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด, ์ ๋จ์ Web Server์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ WAS๋ฅผ ์ด์ฉํ์ง ๋ชปํ๋๋ก ํ ํ WAS๋ฅผ ์ฌ์์ํจ์ผ๋ก์จ ์ฌ์ฉ์๋ ์ค๋ฅ๋ฅผ ๋๋ผ์ง ๋ชปํ๊ณ ์ด์ฉํ ์ ์๋ค.
โ
4. ์ฌ๋ฌ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋น์ค ๊ฐ๋ฅ
- ์๋ฅผ ๋ค์ด, ํ๋์ ์๋ฒ์์ PHP Application๊ณผ Java Application์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
โ
5. ๊ธฐํ
- ์ ๊ทผ ํ์ฉ IP ๊ด๋ฆฌ, 2๋ ์ด์์ ์๋ฒ์์์ ์ธ์ ๊ด๋ฆฌ ๋ฑ๋ Web Server์์ ์ฒ๋ฆฌํ๋ฉด ํจ์จ์ ์ด๋ค.
- ์ฆ, ์์ ์ด์ฉ์ ํจ์จ์ฑ ๋ฐ ์ฅ์ ๊ทน๋ณต, ๋ฐฐํฌ ๋ฐ ์ ์ง๋ณด์์ ํธ์์ฑ ์ ์ํด Web Server์ WAS๋ฅผ ๋ถ๋ฆฌํ๋ค.
- Web Server๋ฅผ WAS ์์ ๋๊ณ ํ์ํ WAS๋ค์ Web Server์ ํ๋ฌ๊ทธ์ธ ํํ๋ก ์ค์ ํ๋ฉด ๋์ฑ ํจ์จ์ ์ธ ๋ถ์ฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
# ์ฐธ๊ณ ์๋ฃ
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
http://melonicedlatte.com/web/2019/06/23/210300.html
https://doozi316.github.io/web/2020/09/13/WEB26/