항상 동일한 내용을 반환하는 컨텐츠이다.
image, html, css, javascript 등이 있다.
어떠한 명령에 의존하여 결과가 달라지는, 즉 내용이 변하는 컨텐츠이다.
Java 혹은 C++ 등 프로그램에 의한 결과물을 의미한다.
그렇다면 Web Server와 WAS는 무엇이며, 위 내용과 어떤 관련이 있을까?
즉시 응답이 가능한 정적 컨텐츠를 제공하는 서버이다.
HTTP를 기반으로 Client의 요청을 처리하며, 크게 두 가지 기능을 수행한다.
- WAS를 거치지 않고 정적 컨텐츠를 빠르게 제공한다.
- 동적인 요소가 필요한 경우, 요청을 WAS로 전달한다.
예로써 Apache http server, NGINX 등이 있다.
다양한 논리 및 DB 접근에 대한 요청을 처리하는 서버이다.
즉, 동적 컨텐츠를 제공 가능한 서버이며, 정적 컨텐츠 또한 제공 가능하다.
대표적으로 Tomcat이 있다.
그렇다면 일반적인 웹 서비스의 구조는 어떻게 될까?
대부분의 경우에 Client는 Web Server를 거친 후, WAS에서 로직을 처리하거나 DB에서 데이터를 가져온 후 다시 Web Server를 통해 Client에게 전달한다.
이때 이러한 의문을 가질 수 있다.
정적 컨텐츠에 비해 동적으로 로직을 처리하는 비용이 압도적이므로, WAS의 과부하를 방지하기 위해 Web Server와 WAS를 분리한다.
즉, Web Server는 정적 컨텐츠만을 제공하고 WAS는 동적 컨텐츠만을 담당한다.
이외에 보안, Load Balancing 등의 이유도 있다.
물론, 처리할 로직이 적은 경우에는 WAS만으로 서버 비용을 절감하는 경우도 존재한다. 비슷한 원리로 정적 컨텐츠만 존재하는 서비스라면, Web Server만으로 architecture를 구성하기도 한다.
실제로 Server에 오류가 났음에도 Client가 아래 사진과 같이 오류에 대한 정보를 확인할 수 있는 이유는, WAS에서 Web Server에 전달한 정보가 오류 발생에 관한 정보이고, 이를 통해 Web Server는 Client에게 상황에 맞는 컨텐츠를 제공했기 때문임을 알 수 있다.
[Web] 웹 서버(Web Server)와 WAS의 차이
[Web] Web Server와 WAS의 차이와 웹 서비스 구조
좋은 글 잘 보고갑니다