WAS(Web Application Server), 간단하게 DB조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server 다 .
HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어이자, 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container) 라고 불린다.
웹 컨테이너(서블릿 컨테이너)란, 웹 서버의 컴포넌트 중 하나로 자바 서블릿과 상호작용한다.
웹 컨테이너는 서블릿의 생명주기를 관리하고, URL과 특정 서블릿을 맵핑하여 URL 요청이 올바른 접근 권한을 갖도록 보장한다.
웹 컨테이너는 서블릿, 자버서버 페이지(JSP)파일, 그리고 서버-사이드 코드가 포함된 다른 타입의 파일들에 대한 요청을 다룬다.
웹 컨테이너는 서블릿 객체를 생성하고, 서블릿을 로드와 언로드하며, 요청과 응답 객체를 생성하고 관리학, 다른 서블릿 관리 작업을 수행한다.
출처 - 위키백과
즉 Container는 JSP, Servlet을 실행시킬 수 있는 소프트웨어 이며, WAS는 JSP, Servlet 구동 환경을 제공한다.
WAS는 Web Server + Web Container의 역할을 한다.
Web Server 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시되었다.
- 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다.
- 주로 DB서버와 같이 수행된다.
현재는 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는데 성능상 큰 차이가 없다.
WAS를 사용하면 사용자의 요청에 맞게 적절하게 정적 컨텐츠, 동적 컨텐츠 모두 제공할 수 있다.
WAS를 통해 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 결과를 만들어서 제공함으로써 자원을 효율적으로 사용할 수 있다.
하지만 WAS만 사용하여 요청을 수행하기에는 자원이 부족하다.
만약 정적 컨텐츠 요청까지 WAS가 처리한다면 정적 데이터 처리로 인해 부하가 커지게 되고, 동적 컨텐츠의 처리가 지연되면서 수행속도가 느려진다.
이는 페이지 노출 시간이 늘어나는 결과를 초래한다.
때문에 WAS는 DB 조회나 다양한 로직을 처리하는 역할을 수행하고 정적 컨텐츠는 Web Server에서 빠르게 클라이언트에게 제공하면 서버의 부하를 방지할 수 있다.
혹은 여러대의 WAS를 연결하는 Load Balancing을 수행하여 장애 극복 혹은 Fail Back 처리에 유리하다.
특히 대용향 웹 애플리케이션의 경우 Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
끝!
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html