웹서버와 WAS

웹서버와 WAS 차이를 이해하기 전, Static Web과 Dynamic Web의 차이를 먼저 이해할 필요가 있다.

Static Web

출처 : Javattpoint

정적인 웹 애플리케이션이다. 클라이언트로부터 리소스 경로를 요청 받으면, 웹 서버상의 리소스(html, css, js 등의 static 리소스)를 반환하는 기능을 수행한다. 사용자의 요청에 따라 능동적으로 반환하기 보다는 그저 리소스의 경로를 요청받으면, 거기에 맞는 리소스만 반환하는 제한된 역할을 수행한다. 현재 이 블로그도 이러한 static web의 형태이다.

Dynamic Web

출처 : Javatpoint

동적인 웹은 클라이언트의 요청에 따른 리소스를 반환한다.

예를 들면, 브라우저 검색창에 https://www.google.co.kr/search?q=devandy 라고 입력하고 접속하면, 구글 검색창에 devandy를 검색한 결과창이 출력된다. Google 서버에 q에 대입한 키워드로 search 결과를 요청한 것에 따른 반환 결과인 것이다.

다른 키워드를 검색하면 당연히 검색결과는 해당 키워드에 맞는 문서들로 출력될 것이다. 이런 웹의 형태를 클라이언트의 요청에 따라 dynamic한 응답을 한다고 해서 dynamic web이라고 한다.


Web Server

웹 서버는 크게 두 가지 형태로 구분한다.

하드웨어와 소프트웨어로 구분할 수 있는데, 하드웨어 웹 서버는 리소스를 저장하는 물리적 서버(컴퓨터)를 이야기한다.

소프트웨어로써 웹 서버는 클라이언트로부터 HTTP 요청을 받아서 리소스를 반환하는 프로그램을 이야기한다.

Apache와 Nginx가 웹 서버에 해당한다.


WAS(Web Application Server)

WAS는 웹서버와 웹 컨테이너를 결합한 형태(WAS = Web Server + Web Container)를 의미한다.

웹 컨테이너란, JSP, Servlet을 실행시킬수 있는 소프트웨어를 말하는데, WAS가 웹 컨테이너의 구동 환경임을 제공한다.

WAS는 dynamic web을 구성함과 동시에 트래픽을 분산 처리하기 위해 사용된다. 정적 리소스에 대한 요청은 웹 서버에서 해결하고, DB 조회가 필요한 경우에만 웹 컨테이너가 동작되게끔 구조적으로 분리되어있다.

웹 컨테이너만으로도 웹 애플리케이션을 구성할 수 있을것 같지만, 웹 서버를 따로 분리한 이유는 역할에 따라 구분함으로써 서버 부하를 방지하며, 로드밸런스를 위해서이다.

출처 : 가비아

여기서 로드 밸런스란 하나의 웹 서버로 모든 요청을 처리하면, 클라이언트 요청이 많아질수록 서버 부담이 커지므로, 서버를 증설하여 요청을 분산하여 결과적으로 서버 부하를 방지할 수 있는 웹 서비스이다.

로드 밸런스를 구축하면, 하나의 웹 서버가 뻗는다하더라도 클라이언트 요청을 정상적으로 작동하는 서버로 보내서 무중단 서비스를 구축하는 일이 가능해진다.


같이 읽어보면 좋을 글 또는 영상