웹서버와 웹 어플리케이션 서버의 차이
📌 1. WS vs WAS
웹 서버와 WAS의 차이는 어떤 타입의 컨텐츠를 제공하느냐에 있다
- 웹서버(Web Server)는 정적인 컨텐츠 (html,css, js)를 제공하는 서버이다. ex) Apache, Nginx
- 웹 어플리케이션 서버(WAS)는 DB조회나, 어떠한 로직을 처리해아 하는 동적인 컨텐츠를 제공하는 서버이다. ex) Tomcat, Jeus
- 웹 서버와 WAS는 각각 독립적으로 존재할 수 있음
- 대부분의 WAS는 정적인 컨텐츠도 제공해주고 있기 때문에, 웹 서버 없이 WAS로만 존재할 수 있음 (웹 서버 < WAS 포함 개념)
📌 2. 그럼에도 불구하고 WS를 WAS 앞단에서 사용하는 이유
a. WAS가 해야 할일의 부담을 줄이기 위해서
- WAS 앞에 웹서버를 둬서 웹 서버에서는 정적인 문서만 처리
- WAS는 로직만 수행하도록 기능을 분배해 서버의 부담을 줄임
b. WAS의 환경설정 파일을 외부에 노출시키지 않도록 하기 위해서
- 클라이언트와 연결하는 포트가 직접 WAS에 연결되어 있다면 중요한 설정 파일이 노출 될 수 있음
- WS와 WAS에 접근하는 포트가 다르기 때문에, WAS에 들어오는 포트에는 방화벽을 쳐서 보안을 강화할 수 있음
📌 3. 아파치와 톰캣 예시
CGI란 Common Gateway Interface로서 웹 서버 상에서 프로그램을 동작시키기 위한 방법을 정의한 프로그램 또는 스크립트
CGI로 인해 다양한 언어로 짜여진 각 프로그램을 아파치에서 실행할 수 있음
예를들어 아파치에 PHP 모듈을 설치 했을 경우
- 요청이오면 아파치는 HTTP 헤더를 분석하고 파싱하여 PHP로 파라미터를 넘김
- PHP에서는 파라미터를 받아 응답할 HTML 문서를 만들어서 아파치에 전달
- HTML 문서를 전달 받은 아파치는 CSS, JS, img 등 정적인 자원들과 함께 브라우저로 반환
JAVA는 CGI로 구현되어 있지 않음
- 자바 자체가 무겁고, common 라이브러리와 JEE라는 플랫폼이 존재하기 때문에 아파치에서 굳이 CGI를 제공하지 않음
- 톰캣은 Default Servlet을 통해 정적인 파일을 제공해 줄 수 있어서 was이면서 ws의 역할을 수행할 수 있음
- 그럼에도 was를 두는 이유는 위에 언급한 이유들 때문
내용참고 및 그림 출처
웹 서버와 WAS( Web Application Server ) 차이
'CS 공부 - 네트워크' 카테고리의 다른 글
3way 핸드쉐이크/4way 핸드쉐이크 (0) | 2023.03.01 |
---|---|
[Network]블로킹, 논블로킹, 동기, 비동기 (0) | 2023.02.02 |