Web Server vs WAS

Web Server와 WAS의 각 역할과 차이점을 알아보자.

1. Web Server란 무엇인가?

Web Server는 클라이언트(주로 웹 브라우저)의 요청을 받아, 그에 맞는 응답을 제공하는 소프트웨어 또는 하드웨어를 말합니다. Web Server는 주로 정적 콘텐츠를 제공하며, 요청에 따라 다음 두 가지 역할을 수행합니다.

  1. Static Pages(정적 페이지)

    • 정적 페이지는 서버에 저장된 그대로 전달되는 페이지입니다. 웹 서버가 요청을 받으면, 저장된 파일을 그대로 반환하며 항상 동일한 파일을 제공합니다.
    • ex) index.html과 같은 HTML 파일, 이미지, CSS 파일 등이 해당됩니다.
  2. Dynamic Pages(동적 페이지)

    • 동적 페이지는 서버 측에서 프로그램을 실행한 결과로 만들어지는 페이지입니다. 서버는 사용자의 요청이나 입력 데이터에 따라 그에 맞는 맞춤형 페이지를 생성하고 반환합니다.
    • ex) 제품 페이지에서 사용자가 특정 제품 ID를 요청하면 해당 제품에 맞는 가격과 재고 정보를 반환하는 것처럼, 요청에 따라 콘텐츠가 달라집니다.

2. WAS란 무엇인가?

WAS(Web Application Server)는 동적 콘텐츠를 처리하는 서버로, 주로 데이터베이스 조회나 비즈니스 로직을 처리하는 역할을 합니다. Web Server와 달리 WAS는 프로그램을 실행하여 요청에 맞는 동적인 응답을 생성합니다.

주요 기능

  1. 애플리케이션 실행: JSP, Servlet 등의 웹 애플리케이션을 구동할 수 있는 환경을 제공합니다.
  2. 비즈니스 로직 처리: DB와 연동하여 동적 요청을 처리하고, 클라이언트가 요청한 데이터를 가공하여 응답합니다.
  3. 트랜잭션 관리: 여러 개의 논리적인 작업 단위인 트랜잭션을 처리하여 업무를 효율적으로 관리합니다.

(Java) Servlet: 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 “서블릿”이라 불림. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종임


3. Web Server와 WAS 차이

구분Web ServerWAS
주요 역할정적 콘텐츠(HTML, CSS, 이미지) 제공동적 콘텐츠 처리 및 비즈니스 로직 수행
컨텐츠 처리HTML, CSS, JS, 이미지 등 정적 파일DB 조회, 로직 처리 후 동적 콘텐츠 생성
예시Apache, NginxTomcat, JBoss, WebSphere

4. Web Server와 WAS를 분리해야 하는 이유

  1. 서버 부하 감소

    • Web Server가 정적 파일을 처리하고, WAS는 동적 처리만 전담함으로써 서버 부하를 줄일 수 있습니다.
    • 예를 들어, 정적 이미지나 HTML 파일은 Web Server가 빠르게 제공하고, WAS는 데이터베이스와의 연동 작업만 처리하여 성능을 최적화할 수 있습니다.
  2. 보안 강화

    • Web Server는 외부에 노출되지만, WAS는 보안상 중요하기 때문에 외부에 노출되지 않아야 합니다. Web Server는 SSL 암복호화 처리 등 보안 작업을 담당하여 WAS를 보호합니다.
  3. 확장성 및 로드 밸런싱

    • 여러 대의 WAS를 Web Server와 연결하여 부하를 분산시킬 수 있습니다. Web Server는 클라이언트의 요청을 각 WAS로 적절히 분배하여 성능을 유지할 수 있습니다.
    • 예를 들어, 대규모 서비스의 경우 WAS가 병목 현상을 일으킬 수 있는데, 이를 Web Server가 분산 처리할 수 있습니다.
  4. 유지보수의 용이성

    • Web Server와 WAS를 분리함으로써 개별 서버의 유지보수나 업데이트를 쉽게 처리할 수 있습니다. 예를 들어, WAS에서 장애가 발생하더라도 Web Server가 이를 감지하여 다른 WAS로 요청을 전달해 무중단 서비스가 가능합니다.

5. Web Server와 WAS의 통합 구조

일반적으로 웹 서비스 아키텍처는 아래와 같은 구조로 동작합니다.

  • 클라이언트 → Web Server → WAS → Database: 클라이언트가 웹 서버에 요청을 보내면, Web Server는 그 요청을 WAS로 전달하여 동적인 처리를 맡깁니다. WAS는 데이터베이스와 통신하여 결과를 생성하고, Web Server를 통해 클라이언트에게 응답을 반환합니다.

참고