웹 서버 (Web Server)

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

 

웹 애플리케이션 서버 (WAS)

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

  • 예) 톰캣, Jetty, Undertow

 

웹 서버와 WAS 의 차이

웹 서버는 정적 리소스를, WAS는 애플리케이션 로직을 포함한 동적 리소스 처리한다.

사실 둘의 용어도 경계도 모호하다.

  • 웹 서버도 애플리케이션 로직을 실행하는 기능을 포함하기도 함
  • WAS도 웹 서버의 기능을 수행 가능

 

자바에서는 서블릿 컨테이너 기능을 제공하면 WAS 라고 하며 WAS는 애플리케이션 코드를 실행하는데 더 특화돼있다.

 


웹 서버와 WAS를 분리하는 이유는?

WAS는 정적 리소스, 애플리케이션 로직 모두 제공 가능하므로 WAS, DB 만으로도 시스템 구성이 가능하다.

그러나 주로 서버 구성 시에 웹 서버와 WAS를 분리하여 구성한다. 그 이유에 대해 알아보자.

 

1. WAS가 너무 많은 역할을 담당하면 서버 과부하 우려가 있다.

WAS 단독으로 사용시 정적 리소스 때문에 가장 중요한 애플리케이션 로직의 수행이 어려울 수 있다.

또한 WAS 장애 시 오류 화면 출력이 불가능하다.

 

2. 물리적으로 분리하여 보안을 강화한다.

WAS에는 실제 Web Application이 올라가 있기 때문에 외부와 직접 연결이 되어 있다면

중요한 설정 파일이나 리소스들이 외부로 노출될 수 있다.
이를 막기 위해서 서버 WAS앞단에 배치해서 리소스를 안전하게 보호할 수 있다.

 

3. 유연한 로드밸런싱이 가능하다.

 

정적 리소스는 웹 서버가 처리하고, WAS가 애플리케이션 로직같은 동적인 처리를 전담한다.

이에 따라 효율적인 리소스 관리가 가능해진다.

  • 정적 리소스가 많이 사용되면 웹 서버 증설
  • 애플리케이션 리소스가 많이 사용되면 WAS 증설

 

 

결론

웹 서버는 정적인 리소스를 제공하는 서버이고, WAS는 동적인 리소스를 제공하는 서버이다.

WAS 단독으로도 시스템 구성이 가능하지만 웹 서버WAS를 분리하여 구성하는 가장 큰 이유는 로드밸런싱.

'네트워크' 카테고리의 다른 글

[네트워크] JWT 란  (2) 2023.10.04
x-www-form-urlencoded와 json  (0) 2023.09.21
[네트워크] HTTP 요청 데이터  (0) 2023.07.25
[네트워크] REST API 란?  (0) 2023.03.27
[네트워크] API 란?  (0) 2023.03.27

+ Recent posts