"웹 서버와 웹 애플리케이션 서버의 차이점"은 매우 기본적인 백엔드 개발자 면접 질문이라고 한다.
이 차이점을 이해하기 위해서, 먼저 Static Page와 Dynamic Page의 차이점을 알아야 한다.
[출처] https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
서블릿 컨테이너
라고도 불린다.✔️ Web Container란?
웹 서버가 보낸 JSP, PHP, ASP.net 등의 파일들을 실행하고 수행 결과를 다시 웹 서버로 보내주는 역할을 한다.
정리해보자면, 들어오는 요청을 모두 웹 서버가 먼저 받는다.
그리고 정적 컨텐츠라면 웹 서버에서 처리하고, 동적 컨텐츠라면 WAS에게 요청을 보낸다.
WAS는 Web Container를 통해 로직을 실행한 후에 그 결과를 다시 웹 서버로 보낸다.
웹 서버가 이를 다시 클라이언트에게 전해주게 된다.
자원의 효율성을 위해서이다!
이 블로그에 작성되어 있는 것처럼 자원의 효율성 외에도 다양한 이유들이 있다. (장애 극복, 배포 및 유지보수의 편의성 등)
우선 자원의 효율성에 대해서만 생각해보자!
서버가 클라이언트에게 제공해야될 것은 정적 페이지와 동적 페이지가 있다.
정적 페이지는 별다른 로직이 필요하지 않기 때문에 빠르게 전달할 수 있고, 동적 페이지는 로직이 필요하기 때문에 비교적 시간이 더 걸린다.
Web Server와 WAS가 분리되어 있지 않고 하나로 구성되어 있다고 가정해보자.
동적 페이지에 대한 요청이 들어오고 나중에 정적 페이지에 대한 요청이 들어오면, 서버는 동적 페이지에 대한 요청을 먼저 처리할 것이고 나중에 들어온 정적 페이지에 대한 요청은 별다른 로직이 필요없어서 빨리 처리할 수 있음에도 불구하고 동적 페이지를 처리하느라 지연될 것이다.
그러므로 수행 속도가 느려질 것이다.
따라서 정적 페이지와 동적 페이지를 처리하는 Web Server와 WAS를 따로 둔 것이다.
Web Server를 통해서 정적 파일들을 WAS를 거치지 않고 빠르게 클라이언트에게 전달할 수 있다.
WAS를 거치지 않으니 WAS에 대한 서버의 부담을 줄일 수 있다.
WAS를 통해서 필요한 동적 파일들을 그때그때 만들어 제공할 수 있다.
[참고]
https://binux.tistory.com/32
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html