헷갈리는 개념인 웹서버와 웹 어플리케이션 서버의 차이점에 대해 알아보자.
Web Server라는 것은 클라이언트로부터 HTTP 요청을 받아 처리하는 컴퓨터 프로그램을 의미한다. 예를 들어, 우리가 웹 페이지에 접속했을 때 웹 서버에 필요한 정적 파일과 데이터를 요청하게 된다. 웹 서버는 이를 적절한 HTML, CSS, 이미지와 같은 정적 파일 또는 데이터를 반환하고 브라우저는 이를 해석하여 페이지를 표현한다. 즉, 웹 서버는 페이지에 대한 자원을 가지고 있으며 클라이언트의 요청에 따라 적절한 자원을 찾아 반환해준다.
초기의 웹은 간단한 기능으로도 충분했지만 웹 기술이 진보함에 따라 서버 역할을 하면서 응용 프로그램 수준의 기능을 수행할 수 있는 WAS가 등장했다.
Web Server와 Web Application Server
Web Server는 주로 정적인 데이터를 받아 처리하고 WAS는 동적인 데이터를 받아 처리한다고 말하지만 사실 둘의 차이는 모호하다. WS에서도 동적 콘텐츠를 생성할 수 있는 스크립팅 언어(JSP, PHP etc..)를 지원하기 때문에 둘 다 동적 데이터 서빙이 가능하다. 다만 WAS는 WS의 부하를 분산하기 위해 고안된 좀 더 고도화된 서버라고 일컫는다. WS와 WAS 모두 각각 독립적으로 존재할 수 있으며 WAS에는 WS가 포함되어 있다.
WS : Apache, NginX, IIS...
WAS : Tomecat, Jeus, WebSphere...
WAS의 동작 방식
WAS는 WS + Web Container로 구성된다. 클라이언트의 요청은 WS를 통해서 받고, DB를 조회하는 등의 비즈니스 로직이 필요하다면 해당 작업을 컨테이너로 전달한다. 컨테이너는 요청을 받아서 해당 서블릿에 대한 스레드를 생성하고 요청/응답 객체를 생성한다. 요청에 맞는 서블릿을 호출하고 스레드가 호출된 후 결과인 동적 페이지를 객체로 담아 컨테이너로 전달한다. 이 응답 객체를 WS에 전달하고 생성했던 스레드, 요청/응답객체를 삭제한다.
WS와 WAS의 분리
트래픽이 많지 않은 서버에서는 문제가 없지만 트래픽이 늘어나고 사용자가 많아지면 서버에 과부화가 걸릴 일도 많아질 것이다. 그 경우에는 서버를 분산해야할 필요가 있다. 이때 웹 서버는 정적인 내용을 주로 다루기 때문에 부하가 걸릴 위험이 적다. 웹서버를 WAS에서 뺀 다음에 웹 컨테이너만 가지고 있는 WAS를 증설하면 대규모 트래픽에도 안정적으로 대응할 수 있게 된다. 이렇게 되면 클라이언트와 다수의 WAS 사이에 웹 서버가 중간다리 역할을 하게 된다. 이 때부터는 웹 서버가 어댑터의 역할을 많이 하게 된다. 어댑터의 역할을 하면서 크게 4가지의 역할을 추가로 수행하게 된다.
1. 캐싱: 임시로 저장해두고 빠르게 접근 가능하게 함
2. 로드 밸런싱: 서버를 분산
3. Health Check: 분산할 때 죽은 서버는 빼고 전달하는 것
4. 리버스 프록시: 웹 컨테이너의 주소나 존재를 클라이언트로부터 숨기는 것
참고
https://velog.io/@kth121211/WAS%EC%99%80-WS%EC%9D%98-%EC%B0%A8%EC%9D%B4
'CS 지식 > 네트워크' 카테고리의 다른 글
[네트워크] Socket 통신 (0) | 2024.09.01 |
---|---|
[네트워크] OSI 7계층 & TCP/IP 4계층 (0) | 2024.07.11 |
[네트워크] 클라우드 서비스 (IaaS, PaaS, SaaS) (0) | 2024.06.13 |
[네트워크] JWT 토큰 인증 (쿠키, 세션, 토큰 인증 방식) (0) | 2024.06.09 |
[네트워크] Latency & Bandwidth (0) | 2024.05.23 |