웹 브라우저 클라이언트로부터 HTTP요청을 받아들이고, HTML 문서와 같은 웹페이지에서 흔히 찾아 볼 수 있는 자료 콘텐츠에 따라 HTTP에 반응하는 컴퓨터 프로그램
인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어이다.
웹 애플리케이션 서버는 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행이 된다.
JSP와 서블릿을 실행시킬 수 있는 소프트웨어를 웹 컨테이너 혹은 서블릿 컨테이너라고 한다.
웹 서버에서 JSP를 요청하면 톰켓에서는 JSP파일을 서블릿으로 변환하여 컴파일을 수행하고, 서블릿 수행결과를 웹서버에게 전달하게된다.
JSP컨테이너가 탑재 되어 있는 WAS는 JSP 페이지를 컴파일 해 동적인 페이지를 생성한다.
Web Container의 유무로 WEB과 WAS를 나눌수 있으며 WEB서버는 HTML 문서같은 정적 컨텐츠를 처리하는 것이고
WAS 서버는 asp, php , jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용프로그램 서비스를 처리한다.
WAS와 WebServer를 분리하지 않는 경우
모든 컨텐츠를 한곳에 집중시켜 웹서버와 WAS의 역할을 동시에 수행.
스위치를 통한 로드 밸런싱, 사용자가 적을 경우 효율적
WAS와 WebServer를 분리한 경우
웹서버와 WAS의 기능적 분류를 토애 효과적인 분산을 유도.
정적인 데이터는 웹서버에서 처리,동적인 데이터는 WAS가 처리
WAS 여러개와 WebServer를 분리한 경우
WAS단을 프리젠테이션 로직과 비즈니스 로직으로 구분하여 구성.
특정 logic의 부하에 따라 적절한 대응할 수 있지만 설계단계 유지보수 단계가 복잡해 질 수가 있따.
WAS와 WebServer를 분리하는 이유
1) 기능을 분리하여 서버의 부하방지
2) 물리적으로 분리하여 보안 강화
3) 여러대의 WAS를 연결가능
4) 여러 웹어플리케이션을 서비스 가능