[Comparison] 웹 서버와 웹 어플리케이션 서버


웹 서버와 웹 컨테이너 서버


웹서버와 JSP컨테이너는 별개라고 할수도 아니라고 할수도 있다. 대부분 JSP로 만들어진 사이트는 웹서버와 JSP컨테이너를 탑재하고 있는 WAS를 연동해 사용하기 때문이다.


쉽게 말하면 웹서버가 하는 일은 html,img등 일반 웹문서를 사용자에게 보여주는 역할만을 하지만, JSP컨테이너를 탑재하고 있는 WAS(Web Application Server)는 JSP를 컴파일하여 실행한 결과를 html으로 만들어 보여준다.웹서버만 구축되어 있는 서버는 웹페이지,이미지,영상등을 전달해 줄수는 있지만, JSP페이지를 컴파일해 동적인 페이지를 생성하지는 못한다. 이를 위해서는 JSP컨테이너가 탑재되어 있는 WAS가 필요한 것이다. 웹 서버는 웹문서를, WAS는 JSP 페이지를, 이런식으로 양분하여 역할분담을 함으로 서버에 부담되는 양을 줄이고자 함이다. 


웹 서버 : 정적인 처리 담당 html, 이미지등     ex)아파치

웹 어플리케이션 서버  (WAS) : jsp, 서블릿 담당(동적처리)   ex)톰켓

톰켓은 was의 기능 뿐만아니라 일반적인 html 이미지 처리도 가능, 굳이 둘을 분리해서 쓰는 이유는 속도면에서 분리하는게 조금더 빠르고 프록시를 이용하여 보안을 강화할 수 있음


1. 웹 서버

인터넷 웹브라우저의 요청이 들어오면 그에 해당하는 웹페이지를 찾아서 보내주는 일을 하는 컴퓨터를 지칭한다.

정확히 표현하면 인터넷 사용자의 URL요청을 받아서 그에 해당하는 웹페이지(HTML문서나 이미지)를 찾아서 다시 웹브라우저로 보내주는 것이다.


2. 웹어플리케이션 서버(WAS)

웹어플리케이션 서버는 웹서버에 웹어플리케이션을 합친 것이다.

우리가 웹페이지를 볼때 화면이 동적일 때가 있을 것이다. 동적이란 말은 이를테면 특정 URL을 요청했을 때 뉴스페이지 같은 곳에서는 각각의 기사에 대하여 다른 기사제목과 내용들이 표시 되는일들을 말하는데 정적인 웹 서버로는 이것을 처리가 불가능하다. 웹 서버가 웹어플리케이션 프로그램을 호출해야 가능한 일이다. JSP같은 기술이 웹어플리케이션의 역할을 담당한다.


3. 웹 컨테이너

웹어플리케이션을 실행해주는 도구이다. 웹어플리케이션이 JSP나 서블릿인데 이것을 실행 가능하게끔 해주는 것을 말한다. JSP를 해본 개발자라면 알 것이다. 톰캣이 웹컨테이너의 역할을 한다. 웹 어플리케이션을 실행할 수 있는 컨테이너. JSP, 서블릿을 해석할 수 있는 웹 서버


cp.) 웹 컨테이너란?

JSP와 서블릿을 사용한 웹 서버는 크게 URL 주소의 해석을 맡아 주는 HTTP 서버와 서블릿 클래스 또는 JSP 파일의 실행 요청을 처리해주는 웹 컨테이너(Web Container)로 구성된다. HTTP 서버는 단순히 어떤 주소(URL) 요청이 들어왔을 경우 그 주소에 미리 매핑되어 있는 콘텐츠(HTML 파일이나 이미지 등)를 사용자의 브라우저에 응답 형태로 전송하는 역할을 한다. 이 때 만일 요청된 URL이 서블릿 클래스 또는 JSP파일(ex. http://www.sevlet.com/servlet 또는 http://www.wervlet.com/home.jsp)일 경우 HTTP 서버는 이를 웹 컨테이너에서 처리하도록 클라이언트의 요청을 넘겨준다. 웹 컨테이너에서는 요청된 URL에 맞는(미리 설정된) 서블릿 클래스 또는 JSP 파일을 실행하여 그 결과를 HTTP 서버에 넘겨주게 되고 이는 응답 메시지의 형태로 사용자의 브라우저에 전성된다. 

즉 웹 컨테이너란 웹 서버의 내부에서 서블릿 클래스 또는 JSP 파일을 실행하기 위한 실행 환경을 제공하는 역할을 하며 특히 서블릿 클래스에 대한 웹 컨테이너를 서블릿 컨테이너, JSP 파일에 대한 웹 컨테이너를 JSP 컨테이너라고 한다. 다만 실제적으로 이 둘을 혼용하여 웹 컨테이너(서블릿 컨테이너)로 통칭하는 경우가 많다. 대표적인 웹 컨테이너로 자카르타 톰캣, 웹로직, Resin 등이 있다.