웹 서버(Web Server)
-HTTP 기반으로 동자
- 정적 리소스 제공
* 정적 리소스란 ? 특정 폴더 디렉토리에 이미지 영상 파일등을 두면 서빙해준다.
대표적으로 NGINX, APACHE가 있다.
웹 애플리케이션 서버 (WAS-Web Application Server)
- HTTP 기반으로 동작
- 웹 서버 기능 포함 + (정적 리소스 제공 가능)
- 프로그램 코드를 실행해서 애플리케이션 로직 수행
- 동적 HTML, HTTP API(JSON)
- 서블릿, JSP, 스프링 MVC
ex) 톰캣(Tomcat) Jetty, Undertow
웹서버는 정적이기 떄문에 특정 사용자마다 다른것을 보여줄수가 없지만
WAS는 프로그램 코드를 실행해서 작동하기 떄문에 사용자에 요청에 따라 동적으로 요청 수행이 가능하다
둘의 차이 ?
웹 서버는 정적 리소스, WAS 는 애플리케이션 로직을 수행
자바 서블릿 컨테이너 기능을 제공하면 WAS
WAS는 애플리 케이션 코드를 실행하는데 더 특화 되었다.
초기 웹 시스템 구성 - WAS, DB (최소한으로 하면 2개로 구성할 수 있다)
클라이언트 요청 -> WAS(애플리케이션 로직, HTML,CSS,JS,이미지 등 여러가지를 수행) -> DB
*이렇게 하면 WAS가 너무 많은 역할을 담당. 서버 과부하 우려
*게다가 WAS 장애시 오류 화면 조차도 처리불가능
웹 시스템 구성 - WEB, WAS, DB
- 정적 리소스는 웹 서버가 처리
- 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임 !
- WAS는 중요한 애플리케이션 로직 처리 전담
클라이언트 요청 -> WebServer(HTML,CSS,JS,이미지) -> WAS(애플리케이션 로직) -> DB
각자의 장점을 가지고 요청에 대한 처리를 수행하게 된다.
이렇게 구성을 하면 정적 리소스만 제공하는 WebServer는 잘 죽지 않는다. (WAS 서버 장애 시 WebServer에서 오류화면HTML을 띄워 오류 화면 처리 가능)
데이터만 주고받을 때는 WAS만 구축해도 된다.