웹 서버는 사용자의 요청에따라 정적 Http 문서를 제공하는 컴퓨터를 의미합니다.
정적 Http 문서란 이미 완성되어있는 문서를 말합니다.
예를 들어 우리가 프라모델 상점에 물건을 주문하면 상점은 우리에게 '이미 완성되어있는' 제품만을 제공하는 것과 같습니다.
상점에서는 상품을 제작하는것이 아니라 이미 완성된 재고를 저장하고 제공하는 역할만 하기 때문에 고객의 요청에 따라 제품을 변화시키기 어렵습니다.
내 이름을 각인한 프라모델을 살 수 없는 것이죠.
단순한 정보만 제공하는 서비스라면 이러한 웹 서버 만으로도 충분하겠지만, WAS가 없다면 단순한 게시판 서비스를 만드는 것 조차 어렵습니다. 게시판은 누군가 접속 할 때마다 DB에 저장되어있는 글들을 불러 동적인 Http 문서를 만들어야 하는데, 웹 서버은 Http 문서를 만드는 일을 할 수 없기 때문이죠.
요즘에는 시간, 위치, 날씨, 사용자 정보, DB 등등에 따라 그에 맞는 페이지를 제공하는 경우가 많아 WAS는 이제는 없어서는 안될 중요한 기술입니다.
웹 어플리케이션 서버, WAS는 동적으로 Http 문서를 만들 수 있습니다. 때문에 사용자의 요청에 따라 늘 새로운 Http페이지를 만들어 제공합니다.
웹 서버를 프라모델 상점에 비유했다면, WAS는 프라모델 커스텀샾이라 할 수 있습니다. 상점과 달리 커스텀 샵에는 완성품이 존재하지 않습니다. 대신 사용자가 주문을 넣으면 그 즉시 사용자에 딱 맞는 맞춤 프라모델을 만들어 제공합니다.
덕분에 우리는 게시판 서비스에서 다른 사람이 글을 게시하면 새로운 글이 추가된 새로운 Http문서를 받아볼 수 있게 되는 것입니다.
아래 그림은 자바의 대표적인 WAS인 톰켓의 작동방식을 표현한 것 입니다.
사실 웹 서버도 WAS처럼 프로그램을 실행 할 수 있고, WAS도 웹 서버처럼 정적페이지를 전송할 수 있습니다. 둘 사이의 경계가 모호한 것이지요.
웹 서버는 정적페이지 친화적, WAS는 동적페이지 친화적이라고 이해하면 될것 같습니다.
최근에는 웹 서버와 WAS를 함께 두는 경우가 많습니다.
웹 시스템을 위 그림처럼 웹 서버, WAS, DB로 설계하여,정적 페이지 요청은 웹 서버에서 처리하고, 동적 페이지 요청만 WAS가 처리하도록 설계하는 것입니다. 이런 웹 시스템은 여러가지 강점이 있습니다.
첫번째, 값비싼 WAS가 정적 리소스를 처리하는데 에너지를 낭비하지 않습니다.
두번째, 정적 리소스 요청이 많아지면 웹 서버만, 동적 리소스 요청이 많아지면 WAS만 유동적으로 증축할 수 있습니다.
세번째, 비교적 잘 터지는 WAS서버를 대신해 정적인 오류 화면을 사용자에게 제공할 수 있습니다.
<출처>
Inflearn 김영한 선생님, 스프링 MVC1편 - 백엔드 웹 개발 핵심 기술.