면접 준비

웹 서버 vs WAS 비교

꾸준함. 2021. 5. 28. 15:42

웹 서버 (Web Server)

  • 정적 리소스 제공 즉, 정적 파일인 HTML, CSS, JS, 이미지, 영상 etc.
  • HTML 기반으로 동작
  • 웹 서버의 종류: Nginx, Apache

 

WAS (Web Application Server)

  • 웹 서버 기능도 제공 즉, 정적 리소스도 제공 가능
  • 프로그램 코드를 실행해서 비즈니스 로직 수행
    1. Client Side Rendering (동적 HTML), REST Api 제공
    2. 서블릿, JSP, Spring MVC
  • WAS의 종류: Tomcat, Jetty

 

Web Server vs WAS

  • 사실 Web Server와 WAS의 경계가 모호
    1. WAS는 Web Server의 기능을 포함
    2. 또한, Web Server도 플러그인을 통해 로직 수행 가능
  • 대체적으로 자바 웹 프로그래밍에서는 서블릿 컨테이너 기능을 제공하는 서버를 WAS라고 부름
  • 둘의 경계가 모호하더라도 로직을 수행하는데 더 특화되어 있는 쪽이 WAS

 

WAS가 Web Server 기능도 포함한다면 둘을 같이 써야 하는 이유가 있나요?

  • WAS가 정적 리소스 그리고 비즈니스 로직을 모두 제공할 경우 서버 과부하 발생 가능성이 높아지며 장애 대응 힘듬
    1. 로직을 수행하는 데는 자원이 많이 필요하기 때문에 정적 리소스와 함께 제공할 경우 자원 부족 발생 가능
    2. DB가 다운되거나 비즈니스 로직 내 장애 때문에 WAS가 다운되었을 때 WAS만 있는 구조라면 에러 페이지를 제공할 수 없음 
  • 정적 리소스만 제공하는 웹 서버의 경우 장애를 유발할 가능성이 있는 비즈니스 로직이 없기 때문에 다운될 가능성이 현저히 낮음 (WAS나 DB 죽을 경우 에러 페이지 제공)
  • 반면, 동적인 처리 즉, 비즈니스 로직을 처리하는 WAS의 경우 서버가 죽을 가능성 상대적으로 높음
  • 따라서, 웹 서버와 WAS를 같이 사용하여 정적 리소스는 웹 서버가 제공하고 동적인 처리는 웹 서버가 WAS에 위임 처리하는 구조를 사용하는 것이 효율적인 구조 (업무분담이 중요)

 

* API 서버의 경우 화면을 제공할 필요가 없기 때문에 WAS만 사용

 

참고

인프런 스프링 MVC 1편 (김영한 강사님)

 

반응형

'면접 준비' 카테고리의 다른 글

Servlet, JSP, MVC 패턴  (0) 2021.06.04
서블릿 (Servlet) 간단 정리  (0) 2021.05.28
싱글톤(Singleton) 패턴  (0) 2021.05.16
객체지향 설계 원칙: SOLID 법칙  (0) 2021.05.15
[Java] 정렬  (0) 2021.04.25