이론/백엔드 개념정리
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만 사용하는 경우의 문제점
- 클라이언트
- WAS (정적 리소스, 애플리케이션 로직, DB 연동)
- DB
- WAS가 정적 리소스 처리, 애플리케이션 로직 수행, DB 연동 등 너무 많은 역할을 담당하게 되어 서버 과부하가 발생할 가능성이 높아진다.
- 실행에 가장 중요한 애플리케이션 로직이 정적 리소스 처리로 인해 제대로 수행되지 않을 수 있다.
- WAS에 장애가 발생하면 정적 리소스조차 제공할 수 없어 아무런 화면도 보여줄 수 없으며, 오류 페이지 응답도 불가능하다.
실제 웹 시스템 구성
- 클라이언트
- Web Server (정적 자원, HTML, CSS, 이미지)
- WAS (애플리케이션 로직)
- DB
- 정적 리소스는 Web Server에서 처리하도록 분리한다.
- Web Server는 애플리케이션 로직 처리가 필요한 요청만 WAS에 전달한다.
실제 웹 시스템 구성의 장점
- 효율적인 리소스 관리:
- 정적 자원 사용량이 많으면 Web Server를 Scale Out (수평 확장)하여 처리 능력을 향상시킨다.
- 애플리케이션 관련 자원 사용량이 많으면 WAS를 Scale Out 한다.
- 오류 화면 제공 가능:
- Web Server는 오류 발생 가능성이 매우 낮다.
- WAS에 오류가 발생하거나 장애가 발생하더라도 Web Server는 기본적인 오류 페이지를 클라이언트에게 응답할 수 있다.
- WAS는 DB와 상호작용하므로 DB 문제 발생 시 장애 가능성이 높다.