Web Server란?
HTTP 요청을 받고, 사용자가 필요한 자료를 HTTP 프로토콜을 통해 전달하는 컴퓨터. 정적 리소스(HTML, CSS, 이미지 등)를 클라이언트에게 제공하는 역할을 수행.
WAS(Web Application Server)란?
웹 서버의 기능과 함께 동적 컨텐츠 처리를 위한 웹 컨테이너를 포함한 서버. 사용자의 요청을 받아 비즈니스 로직을 실행하고, 그 결과를 웹 페이지에 반영하여 응답.
정적 페이지와 동적 페이지
정적 페이지
- 사용자가 HTTP 요청을 보냄.
- 웹 서버가 요청된 파일이 존재하는지 확인.
- 파일이 존재하면 그대로 응답.
- 항상 동일한 데이터를 반환.
동적 페이지
- 사용자가 HTTP 요청을 보냄.
- 웹 서버가 요청을 웹 컨테이너에 전달.
- 웹 컨테이너가 서블릿(또는 컨트롤러)을 찾아 비즈니스 로직 실행.
- 결과 데이터를 템플릿 엔진에 적용하여 최종 HTML 생성 후 응답.
- 요청에 따라 결과가 달라짐.
*웹 컨테이너
동적 컨텐츠를 생성하는 환경을 제공하는 모듈. 서블릿과 JSP 같은 웹 컴포넌트를 실행하여 동적 웹 페이지를 생성.
*서블릿
서버 측에서 동적 컨텐츠를 생성하는 자바 기반 컴포넌트. 클라이언트의 요청을 처리하고, 비즈니스 로직을 실행하여 응답을 생성.
SVC 패턴에서 컨트롤러에 해당.
*템플릿 엔진
미리 정의된 HTML 템플릿에 동적으로 생성된 데이터를 결합하여 최종 웹 페이지 생성. (Thymeleaf 등)
WAS 부하 분산 및 최적화
WAS는 정적 및 동적 컨텐츠를 모두 제공하므로 트래픽 증가 시 부하가 발생할 수 있음. 부하는 주로 요청을 처리하는 웹 컨테이너 쪽에서 일어남. 이를 해결하기 위해 WAS에서 웹 서버를 분리하고 여러 WAS 인스턴스를 배치하여 부하를 분산.
웹 서버의 역할
- 캐싱: 자주 요청되는 데이터를 저장해 웹 컨테이너의 처리 없이 빠르게 응답.
- 로드 밸런싱: 여러 WAS 인스턴스에 요청을 분배.
- Health Check: WAS 인스턴스의 상태를 주기적으로 점검하며 정상적인 인스턴스를 사용할 수 있도록 함.
- 리버스 프록시: 클라이언트가 웹 서버로만 접속하게 해 WAS의 실제 주소를 모르게 보호함.
결론
웹 서버는 정적 컨텐츠를 제공하고, WAS는 동적 컨텐츠를 생성하는 역할을 수행. WAS의 부하를 줄이기 위해 웹 서버를 활용하여 성능을 최적화함.
'Java > Spring' 카테고리의 다른 글
쿠키 - SameSite 및 Domain 설정에 따른 쿠키 전달 이슈 (0) | 2025.04.18 |
---|---|
어노테이션(Annotation) (2) | 2025.02.09 |
Spring Security (0) | 2025.02.06 |
OSIV (0) | 2025.02.06 |
Servlet, Dispatcher Servlet, Servlet Container (1) | 2025.02.02 |