Knowledge/개발지식

[서버] Web Sever과 WAS의 차이점(Web Application Sever, 효율적 사용)

도구혜지루루 2023. 10. 23. 08:36
728x90
반응형

Web Sever

 

웹 서버의 역할 수행 <출처: pxd 블로그>

 

웹 브라우저에서의 하이퍼텍스트 전송 프로토콜(HTTP) 요청에 응답하여 정적 웹 컨텐츠(예: HTML 페이지, 파일, 이미지, 비디오)를 제공한다.

 

Web Sever의 기능

HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서버스 하는 기능을 담당한다.

요청에 따라 아래의 두 가지 기능 중 적절하게 선택하여 수행한다.

  1. WAS를 거치지 않고 바로 정적인 컨텐츠 제공
  2. 클라이언트로부터 동적인 컨텐츠 제공을 위한 요청(Request)을 받아 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(응답, Response)한다.

 

Web Sever의 예

  • Apache Sever, Nginx, Window IIS

 


WAS(Web Application Server)

 

WAS의 역할 수행 <출철: pxd 블로그>

 

WAS 또한 Web Sever와 동일하게 HTTP 기반으로 동작한다. Web Server가 할 수 있는 기능 대부분이 WAS에서도 처리가 가능하며, 비즈니스 로직(서버사이드 코드)을 처리할 수 있어 사용자에게 동적 콘텐츠를 전달할 수 있다. 주로 데이터베이스 서버와 같이 수행된다.

 

WAS의 예

  • Tomcat, JBoss, Jeus, Web Sphere

 


차이점

위 각각의 설명을 읽었다면 충분히 파악할 수 있는 부부이지만, 정리하면 기능적으로 동일한 영역도 있고 WAS가 Web Sever기능의 많은 부분을 포함하여 수행하지만 사용의 '목적'이 다르다.

 

Web Server정적인 테이터를 처리하는 서버이다. 이미지나 단순 HTML 같은 정적인 리소스들을 전달하며, WAS만을 이용할 때보다 빠르고 안정적으로 기능을 수행한다. 반면 WAS동적인 데이터를 위주로 처리하는 서버이다. DB와 연결되어 사용자와 데이터를 주고받고, 조작이 필요한 경우 WAS를 활용한다.

 

효율적 사용

그렇다면 웹 서버가 할 수 있는 일을 WAS로도 전부 가능하다면, Web Sever은 굳이 사용하지 않아도 될까?

물론 정적인 콘텐츠만을 제공하는 웹 서비스를 서버에 배포한다면 Web Server만으로도 충분하다. 그런데 동적인 콘텐츠를 제공하는 웹 서비스를 배포해야 할 때는 정적, 동적 요청 처리가 모두 가능한 WAS만을 사용해도 되지 않겠냐는 생각을 할 수도 있다.

 

하지만, WAS는 DB 조회 및 다양한 로직을 처리하는 데 집중해야 한다. 따라서 단순한 정적 콘텐츠는 Web Server에게 맡기고, 기능을 분리해 서버 부하를 방지해야 한다.

 

만약 WAS가 정적 콘텐츠 요청까지 처리하게 된다면, 부하가 커지고 동적 콘텐츠 처리가 지연되면서 수행 속도가 느려진다. 이에 따라 페이지 노출 시간이 늘어나는 문제가 발생하여 효율성이 크게 떨어지게 된다.

 

비효율적인 웹 시스템 구성 <출철: pxd 블로그>
효율적인 웹 시스템 구성 <출처: pxd 블로그>

 

위 그림과 같이 Web Server를 앞단에 두고, WAS는 Web Server가 처리하기 힘든 서버 사이드 코드의 로직 등을 수행하여 Web Server와 함께 사용자에게 양질의 콘텐츠를 제공할 수 있다.

 

사람들이 많이 접속하는 대용량 WAS인 경우, 서버의 수가 여러 대일 수도 있다. 만약 사용 중 WAS에서 문제가 생겨 WAS를 재시작해야하 하는 경우가 생긴다면 이때 앞단의 Web Server에서 WAS를 사용하지 못하도록 요청을 차단한다. 그다음 WAS를 재시작한다면, 사용자들은 WAS에 문제가 발생한지 모르고 이용할 수 있다.

 

이러한 처리를 '장애 극복 기능'이라고 합니다. 즉 규모가 커질수록 Web Server와 WAS를 분리하는 것이다. 그리고 자원을 이용하면서 효율성, 배포 및 유지 보수 편의성을 위해 대체로 분리하여 둔다.

 

소프트웨어 공학에서 '장애 극복 기능'이란 컴퓨터 서버, 시스템, 네트워크 등에서 이상이 생겼을 때 , 예비 시스템으로 자동으로 전환될 수 있도록 처리하는 기능이다. 반면 수동으로 직접 전환 처리하는 것을 '스위치 오버'라고 한다.

 

웹 서비스는 아래처럼 다양한 구조를 가질 수 있다.

 

  1. Client -> Web Server -> DB
  2. Client -> WAS -> DB
  3. Client -> Web Server -> WAS -> DB

 

또한, *리버스 프록시의 구조를 가져가며 서버 부하 방지와 보안적 효율을 얻을 수 있다.

 

 

프록시에 대한 참고는 아래 포스팅에서 할 수 있다.

 

 

 

[네트워크] 포워드 프록시와 리버스 프록시의 차이점(Froward proxy, Reverse proxy)

 

sangcheon02.tistory.com

 

728x90
반응형