짧지만 공부를 할거라 쓴다.
웹서버
HTTP 기반으로 동작
정적 리소스 제공, 기타 부가기능
정적파일(HTML, CSS, JS, 이미지, 영상)
예) NGINX, APACHE
웹 애플리케이션 서버(WAS)
HTTP 기반으로 동작
웹 서버 기능 포함
프로그램 코드를 실행해서 애플리케이션 로직 수행
-동적HTML, HTTP API(JSON)
-서블릿, JSP, 스프링MVC
예)톰캣, Jetty, Undertow -이름 잘지었네
사실 둘의 경계는 모호해서 웹 서버는 정적 리소스, WAS는 애플리케이션 로직이라고 생각하면 편하다.
실제 웹 시스템 구성을 최소한으로 하면 - WAS, DB 두개로 구성이 가능하다. 하지만 WAS가 너무 많은 역할을 담당하면 서버 과부하의 우려가 있다. 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다. WAS 장애시 오류 화면도 노출조차 불가능 하기 때문에 비효율 적이다.
WEB, WAS, DB - 효율적 리소스 관리. 정적 리소스가 많이 사용되면 web서버 증설하면 된다. 애플리케이션 리소스가 많이 사용되면 WAS를 증설하면 된다. 정적 리소스만 제공하는 웹 서버는 잘 죽지 않는다. 따라서 장애시 WEB서버에 오류 화면을 제공할 수 있다.
서블릿
해당 요청에 대해
초록색을 제외한 모든것을 실행해준다.
보면 알것같다.
서블릿의 특성
-톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 한다.
-서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리
-서블릿 객체는 싱글톤으로 관리
• 고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율
• 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용
• 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근
• 공유 변수 사용 주의
• 서블릿 컨테이너 종료시 함께 종료
-동시 요청을 위한 멀티 쓰레드 처리 지원