연차는 10년 가까이 되는데 아는 건 별로 없는 것 같아서
혼자서 스터디 포스트를 올리고 있습니다.
그래도 능력 있으신 분들의 첨삭 지도를 받아야겠기에
여기 올려봅니다 ㅠㅠ

부족한 글인데 어디 올려야되나 한참 헤맸네요.
제 블로그로 오시면 몇개 글이 더 있습니다.
http://eun033.blog.me
홍보글 같아서 부끄럽네요 ㅠ




얼마전 한 프로젝트의 초기 킥오프 미팅 때의 일이다. 

그 클라이언트는 서버를 관리하는 업체가 따로 있어서 서버 담당하는 업체가 와서 설명하고 있었는데, 

그 자리에 있던 경력 다른 개발자가 귀뜸으로 "근데 WAS가 뭐예요?" 라고 물어봤다. 

WAS가 대략적으로 웹서버다라는 것는 알고 있지만, 사실상 웹서버와는 다른 부류라는 것만 알고 있고 정확하게 알고 있지는 못해서 속 시원히 대답해줄수가 없었다.

지금까지 WAS라는 단어를 꽤 많이 사용해왔지만 무엇을 의미하는지 제대로 찾아보고 정의해본 적이 없어서 정리해보고자 한다.

 

 

우선 녹색창에 WAS 서버라고 검색하니 용어정리가 많이 나왔다.

 

 

(참고 : http://sun2lub.blog.me/20161667914, http://blog.naver.com/idbankbox?Redirect=Log&logNo=60192633204)

Web 서버

소프트웨어와 하드웨어로 구분되며, 하드웨어는 말 그대로 Web 서버가 설치되어 있는 컴퓨터를 말한다. 

그리고 소프트웨어 Web 서버란 브라우저 클라이언트로 부터 HTTP 요청을 받아들이고 HTML 등의 웹 페이지 문서에 반응하는 컴퓨터 프로그램이다.

HTTP 프로토콜을 기반으로 하여 브라우저의 요청을 서비스 하는 기능을 담당한다.

 

WAS 서버(Web Application Server, 컨테이너)

HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다. 동적 서버 콘텐츠를 수행한다는 것으로 일반 WEB 서버와 구별되며, 주로 데이터베이스 서버와 같이 수행된다. 한국에서는 WAS 서버로 통칭하지만 영어권에서는 Application Server로 불린다.WEB 서버의 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시된것, 크게 WEB 서버의 기능과 컨테이너의 기능으로 구성한다.

 

 

 

 

정리 하자면

WEB 서버는 HTML 문서같은 정적 컨텐츠를 처리하는 것이고 (HTTP 프로토콜을 통해 읽힐 수 있는 문서)

WAS 서버는 asp, php, jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리하는 것이다.

처리하는 기능은 나누어져있지만 요새 WAS 서버에는 WEB서버 기능을 포함하고 있다고 한다. 

 

WAS에 대해서 좀더 살펴보자면, J2EE 스펙을 구현한 서버로 

분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산환경에서 사용되는 미들웨어이다.

웹서버 + 웹 컨테이너로 웹상에서 사용하는 컴포넌트를 올려놓고 사용하게 되는 서버이다.

Web Logic, Jeus, Tomcat, JBoss 등이 있다. Tomcat 같은 경우 WAS가 아니라는 사람들도 있는데 이는 Tomcat에는 EJB 컨테이너로의 기능이 없기 때문이다.

 

WAS가 컨테이너도 포함될 수 있다고 하는데 이 컨테이너 Containner 무엇이냐면

JSP와 Servlet을 실행시킬 수 있는 SW를 웹 컨테이너라고 한다.


JSP를 배울 때 대체적으로 Apache와 Tomcat을 사용한다. Apache는 웹서버를 담당하고 Tomcat은 WAS 다.

ASP를 구동하기 위해서는 IIS를 사용한다. ASP의 환경이 MS계열 서비스라면 WAS의 기능을 담당하는 부분이 있어 별도의 WAS가 필요하지않다.

 

그렇다면 ASP처럼 하나를 쓰지 않고 WAS와 웹서버가 동시에 왜 필요할까.

우리가 만드는 웹페이지는 정적 컨텐츠만 있는 것도 아니고 동적 컨텐츠도 함께 노출되게 된다.

WAS가 정적 데이터를 처리로 인해 동적 컨텐츠의 처리가 지연이 될 것이고 이로 인한 페이지 노출시간이 늘어나게 된다.

WAS는 동적 처리에 최적화 되어 있는 서비스이기 때문에 처리 속도를 위해, 정적처리는 웹서버에서 처리를 하고, 동적 컨텐츠는 WAS에서 처리하게 된다.

간단히 말하면 분산처리를 위한 것이다. 

 

사용자가 클라이언트(브라우저)에 요청을 하게 되면 이를 웹서버에서 반응하여 WAS의 처리를 거쳐

웹페이지로 다시 웹서버에서 클라이언트(브라우저)에 응답 메세지를 주는 것이다.

 

 

한마디로 대답하면

WEB 서버가 처리할 수 있는 형태로 가공하여 제공해줄수 있는 웹 어플리케이션 정도가 될까.

WAS를 사용하는 이유는 WEB서버에서는 웹 문서만 처리하도록 기능을 분배하여 서버의 부담을 줄이기 위한 것이라 할 수 있다.

 

 

 

 

 

 

 

* 잘못된 부분은 댓글로 알려주시면 수정하도록 하겠습니다.