TIL

웹 애플리케이션의 이해

웹 서버, 웹 애플리케이션 서버

웹 서버(Web Server)

정적 컨텐츠

웹 애플리케이션 서버(WAS - Web Application Server)

동적 컨텐츠

웹 서버, 웹 애플리케이션 서버(WAS) 차이

웹 시스템을 WAS와 DB만으로 구성할 수도 있음

하지만 WAS만 쓰게 되면…

웹 시스템 구성 - WEB, WAS, DB

(웹 서버는 잘 죽지 않지만 WAS는 잘 죽음)

웹 브라우저에서 전송한 HTTP 메시지를 서버에서 받은 다음 처리를 해서 응답까지 해줘야 하는데, 별도의 프레임워크를 사용하지 않고, 직접 WAS를 구현해야 한다면 너무 복잡하다

서블릿

서블릿을 지원하는 WAS에서 여러 번거로운 과정을 모두 자동화해서 제공해준다. 그래서 우리는 공통적이고 번거로운 여러 작업을 무시하고 의미 있는 비즈니스 로직 실행에만 집중할 수 있다.

특징

서블릿 HTTP 요청, 응답 흐름

서블릿 컨테이너

동시 요청 - 멀티 쓰레드

쓰레드

요청마다 쓰레드 생성 장단점

쓰레드 풀 - 요청 마다 쓰레드 생성의 단점 보완

쓰레드 풀 실무 팁

쓰레드 풀의 적정 숫자

이는 애플리케이션 로직의 복잡도, CPU, 메모리, IO리소스 상황에 따라 모두 다르다. 그래서 한번에 최적화된 쓰레드 풀의 적정숫자를 찾기는 힘들고 성능테스트가 필요하다.

WAS의 멀티 쓰레드 지원

HTML, HTTP API, CSR, SSR

정적 리소스

HTML

HTTP API

서버사이드 렌더링, 클라이언트 사이드 렌더링