✅ 웹 서버(Web Server) vs WAS(Web Application Server)

그 동안 웹 서버와 WAS의 차이에 대해서 명확히 알지 못했기에 이번에 이 둘의 차이를 명확히 정리해보려고 한다

웹 서버와 WAS에 대해서 알아보기 전에 우선 웹 서비스 동작원리에 대해서 간단히 정리한 내용을 우선 확인해보면 아래와 같이 웹 서비스 동작 원리에 대해서 파악 할 수 있는데 클라이언트는 서버에 요청을 보내고 서버는 요청을 받아 처리하고 클라이언트에 응답을 해준다

  • 클라이언트(Client) : 서비스를 사용하는 프로그램 또는 컴퓨터
  • 서버(Server) : 서비스를 제공하는 프로그램 또는 컴퓨터
  • 작동 방식 : 클라이언트 요청에 따라 서버는 이를 처리하고 클라이언트에 응답을 보낸다

가장 헷갈렸던 부분이 인터넷에 WAS를 찾아보면 아래 그림과 달리 WAS안에 웹 서버와 서블릿 컨테이너가 포함되어 있고 클라이언트와 요청을 주고 받는 그림이 많이 나왔기에 아래 그림과 같이 WAS앞에 웹 서버가 있는 구조가 아니고 그냥 WAS는 웹 서버 역할과 서블릿 컨테이너의 역할을 둘다 담당하는 “클라이언트 -WAS” 구조만 있다고 생각했다. 다만 이는 불가능 한건 아니지만, 이 부분에 대해서는 아래에서 자세히 설명할 예정이니 이 부분이 이해가 되지 않는다면 아래를 먼저 읽어보는 것을 추천한다.

우선 간단히 설명하자면 WAS와 웹 서버 이 둘은 각각 독립적인 서버로 볼 수 있다. 다만 WAS의 경우 서블릿 컨테이너(Servlet Container)를 포함하면서 웹 서버도 가지고 있다고 생각하면 된다.

즉 WAS는 웹 서버의 역할을 할 수 있고 동시에 서블릿 컨테이너를 가지고 있다고 생각하면 된다.

이제 웹 서버와 WAS의 역할에 대해서 알아보면

  • 웹 서버(Web Server)

웹 서버는 주로 HTTP 프로토콜을 기반으로 한 클라이언트의 요청을 서비스하는 기능을 담당하는데 주기능은 정적인 컨텐츠를 제공하는 역할을 하고 동적인 컨텐츠 요청을 WAS에 전달하고 WAS의 처리 결과를 전달 받아 클라이언트에게 제공하는 역할을 한다.

  • WAS(Web Application Server) = Web Server + Servlet(or Web) Container

WAS의 경우 주로 웹 서버로 부터 전달받은 동적인 요청을 처리하는데 DB조회 혹은 다양한 로직을 처리해준다. 그리고 처리한 결과를 다시 웹 서버로 전달해준다.

그렇다면 위에서 WAS는 웹 서버의 역할도 할 수 있다고 하였다. 그렇다면 클라이언트의 요청을 직접 전달받아 정적인 컨텐츠를 직접 처리하는 클라이언트-WAS 구조도 가능한지 않은가? 의문을 가질 수 있다. 우선 답변은 클라이언트의 요청을 받아 WAS가 직접 정적 컨텐츠를 처리해줄 수 있다.

그런데 그림과 같이 WAS 전면에 웹 서버를 두는 이유는 WAS는 정적 요청에 대해서 처리해줄 만큼 한가하지 않다. 그런데 여기에 정적인 자원까지 요청하게 된다면 WAS는 부담이 될 것이기에 웹 서버와 WAS를 두어 각각 처리하는 기능을 분리해준 것이다.

'etc' 카테고리의 다른 글

[기타] SSH 원격 서버 접속  (1) 2024.10.17
[기타] Iterm2 Vi 편집기 Scroll 설정  (0) 2024.07.12
빌드(build)란?  (0) 2024.04.09
프레임워크(FrameWork) Vs 라이브러리(Library)  (0) 2024.04.05

BELATED ARTICLES

more