웹 서버(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 |
---|
댓글