WEB
SERVER
Web Sever
웹서버에게 주소(url)을 가지고 통신규칙(http)에 맞게 요청하면
알맞은 내용(html)을 응답 받음
클라이언트의 요청을 기다리고 웹 요청(http)에 대한 데이터를 만들어서 응답
이때 데이터는 웹에서 처리할 수 있는 html, css 이미지 등 정적인 데이터로 한정
html은 프로그래밍 언어가 아니다..!
하지만 JAVA는 프로그래밍 언어이다
WAS(Web Applicatoin Server)
php, jsp, asp와 같은 언어들을 사용해 동적인 페이지를 생성할 수 있는 서버
프로그램 실행 환경과 데이터베이스 접속 기능 제공
비즈니스 로직 수행가능
웹 서버 + 웹 컨테이너(컨테이너란? jsp, servlet을 실행 시킬 수 있는 소프트웨어)
java 계열에선 웹 어플리케이션 컨테이너라고 부르기도 함
상황에 따라 변하는 정보를 제공할 수 있는가 라고도 할 수 있다.
web서버는 정적인 컨텐츠를 처리 was는 동적인 컨텐츠를 처리
WAS는 Web server + web container로 구성되어 있다. WAS 자체 Web server로 충분하지만 대용량 트래픽을 처리하는 경우 아래 그림과 같이 여러대의 WAS 앞단에 여러 대의 웹 서버를 두어서 하나의 WAS가 중단되어도 앞단의 웹 서버에서 해당 WAS를 사용하지 않고 다른 WAS를 사용하며, 중단된 WAS가 복구되기를 기다리면 되기에 많이 사용한다. 이러한 기능을 장애 극복(failover)라고 함
쉽게말하자면 서로가 제일 잘하는 것을 한다고 생각할 수 있다.
정적인 파일들을 처리하는 과정은 굳이 WAS가 할 필요가 없다
Application Server까지 올 필요없이 앞단에서 처리 해줄 수 있다.
기능을 분리하여 서버의 부하방지 (제공속도 Web Server > WAS)
WAS는 DB조회 등 페이지를 만들기 위한 다양한 로직을 처리하느라 바쁘다. 단순한 정적 콘텐츠를 WAS에서 제공한다면 다른 작업에 사용하는 리소스들로 인해 지연이 생겨날 수 있다. 그러므로 정적 콘텐츠는 Web Server선에서 빠르게 처리하는게 좋다.
보안강화
WAS 서버는 asp, php, jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리하는 것이다. 처리하는 기능은 나누어져있지만 요새 WAS 서버에는 WEB서버 기능을 내장하고 있다. 현재는 WAS가 가지고 있는 웹 서버도 정적인 콘텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다. 큰 규모라면 웹 서버와 WAS를 분리합니다. 그 이유는 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해서이다. JSP를 배울 때 대체적으로 Apache와 Tomcat을 사용한다.
Apache는 웹서버를 담당하고
Tomcat은 WAS 다.