본문 바로가기
Server

[Server] 웹 서버와 웹 어플리케이션 서버

by jinjin98 2023. 1. 25.

웹 서버(Web Server)

 

 

ex) NGINX, APACHE

웹 서버는 HTTP 기반으로 동작하며 정적 리소스를 제공할 때 사용합니다.

(여기서 정적 리소스란 정적 HTML, CSS, JS, 이미지, 영상으로

누가 요청해도 같은 결과를 반환하는 데이터를 의미합니다.)

 

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

 

 

ex) Tomcat, Jetty, Undertow

WAS 라고 불리는 웹 어플리케이션 서버는 웹 서버와 같이 HTTP 기반으로 동작하고 있습니다.

WAS 는 프로그램 코드를 실행해서 어플리케이션 로직을 수행하므로 요청을 동적으로 처리해 응답할 수 있습니다.

즉, 사용자 요청에 따라 다른 화면을 보여줄 수 있는 것이죠.

(여기서 프로그램 코드는 템플릿 엔진을 사용하는 동적 HTML, HTTP API(JSON), 서블릿, JSP,

스프링 MVC 등을 말합니다.) 

WAS 는 웹 서버 기능을 포함해 정적 리소스도 제공할 수 있습니다. 하지만 WAS 가 정적 리소스도 제공하게 된다면

너무 많은 역할을 담당하므로 서버 과부하가 일어날 수 있는데요. 이렇게 되면 더 중요한 어플리케이션 로직이

정적 리소스 때문에 수행되지 못할 수 있습니다. 그리고 WAS 에 장애가 발생해 종료된다면 웹 브라우저에서는

서버에 접근조차 할 수 없으므로서버에서는 오류 화면도 보여줄 수 없게됩니다.

 

 

이런 문제들을 방지하기 위해 WAS 앞에 웹 서버를 두어 정적 리소스 요청이 오면 웹 서버가 처리하도록 하고 

동적인 처리가 필요하면 웹 서버가 WAS 에 요청을 위임합니다. 이런 과정 덕분에 WAS 는 중요한 어플리케이션

로직 처리를 전담할 수 있습니다.

 

 

요청 처리를 분담하면서 발생하는 또 다른 장점으로는 효율적인 리소스 관리를 할 수 있는 것입니다.

정적 리소스가 많이 사용되면 웹 서버만 증설하고

애플리케이션 리소스가 많이 사용되면 WAS 만 증설할 수 있습니다.

 

 

또한 웹 서버는 WAS 와 달리 잘 죽지 않기 때문에 WAS 나 DB 장애시 미리 준비한 정적인 오류 화면을

제공할 수 있습니다.

'Server' 카테고리의 다른 글

[Server] Rest API  (0) 2022.11.06

댓글