Computer Science/Web

[Web] Web Server와 WAS의 차이

dbssk 2023. 8. 10. 18:00

정적 페이지(Static Pages)와 동적 페이지(Dynamic Pages)

 

Web Server와 WAS(Web Application Server)

WebServer

역할

  • HTTP 요청 처리 : 웹 서버는 클라이언트로부터 받은 HTTP 요청을 처리하고, 이에 따른 정적 컨텐츠를 반환한다.
  • 동적인 컨텐츠를 제공하기 위해서는 WAS로 클라이언트 요청을 보내고 WAS에서 처리한 결과를 클라이언트에게 전달한다.

종류

  • Apache, Nginx, IIS

WAS (Web Application Server)

역할

  • 클라이언트 요청에 따라 데이터베이스 조회와 비즈니스 로직 처리를 통해 동적인 페이지를 생성하여 클라이언트에게 반환한다.

종류

  • Tomcat, JBoss, WildFly

 

WebServer와 WAS를 구분하는 이유

  • 자원 효율성
    • 웹 서버는 정적인 파일을 처리하므로 빠르게 응답할 수 있다.
    • WAS는 동적 컨텐츠를 처리하므로 데이터베이스 조회 및 비즈니스 로직 처리 등이 필요하므로 응답이 더 느릴 수 있다.
    • 따라서 분리를 통해 웹 서버의 부하를 줄이고 성능을 향상시킬 수 있다.
  • 장애 극복
    • WAS의 장애나 유지 보수 중단 시에도 웹 서버는 정적 컨텐츠를 계속 제공할 수 있다. 이로써 서비스의 중단을 최소화 할 수 있다.

 

효율적인 아키텍처

따라서 가장 효율적인 방법은 웹 서버와 WAS를 분리하되, 웹 서버 앞에 웹 서버에 연결할 수 있는 여러 개의 WAS를 두어 분하 분산을 구현하는 것이다. 

동작과정

  1. 클라이언트의 요청이 웹 서버에 도착
  2. 웹 서버는 정적 컨텐츠를 제공하는 요청을 바로 처리하여 응답
  3. 동적 컨텐츠가 필요한 경우 웹 서ㅓ버는 해당 요청을 WAS로 전달
  4. WAS는 해당 요청을 처리하기 위해 관련된 Servlet을 메모리에 로드
  5. 웹 서버는 클라이언트의 요청에 대한 정보를 HttpServletRequest 객체로 생성하고, 동시에 HttpServletResponse 객체를 준비
  6. WAS는 클라이언트의 요청에 따라 적절한 Servlet의 service() 메서드 호출
  7. service() 메서드는 doGet()또는 doPost() 메서드등을 호출하여 요청에 맞는 동적 컨텐츠를 생성하고, 그 결과를 Response 객체에 담음
  8. 생성된 동적 컨텐츠를 Response 객체에서 WAS는 HttpResponse 형태로 바꾸어 웹 서버에 반환
  9. 웹 서버는 받은 동적 컨텐츠를 클라이언트에게 응답
  10. 생성된 스레드는 종료되며, HttpServletRequest와 HttpServletResponse 객체는 메모리에서 제거