1. 결론
결론부터 말하면 Web Server는 정적인 페이지, Web Application Server는 동적인 페이지를 제공하는 서버이다.
이제 각 서버를 자세히 알아보도록 하자.
2. 웹서버(Web Server)
클라이언트로 부터 HTTP 요청을 받아 정적인 컨텐츠(html파일, 이미지 파일, css, javaScript)등을 제공하는 서버이다.
1) 기능
- 정적인 컨텐츠 제공
WAS를 거치지 않고 서비스를 제공한다. - 동적인 컨텐츠 제공을 위한 요청 전달
클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달한다.
2) CGI(Common Gateway Interface)?
웹서버에서 프로그램을 동작시키기 위한 방법을 정의한 프로그램(또는 스크립트)로 PHP, Perl, Python등의 언어는 CGI를 구현해 놔서 아파치에서 다양한 언어로 짜여진 프로그램을 실행할 수 있다.
하지만 자바는 CGI로 구현되어 있지 않는다(자바가 무겁고, Common 라이브러리와 JEE라는 플랫폼이 존재해서?). 하지만 톰캣이 Default Servlet을 통해 정적 파일을 제공해 주어 웹서버의 역할을 할 수 있다.
대표적인 웹서버는 위와같이 아파치, NGINX, IIS가 있다.
3. 웹 어플리케이션 서버(WAS)
DB 조회나 그외 다양한 비즈니스 로직을 처리하는 동적인 컨텐츠를 제공하는 기능을 하는 Application Server이다. HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다.
Servlet, JSP등을 실행하여 동적으로 컨텐츠를 제공하기 때문에 Servlet 컨테이너, 웹 컨테이너 라고도 부른다.
1) 기능
- 프로그램(JSP, Servlet...) 실행환경, DB접속기능 제공
- 여러개의 트랜잭션(논리적 작업 단위) 관리 기능
- 비즈니스 로직 수행
톰캣만 알면 될것 같다.. 제우스는 우리나라 SW회사인 티맥스소프트의 제품이기 때문에 알아두자.
4.Web Server VS WAS
1) WebServer가 필요한 이유
Web Server와 WAS의 기능은 알것 같다. 또한, WAS는 Web Server의 기능을 할 수 있다. 하지만 굳이 Web Server를 사용하는 이유를 알아보자.
- 기능분리로 서버 부하 방지
- WAS는 DB접근, 비즈니스로직을 수행하느라 바쁘다. 따라서 정적인 컨텐츠는 WebServer에서 빠르게 클라이언트에 반환할 수 있다. (정적/ 동적 일을 나누어 하면 더 빠르게 응답할 수 있다.)
- 예를들어 페이지를 열었을 때 이미지들의 주소가 있다. 이 주소로 웹서버에 요청을 보내 이미지만 따로 웹서버에서 빠르게 가져 올 수 있다.
- 물리적으로 분리하여 보안 강화
- SSL에 대한 암/복호화 처리에 WebServer를 사용한다.
- Web Server는 DMZ에 위치하게 하여 DB와 직접 연결되어있는 WAS를 보호한다.
- (포트를 달리하여 WAS에 접근하는 포트에 방화벽을 설정하여 보안 강화 가능)
- 여러대의 WAS를 연결
- Web Server는 Load Balancing 역할도 한다.
- fail over, fail back 처리에 유리하다.
- 특히 대용량 웹 어플리케이션의 경우 Web Server와 WAS를 분리하여 무중단 운영을 할 수 있다.
- 트래픽이 적을 때 WAS 중 일부를 업데이트 하고 업데이트가 완료되면 트래픽을 변경함 - 예를 들어 일부 WAS에 장애가 발생하면 해당 WAS를 이용하지 못하게 막은 후 장애를 해결 후 다시 접근할 수 있게 하므로써 사용자가 장애를 느끼지 못하게 한다.
- 여러 웹 어플리케이션 서비스
- PHP, Django, Spring을 함께 사용하는 경우 필요에 따라 웹 서버가 각 WAS에 요청 할 수 있음
- 권한/세션 관리
- 접근 허용 IP관리, 2대 이상의 WAS에서의 세션 관리 등도 Web Server에서 처리하면 효율적임
최종적으로 자료의 흐름을 보면 다음과 같다.
https://victorydntmd.tistory.com/121
https://victorydntmd.tistory.com/121
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
'ComputerScience > Web' 카테고리의 다른 글
[Web] 2. REST/REST API/RESTful (0) | 2021.06.04 |
---|
댓글