웹 서버(Web Server)와 웹 애플리케이션 서버(WAS)
1. 웹과 HTTP 통신
- 웹은 HTTP 프로토콜을 기반으로 동작.
- 웹 브라우저가 서버에 URL 요청을 하면, 서버는 HTML을 생성하여 응답.
- 모든 데이터는 HTTP 메시지를 통해 주고받음.
- HTTP를 통해 주고받는 데이터의 예시:
- HTML, 텍스트
- 이미지, 음성, 영상, 파일
- JSON, XML(API 통신)
- 서버 간 데이터 전송도 대부분 HTTP 사용
2. 웹 서버(Web Server)란?
- HTTP를 기반으로 동작하는 서버.
- 정적 리소스를 제공.
- HTML, CSS, JS, 이미지, 영상 등 정적 파일 제공.
- 기타 부가 기능 포함.
- 대표적인 웹 서버:
- 기본적인 요청-응답 흐름:
- 클라이언트가 HTTP 요청을 보냄.
- 웹 서버가 요청된 정적 파일(index.html 등)을 응답.
3. 웹 애플리케이션 서버(WAS - Web Application Server)란?
- HTTP를 기반으로 동작하는 서버.
- 웹 서버 기능 포함 + 프로그램 실행 기능 추가.
- 애플리케이션 로직 수행이 가능.
- 예: 사용자의 로그인 상태 확인, 데이터베이스 조회 후 HTML 생성.
- 동적인 HTML과 HTTP API(JSON, XML) 제공.
- 대표적인 WAS:
- 기본적인 요청-응답 흐름:
- 클라이언트가 HTTP 요청을 보냄.
- WAS가 애플리케이션 로직을 실행하여 동적 HTML 또는 API 응답을 생성.
4. 웹 서버와 웹 애플리케이션 서버(WAS)의 차이
항목 | 웹 서버(Web Server) | 웹 애플리케이션 서버(WAS) |
---|
역할 | 정적 리소스 제공 | 애플리케이션 로직 실행 |
제공 데이터 | HTML, CSS, JS, 이미지 | 동적 HTML, API(JSON, XML) |
기능 | HTTP 요청을 처리하고 정적 파일 제공 | 프로그램 코드 실행 가능 |
대표 예시 | Nginx, Apache | Tomcat, Jetty, Undertow |
- 웹 서버도 일부 프로그램 실행 기능을 포함할 수 있음.
- WAS도 정적 리소스 제공 기능을 포함할 수 있음.
- Java 환경에서는 서블릿 컨테이너를 포함하면 WAS로 분류.
5. 웹 시스템 기본 구성
(1) 단순한 시스템 구성: WAS + DB
- WAS가 모든 역할(정적 리소스 + 애플리케이션 로직) 담당.
- 단점:
- WAS의 부담이 큼.
- 정적 파일을 처리하는 데에도 높은 시스템 리소스를 사용.
- WAS 장애 발생 시 전체 서비스 중단.
(2) 효율적인 웹 시스템 구성: Web Server + WAS + DB
- 웹 서버는 정적 리소스를 처리.
- WAS는 애플리케이션 로직만 처리.
- 웹 서버가 처리할 수 없는 요청은 WAS로 전달.
- 장점:
- 서버 부하 분산 가능.
- 정적 리소스를 빠르게 제공하여 성능 향상.
- WAS 장애 발생 시에도 웹 서버가 오류 페이지 제공 가능.
6. 확장 가능한 웹 시스템 설계
- 정적 리소스 요청이 많으면 웹 서버(Nginx 등)를 증설.
- 애플리케이션 로직 요청이 많으면 WAS(Tomcat 등)를 증설.
- 장애 대응:
- 정적 리소스를 제공하는 웹 서버는 거의 죽지 않음.
- WAS는 복잡한 로직을 처리하므로 상대적으로 장애 발생 확률이 높음.
- WAS 장애 발생 시에도 웹 서버가 오류 화면을 제공 가능.
7. 추가적인 개선 방법
- CDN(Content Delivery Network) 활용:
- 정적 리소스를 캐싱하여 빠르게 제공.
- 서버 부하를 줄이고 응답 속도를 향상.
- API 서버만 제공하는 경우:
- 화면(UI)은 제공하지 않고, JSON, XML 데이터만 반환하는 경우 WAS만 사용해도 충분.
8. 정리
- 웹 서버(Web Server): 정적 리소스 제공 (NGINX, Apache).
- 웹 애플리케이션 서버(WAS): 애플리케이션 로직 수행 (Tomcat, Jetty).
- 웹 서버 + WAS 조합: 성능 최적화, 부하 분산, 장애 대응 가능.
- 웹 서버는 안정적, WAS는 상대적으로 장애 위험이 큼.
- 대규모 시스템에서는 웹 서버와 WAS를 분리하여 운영하는 것이 일반적.