본문 바로가기
CS 지식/네트워크

[네트워크] Web Server 와 Web Application Server

by ghan2 2024. 5. 30.

헷갈리는 개념인 웹서버와 웹 어플리케이션 서버의 차이점에 대해 알아보자.

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에 전달하고 생성했던 스레드, 요청/응답객체를 삭제한다.

https://velog.io/@kth121211/WAS%EC%99%80-WS%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://velog.io/@kth121211/WAS%EC%99%80-WS%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

 

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

https://www.youtube.com/watch?v=31tKPguQ1sk

https://lovegogi90.tistory.com/4