2023년 07월 28일

1. Web Server

Web Server란 클라이언트(브라우저)로부터 HTTP 요청을 받아 HTML 문서나 각종 리소스를 전달하는 서버이다. 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답한다. 응답하는 데이터는 즉시 응답이 가능한 정적 컨텐츠 (HTML, CSS, 이미지 등)로 한정된다.

이 때 Web Server가 동적 컨텐츠를 요청 받으면 WAS에게 해당 요청을 넘겨주고 WAS에서 처리한 결과물을 클라이언트에게 전달하는 역할도 수행한다.

이러한 웹 서버에는 Apache, NginX 등이 있다.

2. WAS (Web Application Server)

WAS란 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버이다. HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 데이터베이스 서버와 같이 수행된다. WAS는 JSP, Servlet 구동환경을 제공해주기 때문에 서블릿 컨테이너 혹은 웹 컨테이너로 불린다.

이러한 WAS는 웹 서버의 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시되었다. 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다. WAS는 프로그램 실행 환경과 DB 접속 기능을 제공하고 DB와 소통한다. 이 때 사용하는 언어가 SQL이다. 또 여러 개의 트랜잭션을 관리 가능하고 비즈니스 로직을 수행할 수 있다. 즉 WAS 역할은 Web Server + Web Container라고 볼 수 있다.

이러한 WAS에는 Tomcat, JBoss, WebSphere 등이 있다.

2-1. WAS가 필요한 이유

웹 페이지는 정적 컨텐츠동적 컨텐츠가 모두 존재한다. 이 때 정적 컨텐츠를 제공하는 Web Server만을 사용한다면 사용자가 원하는 요청에 대한 결과 값을 미리 모두 만들어놓은 후 서비스해야 한다. 하지만 이러한 작업을 수행하기에는 자원이 절대적으로 부족하다. 그렇기 때문에 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와 비지니스 로직에 맞게 결과를 만들어 제공함으로써 자원을 효율적으로 사용할 수 있다.

2-2. WAS로 웹 서버 역할까지 다 처리할 수 있는거 아닐까?

Untitled

WASWeb ServerWeb Container의 역할을 모두 할 수 있다. 여기서 Container는 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말한다. 현재 WAS의 Web Server도 정적인 컨텐츠를 처리하는 데 성능상 큰 차이가 없다. 하지만 Web ServerWAS를 분리하는 것이 좋다. 이유는 다음과 같다.