Web Server(웹서버)란?
웹 사이트는 기본적으로 'client application, java server application'으로 나누어져 있다.
client application에서 java server application에 요청을 보내면, Web server는 요청에 맞는 데이터를 데이터베이스에서 찾고, 정적 페이지를 찾아서 리턴한다.
대표적인 웹서버 프로그램으로는 Apache와 NginX가 있다.
웹서버 프로그램을 활용해서 특정 폴더를 개방하고, 그 안에 있는 HTML, CSS, JS 등의 파일들로 웹사이트를 제공한다.
서버에 정해진 사이트 주소로 접속을 하면 이 파일들을 꺼내가서 보여주는 것이다.
- HTML, CSS, JS, image는 정적 파일들이다. 데이터가 변할 일이 없는 정적 웹인 것이다.
- Apache와 NginX의 모듈을 활용하면 동적 웹을 만드는 것도 가능하다. 대표적으로 Apache와 PHP, MySQL을 연동시켜서 동적인 PHP 동적 웹사이트를 만들 수도 있다.
WAS(Web Application Server)란?
client application에서 회원 리스트를 요청했다는 가정을 한다. 회원리스트는 정적인 페이지가 아니다. 실시간으로 업데이트 될 수 있기 때문에, 동적으로 처리해야한다.
client application에서 java server application에 요청을 보내면, 웹서버는 서블릿(조각나 있는 서버 어플리케이션) 중에 요청에 맞는 파일을 찾는다. 여기에는 동적인 요청에 부합하는 쿼리/코드가 포함되어 있는데, 이 코드를 실행시키는 것이 WAS의 역할이다.
보통 자바는 main 함수를 시작으로 프로그램이 동작하지만, servlet 프로그램에서는 service 함수를 시작으로 프로그램을 만든다.
TOMCAT이란?
Web Server와 WAS를 분리하는 이유
- forward proxy는 client가 자신의 IP를 서버에서 알지 못하도록 하는 것이고,
- reverse proxy는 서버의 정보를 client에서 알지 못하도록 하는 것이다.
※ 예전에는 WAS 프로그램이 상대적으로 정적파일을 다루는데 느렸다고 하지만, 현재는 큰 차이가 없다.