WAS 부터 디스패치 서블릿 내부동작 흐름 파악
- WAS : Web Application Server
- WAS는 WEB 과 서블릿 컨테이너(=웹 컨테이너) 두 가지로 이루어져 있음
- WEB에서는 항상 같은 인풋과 아웃풋 즉, 정적인 파일 요청을 처리함
- 동적인 요청 (REST API , JSP 등) 은 WEB을 통과 후 서블릿 컨테이너로 위임
서블릿 컨테이너(웹 컨테이너) 는 WAS의 핵심!
- WAS의 대표 구현체로는 Apache Tomcat을 자주 사용함
- 백엔드 개발자는 WAS의 서블릿 컨테이너(웹 컨테이너)를 개발하는 것임
- 서블릿 컨테이너 역할
-> 프로토콜 요청/응답 처리
-> 쓰레드 풀 관리
-> 스프링 지원 런타임 컴포넌트
현실 웹서비스 시스템 구조
- 외부 WEB 서버를 두어서 정적 파일 처리 일임(엔진 엑스 ,아파치 등)
서블릿 컨테이너 흐름
- Servler : 클라이언트 요청을 처리 & 서버에서 동적인 웹 페이지를 생성하는 데 사용되는 주체
- 서블릿 컨테이너 안에는 클라이언트 요청을 처리하기 위한 Servlet들과 프레임워크 Container 존재
- Protocol 관련 Servlet : HTTP servelet , WebSocket Servelet
- Server 프레임워크 관련 Servlet : Dispatcher Servlet(스프링 프레임워크)
예시 )
클라이언트 요청 -> 서블릿 컨테이너 -> HTTP servlet -> Dispatcher Servlet -> Spring Container에서 요청에 맞게 처리
- spring boot 개발시 전체 흐름을 건들지 않는 것을 권장 / Main 동작 흐름을 정하는 게 아니라 서블릿 컨테이너 흐름에 올라타서 개발을 진행하는 것!