Java/Spring

Web Server와 WAS

파란배개 2025. 2. 16. 20:33

Web Server란?

HTTP 요청을 받고, 사용자가 필요한 자료를 HTTP 프로토콜을 통해 전달하는 컴퓨터. 정적 리소스(HTML, CSS, 이미지 등)를 클라이언트에게 제공하는 역할을 수행.

WAS(Web Application Server)란?

웹 서버의 기능과 함께 동적 컨텐츠 처리를 위한 웹 컨테이너를 포함한 서버. 사용자의 요청을 받아 비즈니스 로직을 실행하고, 그 결과를 웹 페이지에 반영하여 응답.

정적 페이지와 동적 페이지

정적 페이지

  1. 사용자가 HTTP 요청을 보냄.
  2. 웹 서버가 요청된 파일이 존재하는지 확인.
  3. 파일이 존재하면 그대로 응답.
    • 항상 동일한 데이터를 반환.

 

동적 페이지

동적 페이지

  1. 사용자가 HTTP 요청을 보냄.
  2. 웹 서버가 요청을 웹 컨테이너에 전달.
  3. 웹 컨테이너가 서블릿(또는 컨트롤러)을 찾아 비즈니스 로직 실행.
  4. 결과 데이터를 템플릿 엔진에 적용하여 최종 HTML 생성 후 응답.
    • 요청에 따라 결과가 달라짐.

*웹 컨테이너

동적 컨텐츠를 생성하는 환경을 제공하는 모듈. 서블릿과 JSP 같은 웹 컴포넌트를 실행하여 동적 웹 페이지를 생성.

*서블릿

서버 측에서 동적 컨텐츠를 생성하는 자바 기반 컴포넌트. 클라이언트의 요청을 처리하고, 비즈니스 로직을 실행하여 응답을 생성.

SVC 패턴에서 컨트롤러에 해당.

*템플릿 엔진

미리 정의된 HTML 템플릿에 동적으로 생성된 데이터를 결합하여 최종 웹 페이지 생성. (Thymeleaf 등)

 

WAS 부하 분산 및 최적화

WAS는 정적 및 동적 컨텐츠를 모두 제공하므로 트래픽 증가 시 부하가 발생할 수 있음. 부하는 주로 요청을 처리하는 웹 컨테이너 쪽에서 일어남. 이를 해결하기 위해 WAS에서 웹 서버를 분리하고 여러 WAS 인스턴스를 배치하여 부하를 분산.

웹 서버의 역할

  1. 캐싱: 자주 요청되는 데이터를 저장해 웹 컨테이너의 처리 없이 빠르게 응답.
  2. 로드 밸런싱: 여러 WAS 인스턴스에 요청을 분배.
  3. Health Check: WAS 인스턴스의 상태를 주기적으로 점검하며 정상적인 인스턴스를 사용할 수 있도록 함.
  4. 리버스 프록시: 클라이언트가 웹 서버로만 접속하게 해 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