์๋ฒ ๊ฐ๋ฐ์ ์์ด์ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ๊ฐ๋ ์ธ '์น ์๋ฒ'์ 'WAS(Web Application Servier)'์ ์ฐจ์ด์ ์ ๋ค๋ค๋ณด๋ ค๊ณ ํ๋ค.
๐ ์น ์๋ฒ (Web Server)
์ฌ์ ์ ์ ์
์น ์๋ฒ๋ HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ํด๋ผ์ด์ธํธ๋ก ๋ถํฐ ์์ฒญ์ ๋ฐ์ ๊ทธ์ ํด๋นํ๋ ์ ์ ์ฝํ
์ธ ๋ฅผ ์ ๊ณตํ๋ ์ํํธ์จ์ด์
๋๋ค.
์ด๋ ์ ์ ์ฝํ
์ธ ๋ HTML, CSS, ์ด๋ฏธ์ง ๋ฑ ์ฆ์ ์๋ต๊ฐ๋ฅ ์์์ ๋งํ๋ฉฐ ๊ฐ๋ฐ์๊ฐ ๋ณ๊ฒฝํ์ง ์๋์ด์ ํญ์ ๋์ผํ๊ฒ ์ ์ง๋๋ ์์์ ๋งํฉ๋๋ค.
Web Server์ ๊ธฐ๋ฅ
- WAS(Web Application Server)๋ฅผ ๊ฑฐ์น์ง์๊ณ ๋ฐ๋ก ์์(์ ์ ์ฝํ ์ธ )์ ์ ๊ณตํ๋ค.
- ๋์ ์ฝํ ์ธ ์ ๊ณต์ ์ํด ํด๋ผ์ด์ธํธ ์์ฒญ(Request)์ WAS์ ์ ๋ฌํ๊ณ WAS๊ฐ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ(์๋ต, Response)ํ๋ค.
- ๋ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์น ์๋ฒ์ ์
- NginX
- Apache Server
- IIS(Window ์ ์ฉ Web Server)
๐ WAS (Web Server Application)
์ฌ์ ์ ์ ์
WAS๋ ์น ์๋ฒ์ ์น ์ปจํ ์ด๋์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ํํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก ์น ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋์ ์ฝํ ์ธ ์ ๋ํ ์์ฒญ์ ๋ฐ์ ๊ฒฝ์ฐ ํด๋น ์์ฒญ์ ์ ๋ฌ๋ฐ์ DB์กฐํ ๋๋ ๋น์ฆ๋์ค ๋ก์ง์ฒ๋ฆฌ ๋ฑ์ ์์ ์ ์ํํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ํ๋ค.
WAS์ ๊ธฐ๋ฅ
- WAS๋ HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ์์ผ์ฃผ๋ ๋ฏธ๋ค์จ์ด์ด๋ค.
- ์น ์ดํ๋ฆฌ์ผ์ด์ ์คํ ํ๊ฒฝ๊ณผ DB์ ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- WAS = Web Server + Web Container
- ์ฆ, ์น์๋ฒ์ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์์ด ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ ์ ์๋ค.
- WAS๋ ์น ์ปจํ
์ด๋ ํน์ ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
- ์น ์ปจํ ์ด๋๋ JSP, Servlet์ ์คํ์ํฌ ์ ์๋ ๊ตฌ๋ํ๊ฒฝ์ ์ ๊ณตํ๋ค. ์๋ฐ ๊ณ์ด์์๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. ์น ์ดํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋ฐฐํฌ๋๋ ๊ณต๊ฐ์ ๋งํ๋ค.
- ์ฌ๋ฌ ์น ์ดํ๋ฆฌ์ผ์ด์
์๋น์ค๊ฐ ๊ฐ๋ฅํ๋ค.
- jsp, asp, php์ ๊ฐ์ ์ธ์ด๋ค์ ์ฌ์ฉํด ๋์ ์ธ ํ์ด์ง๋ฅผ ์์ฑ๊ฐ๋ฅํ๋ค. ํ๋ก๊ทธ๋จ(์น ์ดํ๋ฆฌ์ผ์ด์ )์ ์คํ์์ผ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์น ์๋ฒ์ ์ ๋ฌํด์ค๋ค.
- ๋ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ WAS
- Tomcat, JBoss, Jeus ๋ฑ
Web Server์ WAS
WAS๋ง ์ฌ์ฉํ์ ๊ฒฝ์ฐ
- WAS๋ ์น ์๋ฒ์ ๊ธฐ๋ฅ์ ํฌํจํ๊ธฐ ๋๋ฌธ์ ์น ์๋ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์๋ค.
- WAS์ DB๋ง์ผ๋ก๋ ์์คํ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํ์ง๋ง, WAS๊ฐ ๋๋ฌด ๋ง์ ๊ธฐ๋ฅ์ ๋ด๋นํด ์๋ฒ ๊ณผ๋ถํ์ ์ฐ๋ ค๊ฐ ์๊ธด๋ค.
- ์ ์ ์ปจํ ์ธ ์ ์์ฒญ๊น์ง WAS๊ฐ ์ฒ๋ฆฌํ๋ค๋ฉด ์ ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ก ์ธํด ์๋ฒ์ ๋ถํ๊ฐ ์ปค์ง๊ฒ ๋๊ณ , ๋์ ์ปจํด์ธ ์ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋จ์ ๋ฐ๋ผ ์๋น์ค์ ์๋๊ฐ ๋๋ ค์ง ์ ์๋ค.
- WAS ์ฅ์ ์ ์ค๋ฅํ๋ฉด ๋ ธ์ถ์ด ๋ถ๊ฐ๋ฅํด์ง๋ค.
Web Server์ Was๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ์ด์
- ์น ์๋ฒ๋ฅผ ํตํด ์ ์ ์ธ ํ์ผ๋ค์ WAS๊น์ง ๊ฐ์ง ์๊ณ ์๋จ์์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๋น์ฆ๋์ค ๋ก์ง๊ฐ์ ๋์ ์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด WAS์ ์์ฒญ์ ์์ํ๋ค.
- WAS๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์ฒ๋ฆฌํ์ฌ ๋์ ํ์ด์ง๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ต์ ํ ๋์ด์๋ ์๋ฒ์ด๋ค.
- ์์ฒ๋ผ ์น ์๋ฒ์ WAS๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ฉด ํจ์จ์ ์ธ ๋ฆฌ์์ค ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
- ์ ์ ๋ฆฌ์์ค์ ์์ฒญ ์ฆ๊ฐ์ ์น ์๋ฒ๋ง ๋ณ๋๋ก ์ฆ์คํ ์ ์์ผ๋ฉฐ ๋์ ๋ฆฌ์์ค์ ์์ฒญ ์ฆ๊ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก WAS๋ง ์ฆ์คํ์ฌ ์๋ฒ๋ฅผ ์์ ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
Web Server์ WAS๋ฅผ ๊ตฌ๋ถํจ์ผ๋ก์จ ์ป๋ ์ด์
- ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ์๋ฒ ๋ถํ ๋ฐฉ์ง
- WAS๊ฐ ์น ์๋ฒ์ ๊ธฐ๋ฅ์ ํฌํจํด ๋ชจ๋ ์ญํ ์ ํผ์ ์ํํ ์ ์์ง๋ง ๊ทธ๋งํผ WAS๊ฐ ๊ฐ๋นํด์ผํ๋ ์์ ์ด ๋ง์์ง๊ฒ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ ์๋ฒ๊ฐ ๊ฐ๋นํ๋ ์์ ์ ์ค์ฌ ๋ณด๋ค ํจ์จ์ ์ธ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋๋ก ํ๊ธฐ ์ํด ์น ์๋ฒ์ WAS๋ฅผ ๋ถ๋ฆฌํ๋ค.
- ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ๋ณด์ ๊ฐํ
- WAS์๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ผ๊ฐ์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์ ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด ์ค์ํ ์ค์ ์ด๋ ํ์ผ๋ค์ด ์ธ๋ถ๋ก ๋ ธ์ถ๋ ์ํ์ด ์๋ค. ์น ์๋ฒ๋ฅผ WAS ์์ ์์น์์ผ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ค ์์ ํ๊ฒ ๋ณดํธํ ์ ์๋ค.
- ์น ์๋ฒ์ ์ฌ๋ฌ๋์ WAS๋ฅผ ์ฐ๊ฒฐ ํ ์ ์๋ค.
- Load Balancing(์๋ฒ๋ ์ปดํจํฐ์ ๊ฐํด์ง๋ ๋ถํ๋ฅผ ๋ถ์ฐํด์ฃผ๋ ๊ธฐ์ )์ ์ํด์ Web Server๋ฅผ ์ฌ์ฉํ๋ค.
- fail over(์๋ ์ค์ง๋ WAS ๋์ ๋ค๋ฅธ WAS๋ฅผ ์ฌ์ฉํด ์ฅ์ ๊ทน๋ณต)์ ์ ์ฉ
- fail back(์๋ ์ค์ง๋ WAS๋ฅผ ์ฌ์๋ ์ํด)์ ์ ์ฉ
- ํนํ ๋์ฉ๋ ์น ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ(์ฌ๋ฌ๊ฐ์ ์๋ฒ ์ฌ์ฉ) Web Server์ WAS๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ฌด์ค๋จ ์ด์์ ์ํ ์ฅ์ ๊ทน๋ณต์ ์ฝ๊ฒ ๋์ํ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด, ์ ๋จ์ Web Server์์ ์ค๋ฅ ๋ฐ์์ WAS๋ฅผ ์ด์ฉํ์ง ๋ชปํ๋๋ก ํ ํ WAS๋ฅผ ์ฌ์์ํจ์ผ๋ก์จ ์ฌ์ฉ์๋ ์ค๋ฅ๋ฅผ ๋๋ผ์ง ๋ชปํ๊ณ ์ด์ฉํ ์ ์๋ค.
- ์ฌ๋ฌ ์น ์ดํ๋ฆฌ์ผ์ด์
์๋น์ค ๊ฐ๋ฅ
- ์๋ฅผ ๋ค์ด, ํ๋์ ์๋ฒ์์ PHP Application๊ณผ Java Application์ ํ๋์ ์น ์๋ฒ์ ์ฐ๊ฒฐํด ํจ๊ป ์ฌ์ฉํ ์ ์๋ค.
Web Service Architecture
์น ์์คํ ์ ๋ค์ํ ๊ตฌ์กฐ๋ก ์ค๊ณ๊ฐ ๊ฐ๋ฅํ๋ค.
- Client - Web Server - DB
- Clinet - WAS - DB
- Client - Web Server - WAS - DB
์ด์ค์์ Client - Web Server - WAS - DB์ ์น ์์คํ ๊ตฌ์ฑ์ด ๊ฐ์ฅ ํจ์จ์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๊ตฌ์ฑ์ด๋ค.
Web Server๋ฅผ WAS์์ ๋๊ณ ์ ์ ์ฝํ ์ธ ๋ฅผ Web Server๊ฐ ์ฒ๋ฆฌํ๊ณ ๋์ ์ฝํ ์ธ ๋ WAS์๊ฒ ์์ฒญ์ ์์ํจ์ผ๋ก์จ WAS๋ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์ฒ๋ฆฌ๋ฅผ ์ ๋ดํ ์ ์๊ฒ ๋๋ค.
Client - Web Server - WAS - DB ์น ์์คํ ๊ตฌ์กฐ์ ์์ฒญ ์ฒ๋ฆฌ ์์
- Web Server๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ HTTP ์์ฒญ์ ๋ฐ๋๋ค.
- Web Server๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ WAS์ ๋ณด๋ธ๋ค.
- WAS๋ ๊ด๋ จ๋ Servlet์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค.
- WAS๋ web.xml์ ์ฐธ์กฐํ์ฌ ํด๋น Servlet์ ๋ํ Thread๋ฅผ ์์ฑํ๋ค. (Thread Pool ์ด์ฉ)
- HttpServletRequest์ HttpServletResponse ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ Servlet์ ์ ๋ฌํ๋ค.
- Thread๋ Servlet์ service()๋ฅผ ํธ์ถํ๋ค.
- service()๋ ์์ฒญ์ ๋ง๊ฒ doGet() ๋๋ doPost() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
- doGet(), doPost() ๋ฉ์๋๋ ์ธ์์ ๋ง๊ฒ ์์ฑ๋ ์ ์ ํ ๋์ ํ์ด์ง๋ฅผ Response ๊ฐ์ฒด์ ๋ด์์ WAS์ ์ ๋ฌํ๋ค.
- WAS๋ Response ๊ฐ์ฒด๋ฅผ HttpResponse ํํ๋ก ๋ฐ๊พธ์ด Web Server์ ์ ๋ฌํ๋ค.
- ์์ฑ๋ Thread๋ฅผ ์ข ๋ฃํ๊ณ , HttpServletRequest์ HttpServletResponse๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ค.
DBMS์ MiddleWare
DBMS(DataBase Management System)
- ๋ค์์ ์ฌ์ฉ์๋ค์ด DB๋ด์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ ์ ์๊ฒ ํด์ฃผ๋ ์ํํธ์จ์ด
- DBMS๋ ๋ณดํต ์๋ฒ์ ํํ๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
- MySQL, MariaDB, Oracle ๋ฑ
- DBMS์ ํด๋ผ์ด์ธํธ ์์คํ
์ด ๋ง์ด ์ ์ํ์ฌ ๋์ํ๋ฉด ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- Client์ ๋ก์ง์ด ๋ง์์ง๊ณ Client ํ๋ก๊ทธ๋จ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค.
- ๋ก์ง์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋งค๋ฒ ๋ค์ ๋ฐฐํฌํด์ค์ผํ๋ค.
- Client์ ๋๋ถ๋ถ์ ๋ก์ง์ด ํฌํจ๋์ด ๋ฐฐํฌ๋๊ธฐ ๋๋ฌธ์ ๋ณด์๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด MiddleWare๊ฐ ๋ฑ์ฅํ๋ค.
MiddleWare
- Client - MiddleWare - DB Server(DBMS)์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค.
- MiddleWare์ ๋์๊ณผ์
- Client๋ ๋จ์ํ ์์ฒญ๋ง ์ค์์ ์๋ MiddleWare Server์ ๋ณด๋ธ๋ค.
- MiddleWare Server์์ ๋๋ถ๋ถ์ ๋ก์ง์ด ์ํ๋๋ค.
- ์ด๋, ๋ฐ์ดํฐ ์กฐ์์ด ํ์ํ ๊ฒฝ์ฐ DBMS์๊ฒ ์์ฒญํ๋ค.
- ๋ก์ง ๊ฒฐ๊ณผ๋ฅผ Client์๊ฒ ์ ์กํ๋ค.
- Client๋ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ๋ณด์ฌ์ค๋ค.
- ๋น์ฆ๋์ค ๋ก์ง์ Client์ DBMS์ฌ์ด์ MiddleWare๊ฐ ๋ด๋นํ๋ฉด์ Client๋ ์ ์ถ๋ ฅ๋ง ๋ด๋นํ๊ฒ ๋๋ค.
'Project๐ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ํํธ์จ์ด๊ณตํ] ์๊ตฌ์ฌํญ ๊ฐ๋ฐ ๋ฐ ๊ด๋ฆฌ - ์๊ตฌ์ฌํญ, ์ ์ค์ผ์ด์ค ๋ค์ด์ด๊ทธ๋จ (0) | 2023.05.04 |
---|---|
๋ฏธ๋ ํ๋ก์ ํธ ๋๊ธ ๋ฌ๊ธฐ ๊ตฌํ๐ (0) | 2023.04.11 |
[ํ์ ํด] drow.io ์ฌ์ฉ๋ฐฉ๋ฒ (0) | 2023.04.07 |
[ํ์ ํด] flow chart ๊ทธ๋ฆฌ๋ tool (0) | 2023.04.07 |
Front End์์ Back End๊น์ง ๋ฐ์ดํฐ ํ๋ก์ฐ ์ ๋ฆฌ (0) | 2023.03.26 |