웹 서버와 WAS(Web Application Server) 서버는 웹 상에서 서비스를 제공하기 위해 사용하는 서버이다.
두 서버 모두 HTTP 기반으로 동작하는데
두 서버의 역할과 기능에는 차이가 있으며, 각각의 서버가 목적과 기능을 가지고 있다.
웹 서버 WAS 서버의 비교
웹 서버
웹 서버가 하는 일은 대표적으로 2가지가 있는데
먼저, 첫 번째로 클라이언트에서 url을 통해 HTTP 요청을 보내면 정적인 콘텐츠들(HTML, CSS, 이미지 등)을 제공해준다.
다음으로 동적인 요청이 들어왔을 때, 해당 요청을 WAS(Web Application Server)에 처리해줄 것을 요청한다. → 얘는 시스템 구성에 따라 다를 수도 있다.
대표적인 웹 서버의 종류로는 Apache, Nginx, IIS 등이 있다.
WAS 서버
웹 서버의 일을 처리가 가능하면서(= 정적인 콘텐츠 제공) 동적인 콘텐츠를 생성하고, 데이터를 처리하는 역할을 한다.
여기서 말하는 동적인 콘텐츠는 위치나, 시간 같이 자주 변경되는 데이터들이나 사용자에 따라 다른 데이터를 의미한다. → 은행 잔고, 장바구니, 프로필 정보
이에 따라 동적 HTML, HTTP API(JSON)을 제공하며
우리가 아는 서블릿, JSP, 스프링 MVC 등이 이 WAS 위에서 동작을 하게 된다.
대표적으로 톰캣, Jetty, Undertow가 WAS 서버이다.
결론적으로 두 서버의 차이를 비교해보면 웹 서버는 정적 리소스를 제공하고 WAS는 어플리케이션 코드를 실행하는데 더 특화되어 있다는 점이다.
효율적인 시스템 구성
아니!! WAS가 웹 서버의 역할도 수행할 수 있고, 심지어 어플리케이션 로직 까지 모두 제공할 수 있는데 그럼 WAS만 사용해서 시스템을 구성하면 되는거 아냐??
Nope
위에 그림과 같이 WAS 만으로 구성하게 되면 정적 리소스 + 어플리케이션 로직 모두를 WAS 서버 혼자서만 담당해야 하기 때문에 서버에 과부하가 올 수가 있다.
또한 어플리케이션 로직 자체가 비싼데(= 처리해야 할게 많음) 정적 리소스들을 처리하느라 어플리케이션 로직을 처리하지 못하는 경우가 발생할 수 있다.
마지막으로 WAS에 장애가 발생한다면 오류 화면에 대한 처리도 수행할 수 없기 때문에 WAS와 웹 서버를 함께 사용하는 것이 시스템 구성에 있어서는 효율적이라고 한다.
시스템 구성 : WEB ↔ WAS ↔ DB
1. 정적 리소스는 웹 서버가 처리하고
2. 웹 서버는 어플리케이션 로직같은 동적인 처리가 필요할 때 WAS에 요청을 넘겨준다.
3. 마지막으로 WAS는 중요한 어플리케이션 로직을 처리하고 DB와 컨택 하며 클라이언트에서 원하는 정보들을 넘겨주게 된다.
이렇게 하면 효율적인 리소스 관리가 가능하다.
정적 리소스가 많이 필요하다면 웹 서버만 늘리면 되고 동적 리소스가 많이 필요하다면 WAS를 늘리면 된다.
'Back-end > Server' 카테고리의 다른 글
[Spring] 스프링 구조 정리 (0) | 2025.01.11 |
---|---|
[Spring] 스프링 빈이란? (0) | 2024.05.28 |
[Spring] Spring 프레임워크? (0) | 2024.05.27 |