이론/백엔드 개념정리

Web Server와 Web Application Server의 차이점

블스뜸 2025. 5. 4. 20:34

Web Server

  • HTTP 기반으로 동작하며, 주로 정적 리소스 (HTML, CSS, JavaScript 파일, 이미지 등)를 제공하는 역할을 한다.
  • 구조: 클라이언트 (HTTP 요청) → 웹 서버 (정적 리소스 응답) → 클라이언트

WAS (Web Application Server)

  • HTTP 기반으로 동작하며, 웹 서버의 기능을 포함한다.
  • 추가적으로 코드를 실행하여 애플리케이션 로직을 수행하고, 데이터베이스와 상호작용하여 동적인 컨텐츠를 생성한다.
  • 구조: 클라이언트 (HTTP 요청) → WAS (로직 처리, DB 연동) → 클라이언트 (동적 컨텐츠 응답)
  • (중요) Java 환경에서는 Servlet Container 기능을 제공하면 WAS로 분류된다.

Web Server와 WAS의 차이점

  • 실질적으로 웹 서버도 기본적인 애플리케이션 로직을 처리하는 기능을 가질 수 있지만, WAS는 애플리케이션 코드 실행에 더욱 특화되어 있다.
  • Java에서 Servlet Container를 제공하는지 여부가 WAS를 구분하는 중요한 특징이다.

WAS만 사용하는 경우의 문제점

  1. 클라이언트
  2. WAS (정적 리소스, 애플리케이션 로직, DB 연동)
  3. DB
  • WAS가 정적 리소스 처리, 애플리케이션 로직 수행, DB 연동 등 너무 많은 역할을 담당하게 되어 서버 과부하가 발생할 가능성이 높아진다.
  • 실행에 가장 중요한 애플리케이션 로직이 정적 리소스 처리로 인해 제대로 수행되지 않을 수 있다.
  • WAS에 장애가 발생하면 정적 리소스조차 제공할 수 없어 아무런 화면도 보여줄 수 없으며, 오류 페이지 응답도 불가능하다.

실제 웹 시스템 구성

  1. 클라이언트
  2. Web Server (정적 자원, HTML, CSS, 이미지)
  3. WAS (애플리케이션 로직)
  4. DB
  • 정적 리소스는 Web Server에서 처리하도록 분리한다.
  • Web Server는 애플리케이션 로직 처리가 필요한 요청만 WAS에 전달한다.

실제 웹 시스템 구성의 장점

  • 효율적인 리소스 관리:
    • 정적 자원 사용량이 많으면 Web Server를 Scale Out (수평 확장)하여 처리 능력을 향상시킨다.
    • 애플리케이션 관련 자원 사용량이 많으면 WAS를 Scale Out 한다.
  • 오류 화면 제공 가능:
    • Web Server는 오류 발생 가능성이 매우 낮다.
    • WAS에 오류가 발생하거나 장애가 발생하더라도 Web Server는 기본적인 오류 페이지를 클라이언트에게 응답할 수 있다.
    • WAS는 DB와 상호작용하므로 DB 문제 발생 시 장애 가능성이 높다.