Spring

[Spring] 웹 서버 vs 웹 어플리케이션 서버

cornarong 2021. 7. 22. 00:08

웹 서버(WS)와 웹 어플리케이션 서버(WAS)


웹 서버 (Web Server)

출처 - 김영한의 스프링MVC1편

  • HTTP 기반으로 동작
  • 정적 리소스 제공, 기타 부가기능
  • 정적(파일) HTML, CSS, JS, 이미지, 영상
  • 예) NGINX, APACHE

웹 어플리케이션 서버 (WAS - Web Application Server)

출처 - 김영한의 스프링MVC1편

  • HTTP 기반으로 동작
  • 웹 서버 기능 포함 + (정적 리소스 제공 가능)
  • 프로그램 코드를 실행해서 애플리케이션 로직 수행
    • 동적 HTML, HTTP API (JSON)
    • 서블릿, JSP, 스프링 MVC
  • 예) Tomcat, Jetty, Undertow

웹 서버와 웹 어플리케이션 서버의 차이점

간단하게 차이점을 구분하면 사용하는 기능에 따라 나누어진다.

웹 서버(WS) 웹 어플리케이션 서버(WAS)
정적(파일) HTML, CSS, JS, 이미지, 영상 애플리케이션 로직 수행

 

실질적으로는 WAS 하나로 정적 리소스, 애플리케이션 로직 모두 사용 가능하다.

하지만 규모가 커질 수록

  1. WAS가 너무 많은 역할을 담당하게 된다. (서버 과부하 우려)
  2. 정적 리소스 떄문에 애플리케이션 로직을 수행하는데 문제가 생길 가능성도 있다.
  3. WAS 장애시 오류 화면도 노출 불가능하다.

 

따라서 가장 이상적인 방법은

WS와 WAS를 나누어 정적 리소스는 WS가 처리하고

WS는 애플리케이션 로직 같은 동적인 처리가 필요하면 WAS에 요청을 위임한다.

이렇게 나누게 되면

  1. WAS는 중요한 애플리케이션 로직 처리만 전담한다.
  2. WAS장애시 WS는 살아있기에 WAS의 응답 여부에 따라 오류 화면도 노출시킬 수 있다.

 


사실 웹 서버도 웹 애플리케이션 서버의 기능을 포함 하기도 하고

웹 애플리케이션 서버도 웹서버의 기능을 포함 하기때문에

실제로는 둘의 용어와 경계가 모호 하다고 한다.

 

 

 

 

 


Reference

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/