1. Web Server

- 하드웨어 관점에서는 web 서버가 설치되어 있는 컴퓨터를 의미하고, 소프트웨어 관점에서는 웹 브라우저 클라이언트로부터 HTTP request를 받아 HTML, CSS 등 정적인 컨텐츠를 제공하는 컴퓨터 프로그램을 의미한다.

- HTTP를 기반으로 웹 브라우저 클라이언트의 요청을 서비스하는 기능을 한다. 기능은 크게 두 가지로 구분된다.

① 정적인 컨텐츠 제공: WAS를 거치지 않고 바로 자원을 제공한다.

② 동적인 컨텐츠 제공을 위한 request 전달: 웹 브라우저 클라이언트의 request를 WAS에 보내고, WAS로 부터 전달 받은 response를 클라이언트에게 전달한다.

 

2. WAS(Web Application Server)

- DB 조회를 비롯한 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공한다. 때문에 클라이언트의 다양한 요구에 맞춘 서비스를 제공할 수 있다.

- JSP, Servlet 구동 환경을 제공해주기 때문에 Web container 혹은 Servlet container로 불리기도 한다.

- Web Server의 기능과 Web container의 기능을 모두 가지고 있다.

- 주요 기능

① 프로그램 실행 환경과 DB 조회 기능을 제공한다.

② 여러 개의 트랜잭션을 관리하는 기능을 제공한다.

③ 비즈니스 로직을 수행한다.

 

3. Web Server와 WAS를 구분하는 이유

이유 설명
기능 분리를 통한 서버 부하 방지 - WAS는 DB 조회를 비롯한 다양한 로직을 처리하느라 바쁘기 때문에, 단순 정적 컨텐츠는 Web Server에서 빠르게 클라이언트에 제공하는 것이 빠르다.
- 사실 최근의 WAS가 가지고 있는 Web Server는, 정적인 컨텐츠를 제공함에 있어 Web Server와 분리하는 것과 성능상 큰 차이가 없다.
물리적 분리를 통한 보안 강화 - Web Server에서 SSL에 대한 암복호화 처리를 하여 보안을 강화시킨다.
- 또한 WAS에는 실제 Web Application이 올라가 있기 때문에 외부와 직접 연결이 되어 있다면 중요한 설정 파일이나 리소스 등이 외부로 노출될 위험이 있다.
Web Server에 여러 대의 WAS 연결 가능 - 수 많은 요청을 한 군데가 아닌 여러 군데에서 처리할 수 있도록 동일한 Web Application을 여러 개 띄운다. 이때 앞에 Web Server를 두고 각각의 WAS들을 Web Server에 연결시킴으로써, Web Server로 들어오는 수 많은 요청들 각 WAS들에게 적절하게 분배할 수 있게 된다.
- 이러한 Load Balancing이 이뤄지면서, 하나의 WAS가 처리하는 요청의 양이 줄어들고, 만약 장애가 발생했을 경우에도 무중단 운영과 함께 장애를 극복할 수 있게 된다.
여러 웹 애플리케이션 서비스 가능 - 하나의 서버에서 PHP Application과 Java Application을 함께 사용할 수 있다.

 

4. Web System Architecture

- Clinent ↔ Web Server ↔ DB

- Clinent ↔ WAS ↔ DB

- Clinent ↔ Web Server ↔ WAS ↔ DB

Clinent ↔ Web Server ↔ WAS ↔ DB Architecture

 

참고

- https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

- https://velog.io/@change/WEB%EC%84%9C%EB%B2%84-WAS-%EB%B6%84%EB%A6%AC-%EC%9D%B4%EC%9C%A0

'Network' 카테고리의 다른 글

HTTP  (0) 2021.10.27
웹 브라우저에서 서버까지의 요청 흐름  (0) 2021.10.27
URI, URL, URN 차이점  (0) 2021.10.26
Servlet  (0) 2021.10.20
Static web page, Dynamic web page 차이점  (0) 2021.10.15