Web Server
개념
- 하드웨어: Web 서버가 설치되어 있는 컴퓨터
- 소프트웨어: 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 프로그램
기능
- HTTP 프로토콜을 기반으로 하여 클라이언트의 요청을 서비스하는 기능을 담당
- 요청에 따라 아래 두가지 기능 중 적절하게 선택하여 수행
- 기능 1)
- 정적인 컨텐츠를 제공
- WAS를 거치지 않고 바로 자원을 제공
- 기능 2)
- 동적인 컨텐츠 제공을 위한 요청을 전달
- 클라이언트의 request를 WAS로 보내고, WAS가 처리한 결과를 클라이언트에게 전달(response)
- 클라이언트는 일반적으로 웹 브라우저를 의미
WAS(Web Application Server)
개념
- DB 조회나 다양한 비즈니스 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server(미들웨어)
- 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container)라고도 함.
- Container란 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말한다.
기능
- WAS = Web Server + Web Container
- Web Server 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 등장
- 프로그램 실행 환경과 DB 접속 기능, 트랜잭션 관리 기능 등을 제공하며, 비즈니스 로직을 수행
Web Server가 필요한 이유
- Web Server를 통해 정적인 파일들을 Application Server까지 가지 않고도 앞단에서 빠르게 처리해줄 수 있다.
- 따라서 Web Server에서는 정적 컨텐츠만을 처리하도록 기능을 분배하여 서버의 부하를 줄일 수 있다.
WAS가 필요한 이유
- Web Server만을 이용해야 한다면 사용자가 원하는 요청에 대한 결과값을 모두 만들어둔 상태에서 서비스를 해야하는데 이렇게 수행하기에는 자원이 절대적으로 부족하다.
- 따라서 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 만들어 제공함으로써 자원을 효율적으로 사용할 수 있다.
Web Sever와 WAS를 분리해서 사용하는 이유
- 기능을 분리하여 서버 부하를 방지합니다
- WAS는 DB 조회나 다양한 로직 처리에 집중하고 단순한 정적 컨텐츠는 Web Server를 통해 클라이언트에게 빠르게 제공할 수 있습니다.
- 물리적으로 분리하여 보안을 강화할 수 있습니다
- 여러 대의 WAS를 연결할 수 있습니다.
- Load Balancing을 위해서 Web Server를 사용합니다.
- fail over(장애 극복), fail back 처리에 유리
- 대용량 웹 애플리케이션의 경우 Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있습니다.
- 자원 이용의 효율성 장애 극복, 배포 및 유지보수의 편의성을 제공합니다.
[참고] Static Pages와 Dynamic Pages
-
Static Pages
- Web Server는 파일 경로 이름을 받아 경로와 일치하는 file contents를 반환한다.
- 항상 동일한 페이지를 반환합니다.
- 예) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들
-
Dynamic Pages
- 인자의 내용에 맞게 동적인 contents를 반환한다.
- 즉, 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물
(Servlet: WAS 위에서 돌아가는 Java Program)