본문 바로가기
BackEnd

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

by 앙헬디마리아 2021. 6. 4.
728x90

웹 서버와 WAS의 차이점에 대해 명확하게 설명하고 싶어서 그리고 실무에서는 어떤 방식으로 이루어져 있는지에 대해 글을 씁니다.

 

일단 우리가 사용하는 웹페이지는 모~두 HTTP로 통신을 하고 있다.

HTML, 이미지, CSS, JSON.. 등 모든 데이터를 HTTP로 통신을 하기 때문에 동적 혹은 정적으로 데이터를 보여준다.

 

왜 갑자기 HTTP 얘기가 나왔느냐

 

웹서버(Web Server)

웹서버는 HTTP기반으로 동작하기 때문이다.

 

웹서버는 보통 정적인 리소스를 제공해준다 ex) HTML, CSS, 이미지 

 

그리고 이러한 웹서버는 우리는 Apache 혹은 Nginx를 사용한다.

 

 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 김영한

 

웹 애플리케이션 서버 (Web Application Server = WAS)

WAS 역시 HTTP 방식으로 통신한다.

 

WAS는 동적+정적인 역할을 둘다 할 수 있다. 동적인 역할만 할 수 있다고 알고 있었다.

 

또한 프로그램 코드를 통해 어플리케이션을 실행 시킬 수 있다!  (웹서버와 확연히 다른 역할을 수행하고 있다.)

ex) HTTP API, 서블릿, JSP, Spring MVC가 있다.

 

 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 김영한

 

 

Web Server 와 WAS의 차이를 글로 다시 한번 정리해보겠다.

 

• 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직

• 웹 서버도 프로그램을 실행하는 기능을 포함하기도 한다

• 웹 애플리케이션 서버도 웹 서버의 기능을 제공한다.

• 자바는 서블릿 컨테이너 기능을 제공하면 WAS

• 서블릿 없이 자바코드를 실행하는 서버 프레임워크도 있다.

• WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있다.

 

 

여기서 의문점이 하나 생길 수 있다.

 

아니 WAS에서 정적 동적 리소스를 다 사용할 수 있으면 WAS만 사용하면 되지 왜 굳이 Web Server를 사용해야 할까?

 

 

 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 김영한

 

물론 가벼운 프로젝트나 규모가 작은 프로젝트에서는 WAS, DB만을 이용하여 웹 시스템을 구축 할 수 있다.

 

하지만 조금 많은 요청을 처리하다보면 WAS 혼자서 많은 일을 감당해야 할 것이다. 

 

정적 , 동적 리소스를 다 ~~ 혼자서 처리해야한다.

마치 누구를 보는것 같네..

서버 과부하가 생기기도 하고 WAS에 장애가 생겨도 WebServer의 정적 리소스도 없기 때문에 사용자에게 보여줄 페이지도 없다.

 

 

그래서 WebServer도 웹 시스템을 구축할때 함께 사용해야한다.

 

 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 김영한

 

현재 다니고 있는 직장에서도 이러한 방식으로 Nginx , Tomcat을 사용하고 있다. 

 

위의 방식으로 구축을 하면 정적인 데이터는 WebServer가 전담하여 리소스를 처리하고, 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임 한다. 동적인 처리를 요청받은 WAS는 중요한 애플리케이션 로직 처리 전담하게 된다.

 

 

 

728x90

'BackEnd' 카테고리의 다른 글

RestTemplate, WebClient 의 특징과 차이점  (0) 2021.09.26
Kakfa란 ? (개념, 동작원리)  (0) 2021.05.17
JPA(Java Persistence API), Hibernate 란?  (0) 2021.04.25
Connection Poll (커넥션풀)  (0) 2021.04.24
메세지 큐  (0) 2021.04.14