본문 바로가기
카테고리 없음

TIL-22

by 오우지 2021. 10. 17.

짧지만 공부를 할거라 쓴다.

 

웹서버

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를 서블릿 컨테이너라고 한다.

-서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리

-서블릿 객체는 싱글톤으로 관리

    • 고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율

    • 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용

    • 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근

    • 공유 변수 사용 주의

    • 서블릿 컨테이너 종료시 함께 종료

-동시 요청을 위한 멀티 쓰레드 처리 지원