Web Server란?
웹 서버란 클라이언트(사용자) 브라우저 주소창에 url에 입력하여 어떤 페이지를 요청하게 되면 http 요청을 받아들여 HTML 문서와 같은 *정적인 컨텐츠를 사용자가에게 전달해주는 서버이다.
*정적인 컨텐츠란?
- 실시간으로 변경할 필요가 없는 데이터
- 웹 서버에 저장해두고 요청이 들어오면 Web Server에서 Client에게 반환해준다.
- 단순히 저장된 웹 리소스들을 클라이언트로 전달하고, 클라이언트로부터 콘텐츠를 저장받아 저장 하거나 처리한다.
- 사용자로부터 동적인 요청이 들어왔을 때 해당 요청을 WAS에게 요청
대표적 웹서버의 종류: Apache,Nginx
WAS(Web Application Server)란?
WAS 또한 웹 서버와 동일하게 HTTP 기반으로 동작합니다. 웹서버가 할 수가 있는 기능 대부분이 WAS에서도 처리가 가능하며 비즈니스 로직을 처리할 수 있어 사용자에게 *동적인 컨텐츠를 전달 할 수가 있다.
*동적인 컨텐츠란?
- 실시간으로 변경되는 데이터
- 접속자에 따라 다른 데이터를 반환
WAS의 주요 역할은 동적인 요청을 받아 처리해주는 서버이다.
대표적인 WAS의 종류 : Tomcat, JBoss, Jeus, Web Sphere
그렇다면 정적인 데이터도 같이 처리할 수 있는 WAS만 써도 되는것 아닐까? 라고 생각할 수도 있다.
결론부터 말하면 정답은 아니다.
그 이유는 다음과 같다
WAS는 DB조회 및 다양한 동적인 로직을 처리하는데 집중해야 한다. 만약 WAS가 정적 콘텐츠까지 요청까지 처리하게 된다면, 부하가 커지고 동적 컨텐츠 처리가 지연되면서 수행 속도가 느려지고 이에 따라 페이지 노출 시간이 늘어나는 문제가 발생하여 효율성이 크게 떨어지게 된다. 즉, WAS만을 사용하여 웹서비스를 운영하는 것은 매우 비효율 적인다.
그럼 어떻게 써야 하는가? 다음과 같이 써야한다.
Client -> Web Server -> WAS -> DB
클라인언트의 요청을 먼저 Web Server가 받은 다음, 정적인 데이터는 Web Server가 처리하고 동적인 데이터는 WAS에게 넘겨서 처리하는 방식으로 이루어질 수 있다.
이러한 구조의 장점
기능을 분리하여 서버 부하 방지
- WAS는 다양한 동적 로직을 처리하느라 바쁘기 때문에 단순한 정적 컨텐츠는 Web Server에서 빠르게 클라이언트에게 제공하는 것이 좋다.
물리적으로 분리하여 보안 강화
- SSL에 대한 암복호화 처리에 Web Server를 사
여러 대의 WAS를 연결 가능
- 앞 단에 Web Server를 두고 Load Balancing 가능
- fail over(장애 극복), fail back 처리에 유리
- 무중단 운영 가능
즉, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS를 분리한다.
참고
[Web] Web Server와 WAS의 차이와 웹 서비스 구조 - Heee's Development Blog (gmlwjd9405.github.io)
[Web] Web Server와 WAS의 차이와 웹 서비스 구조 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io