Web과 WAS란 ? 웹 서비스의 구조에 대해 알아보자

Web Server (웹 서버)

웹 서버란, HTTP 프로토콜을 기반으로 동작하는 서버로,

동작하는 방식은 클라이언트가 웹 서버에 HTTP 요청을 보내면 웹 서버는 HTTP로 응답하여 정적 리소스를 제공합니다.

대표적인 웹 서버
- Nginx
- Apache

 


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

WAS도 Web 서버처럼 HTTP 프로토콜을 기반으로 동작하고 웹 서버 기능을 포함하여 동적 리소스도 제공 할 수 있는 Application 서버입니다.

WAS는 서블릿 컨테이너 또는 웹 컨테이너를 제공하고 컨테이너를 통해 프로그램 코드를 실행해 애플리케이션 로직을 수행하거나 DB 조회 .. 동적 리소스를 제공합니다.

대표적인 WAS
- Tomcat (톰캣)
- Jetty
- Undertow

 


Web 서버와 WAS의 차이?

간단하게 정리하면 Web 서버는 정적 리소스를 제공, WAS는 애플리케이션 로직까지 실행할 수 있다라고 정리할 수 있습니다.

하지만 Web 서버도 프로그램을 실행하는 기능을 포함하고 Was도 웹 서버의 기능을 제공하기 때문에 이 둘의 차이가 애매합니다.

명백한 차이가 있다고 하면 서블릿 컨테이너가 있다, 없다의 차이라고 할 수 있고 WAS는 애플리케이션 코드를 실행하는데 더 특화되있다고 할 수 있습니다.

 

 

웹 서비스의 구조 - Web 서버와 WAS의 분리

WAS는 Web서버의 기능을 포함했기 때문에 WAS와 DB만으로 시스템을 웹 서비스를 구성가능 합니다.

하지만 WAS만으로 웹 서비스를 구성하였을 시 다음과 같은 문제가 발생할 수 있습니다.

WAS가 너무 많은 역할을 담당하기 때문에 서버 과부하 위험이 있을 수 있고 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있습니다.

그리고 만약 WAS에 장애가 발생했다면 리소스를 전달할 수 없기 때문에 오류 화면도 노출이 불가능하다는 단점이 있습니다.

 

WAS로만 웹 서비스 설계시 위와 같은 문제점으로 인해 다음과 같이 웹 서비스 구조를 변경하게 됩니다.

Web - WAS 분리

Web 서버는 정적인 리소스를 처리하고, 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 합니다.

WAS는 중요한 애플리케이션 로직을 전담하여 처리합니다.

 

이렇게 Web과 WAS를 분리한다면 다음과 같은 장점을 얻을 수 있습니다.

  • WAS에 장애가 발생하더라도 Web 서버가 오류화면 HTML을 제공 => 정적 리소스만을 제공하는 Web서버는 잘 죽지 않지만 애플리케이션 로직을 수행하는 WAS 서버는 잘 죽음.
  • 효율적인 리소스 관리 => 정적 리소스가 많이 사용되면 Web 서버 증설, 동적 리소스가 많이 사용되면 WAS 증설