본문 바로가기

Language/JAVA

[Spring] Web Server vs WAS (Web Application Server)

Web Server

 

개념

  • HTTP 프로토콜을 이용해 정적인 웹 페이지를 보여주는 역할을 하는 서버
    • 클라이언트(웹브라우저)로부터 HTTP 요청을 받아들이고
    • HTML, CSS, JAVASCRIPT, 이미지, 문서와 같은 웹페이지(웹 리소스)를 반환하는 컴퓨터 프로그램
    • 이때 웹 서버는 클라이언트(웹 브라우저)가 해당 리소스를 받아서 화면에 랜더링(표시)함
  • HTTP 프로토콜 기반으로, 클라이언트의 요청을 서비스하는 기능

 

역할

  • 정적 컨텐츠 제공 : WAS를 거치지 않고 바로 자원 제공
  • 동적 컨텐츠 제공을 위한 요청 전달
    : 동적 컨텐츠 요청을 WAS로 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달

 

기능

  • Reverse Proxy
    • 서버와 클라이언트 사이에 프록시를 두고 프록시를 통해 데이터를 주고 받는다.
    • 보안의 이유로 서버 내부 구조를 감추기 위해 사용
    • Forward Proxy : 서버에 방문하는 클라이언트의 주소를 감춘다.
    • Reverse Proxy : 클라이언트에게 서버의 주소를 감춘다.
  • 로드 밸런싱
    • 클라이언트의 요청에 따른 처리를 동작 중인 여러 WAS에게 적절히 분배
  • 캐싱
    • Reverse Proxy 의 캐시를 의미
    • 서버로 찾아오는 클라이언트들이 자주, 반복적으로 요청하는 리소스들을 프록시 서버에 저장하고 제공
    • (서버를 숨김)
  • 주기적인 체크
    • 웹 서버에 존재하는 수 많은 모듈을 사용해 WAS 서비스가 정상적으로 동작하고 있는지 체크
Reverse Proxy, 로드 밸런싱, 캐싱의 역할을 Web Server가 담당하기에 Web Server와 WAS를 함께 이용한다.

 

필요성

  • 단순 정적 컨텐츠 처리를 맡으며 서버 부하 방지 및 효율적 분산처리 수행

 

예시

  • Apache, NginX, IIS(Window 전용 웹서버)

 

 

WAS (Web Application Server)

 

개념

  • DB 조회 및 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application Server
  • HTTP를 통해 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어
  • '웹 컨테이너', '서블릿 컨테이너' 라고도 불림
    • 웹 컨테이너
      • JSP, Servlet을 실행할 수 있는 소프트웨어
      • 웹 서버에서 JSP를 요청하면
      • 톰캣에서는 JSP 파일을 서블릿으로 변환하여 컴파일을 수행하고,
      • 서블릿 수행 결과를 웹 서버에게 전달한다.
    • WAS는 JSP, Servlet 구동 환경을 제공
JSP (Java Server Page)

- HTML에 JAVA 코드를 넣어 동적 웹페이지를 생성하는 웹 어플리케이션 도구
- JSP가 실행되면 서블릿으로 변환되며 웹 어플리케이션 서버에서 동작되며 필요한 기능 수행
- 위를 통해 생성된 데이터를 웹 페이지와 함께 클라이언트로 응답

 

역할

  • Web Server 기능들을 구조적으로 분리해 처리하는 목적으로 제시
  • 현재 WAS가 가지는 Web Server도 정적 컨텐츠를 처리하는데 성능상 큰 차이가 없다.

 

기능

  • 프로그램 실행 환경과 데이터베이스 접속 기능 제공
  • 여러 개의 트랜잭션 관리
  • 업무를 처리하는 비즈니스 로직 수행
  • Web Service 플랫폼으로서의 역할 

 

필요성

  • 자원의 효율적 사용 : 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞춰 그때그때 결과 제공

 

예시

  • Tomcat, Jetty, Undertow, Boss, Jeus, Web Sphere

 

 

왜 Web Server와 WAS를 분리할까?
  1.  

1. 기능 분리로 서버 부하 방지

  • 정적인 리소스(HTML, CSS, JS, 이미지 등)는 웹서버에서 빠르게 제공
  • 복잡한 로직이 필요한 동적 요청만 WAS에서 처리하도록 분산
  • 따라서 WAS의 리소스를 절약하여 성능을 높이고 처리 속도를 향상시킬 수 있음

 

2. 물리적 분리로 보안 강화

  • 웹서버를 방화벽 앞단에 배치하여 보안 강화 가능
    • 예: WAS의 내부 IP를 숨기고, 특정 요청만 허용
  • 웹서버가 SSL 인증서를 관리하고 HTTPS 트래픽을 처리할 수 있음

 

3. 확장성(Scalability) 향상

  • 독립적인 확장 가능
    • 요청이 많아지면 웹서버만 여러 대 추가하거나, WAS만 증설 가능
  • 부하 분산(로드 밸런싱) 가능
    • 여러 개의 WAS를 연결하여 부하 분산 가능 → 안정적인 서비스 제공
  • Failover 및 Failback 처리에 유리
    • 한 대의 WAS에 장애가 발생해도 다른 WAS가 요청을 처리할 수 있어 서비스 중단 방지
  • 여러 웹 애플리케이션 서비스 가능
    • 하나의 웹서버에서 여러 개의 WAS에 연결하여 다양한 애플리케이션 서비스 제공 가능