웹 서버와 웹 애플리케이션 서버

 

웹 서버

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

 


웹 애플리케이션 서버

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

 


차이점

  • 사실 둘의 경계도 모호하다.
    • 웹 서버도 프로그램을 실행하는 기능을 포함하기도 한다
    • 웹 애플리케이션 서버도 웹 서버의 기능을 제공한다
  • 자바는 서블릿 컨테이너 기능을 제공하면 WAS
    • 서블릿 없이 자바코드를 실행하는 서버 프레임워크도 있다
  • WAS는 애플리케이션 코드를 실행하는데 더 특화되어있다.
  • WAS와 DB만으로도 시스템 구성이 가능하다.
    • 하지만 그렇게 하면 WAS가 너무 많은 역할을 담당해 서버 과부하 우려가 있다.
    • 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다.
    • WAS장애시 오류 화면도 노출이 불가능하다.
    • 그래서 일반적으로 WEB서버-WAS-DB로 구성한다.
      • 정적 리소스만 제공하는 웹 서버는 잘 죽지 않음
      • 애플리케이션 로직이 동작하는 WAS서버는 잘 죽음
      • WAS, DB장애시 WEB서버가 오류화면 제공이 가능해진다.