WS(Web Server) 와 WAS(Web Application Server)

Federico-15·2025년 1월 6일

스프링 공부

목록 보기
4/8

이번 포스트는 WS(Web Server)와 WAS(Web Application Server)가 무엇인지, 차이와 역할에 대해 설명하겠습니다.


1. WS (Web Server)

WS의 역할

  • 웹 서버는 클라이언트의 HTTP 요청 기반으로 동작
  • 정적(파일) HTML, CSS, JS, 이미지, 영상을 처리
  • 동적 요청을 WAS로 전달하는 역할
  • ex) NGINX, APACHE

정리하자면, WS(Web Server)는 HTML, CSS, JavaScript, 이미지 등 정적 콘텐츠를 처리하고, 동적 요청은 WAS(Web Application Server)에 전달하는 역할을 합니다.


2. WAS (Web Application Server)

WAS의 역할

  • HTTP 기반으로 동작
  • 동적 컨텐츠(db에서 가져온 정보, API 요청 처리 결과 등)을 생성하고 반환 + (정적 컨텐츠 제공 가능)
  • 프로그램 코드를 실행해서 애플리케이션 로직 수행
  • ex) 톰캣(Tomcat) Jetty, Undertow

정리하자면, WAS(Web Application Server)는 클라이언트의 동적 요청을 처리하고 비즈니스 로직을 실행하여 결과를 반환하는 서버입니다.


3. WS와 WAS

  • WS는 정적 리소스(파일)를 제공, WAS는 애플리케이션 로직을 처리
  • 사실은 둘의 용어도 경계도 모호합니다. (WS도 애플리케이션 로직을 처리하기도 하며, WAS는 WS의 기능을 제공하기 때문)
  • WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있습니다.

밑의 그림처럼, WAS, DB만으로 시스템 구성이 가능합니다.
(WAS가 정적 리소스, 애플리케이션 로직을 모두 제공이 가능하기에)

그럼, 이렇게 WAS로 애플리케이션 로직, 정적컨텐츠 제공을 하면 되지않냐? 라고 생각이 드실 수 있습니다.

하지만, 이런 방식의 웹 시스템 구성은 WAS가 너무 많은 역할을 담당하게 되어, 서버 과부하 우려가 발생할 수 있습니다. 또한, WAS에서 돌아가야 할 애플리케이션 로직이 정적 리소스 때문에 WAS의 버그가 발생할 수 있습니다. 이렇게 WAS에 장애가 발생하면, 정적컨텐츠로 제공되어야 하는 오류화면도 노출이 불가능하게 됩니다.


따라서, WS와 WAS에 각각 역할을 수행시키는 웹 시스템 구성을 따르는 것이 좋습니다. 밑의 그림처럼 말이죠.

이 구성의 특징을 정리하자면,

  • 정적 리소스는 WS가 처리
  • WS는 동적인 처리가 필요하면 WAS에 요청함
  • WAS는 애플리케이션 로직 처리 전담
  • 정적 리소스만 제공하는 WS는 잘 죽지 않음
  • 애플리케이션 로직이 동작하는 WAS 서버는 잘 죽음
  • 따라서, WAS, DB 장애시 WS가 오류 화면 제공 가능

최종적으로, 정적리소스와 애플리케이션 리소스의 사용량에 따라서 WS를 증설하거나, WAS를 증설할 수 있습니다.


다음 포스트에서는 WAS의 핵심 컴포넌트인 서블릿과 쓰레드에 대해서 포스트하겠습니다! 다음 포스트에서 봅시다!!

profile
한 방 있는, 묵직한 개발자

1개의 댓글

comment-user-thumbnail
2025년 1월 9일

WS 와 WAS의 관계가 모호하다고 생각했는데, 이 글을 보고 명확하게 이해하였네요! 다음 포스팅인 서블릿과 쓰레드도 기대하겠습니다!

답글 달기