WAS (Web Application Server)
Web Server
웹 서버는 클라이언트가 요청한 정적인 콘텐츠를 HTTP 프로토콜을 통하여 제공해주는 서버입니다.
정적 페이지를 보내준다.
웹 서버는 정적인 콘텐츠 제공이 가장 큰 역할이다.
또 다른 역할은 동적인 요청이 클라이언트로부터 들어왔을 때, 해당 요청을 웹 서버에서 처리할 수 없기 때문에
컨테이너로 보내주는 역할을 한다.
ex) 웹서버의 예 : Nginx, Appach HTTP server, IIS
기능1)
- 정적인 콘텐츠 제공
- WAS를 거치지 않고 바로 자원을 제공
기능2)
- 동적인 컨텐츠 제공을 위한 요청 전달
- 클라이언트(웹 브라우저)의 요청(Request)을 WAS에 보내고 WAS가 처리한 결과를 클라이언트에게 전달 (응답 Response)
Web Container
컨테이너는 동적인 데이터들을 처리하여 정적인 페이지로 생성해주는 소프트웨어 모듈
사용자가 로그인해서 특정 페이지에 들어간다고 가정하자.
이 메뉴에서는 각자 사용자에 따라 보여질 정보가 다르다.
사용자의 요청이 들어오면 웹 서버는 정적이 요소만 클라이언트 측에 보낼 수 있고,
동적으로 처리해야 하는 부분은 처리할 수 없다.
Apache는 CGI라는 개념을 지원한다.
CGI : Common Gateway Interface 공용 게이트웨이 인터페이스
인터페이스로서 웹 서버 상에서 프로그램을 동작시키기 위한 방법을 정의한 프로그램.
웹 서버와 외부 프로그램 사이에서 정보를 주고 받는 방법이나 규약.
근데 Java는 따로 CGI와 같은 기능을 위해 컨테이너라는 것이 필요하다.
그것이 Servlet.
웹 컨테이너의 작동
1. 클라이언트는 웹 서버로 request 를 보낸다.
2. 서블릿을 포함하는 WAS는 컨테이너로 요청을 보낸다.
3. 컨테이너가 요청을 각 서블릿에게 전달한다.
4. 서블릿 메서드가 로드된다.
5. 서블릿은 컨테이너에 관련 response를 넘긴다.
6. 컨테이너는 이를 서버에 전달한다.
서버는 응답을 클라이언트에게 전달한다.
WAS : 두 개를 합쳐놓은 것!
웹 서버로부터 오는 동적인 요청을 처리하는 서버이다.
즉, 웹 서버와 컨테이너를 붙여놓은 서버이다.
/home 이라는 경로 요청시 WAS는 자신의 라우팅 정보를 통하여 어떤 처리를 해야할 지 살핀다.
이 때 요청시 웹서버라면 동적인 파일을 보내주겠지만, WAS는 데이터베이스에서 데이터를 가져온다.
그 다음에 원하는 데이터를 가공하여 파일로 해당 데이터를 보내준다.
웹 서버와 WAS를 따로 사용하는 이유
1. 서로의 기능을 분리하여 서버 부하 방지
2. 물리적으로 분리하여 보안을 강화
3. 여러 대의 WAS를 연결 가능할 수 있다.
- Load Balancing
- fail over(작동 중지된 WAS를 대신해 다른 WAS를 사용하여 장애를 극복함)
- fail back(작동 중지된 WAS를 재동작시킴)
- 대용량 웹 애플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
- 다른 종류의 WAS로 서비스 가능
- 하나의 서버에서 PHP Application과 Java Application을 함께 사용할 수 있다.
'Computer Science' 카테고리의 다른 글
플러그인이란 (0) | 2024.01.15 |
---|