🌐 Web Server vs WAS (Web Application Server)
웹 서버(Web Server)와 WAS(Web Application Server)는 클라이언트 요청을 처리하는 서버이지만, 역할과 기능에서 차이가 있습니다.
면접에서 자주 등장하는 기본 개념으로, 두 서버의 차이를 명확히 이해하고 설명할 수 있어야 합니다.
✅ 웹 서버란?
- 정적인 컨텐츠(HTML, CSS, JavaScript, 이미지 등)를 제공하는 서버
- 클라이언트의 요청을 받아 빠르게 정적 리소스를 반환
- 예: Apache HTTP Server, Nginx
✅ WAS(Web Application Server)란?
- 동적인 웹 애플리케이션 실행을 담당하는 서버
- 데이터베이스 연동, 비즈니스 로직 처리, 세션 관리 등을 수행
- 클라이언트 요청에 따라 내부 애플리케이션 로직을 실행하고 적절한 응답을 생성 후 반환
- 예: Tomcat, JBoss, WebLogic, JEUS
🔍 웹 서버와 WAS의 차이
| 구분 | 웹 서버 | WAS |
|---|
| 주요 기능 | 정적 리소스 처리 | 동적 애플리케이션 처리 |
| DB 연동 | 불가능 | 가능 |
| 로직 처리 | 없음 | 있음 (비즈니스 로직) |
| 예시 | Nginx, Apache | Tomcat, WebLogic |
⚖️ 웹 서버 + WAS 조합
실제 서비스 운영에서는 웹 서버와 WAS를 함께 사용합니다.
- 웹 서버: 정적 리소스 처리 → 속도 향상, 부하 감소
- WAS: 동적 요청 처리 (DB 연결, 로직 실행)
- 웹 서버 앞단에 배치하여 보안 및 확장성 강화 가능
- 예:
클라이언트 → 웹 서버(Nginx) → WAS(Tomcat) → DB
🧠 추가 CS 지식
🔹 웹 서버와 리버스 프록시(Reverse Proxy)
- 웹 서버(Nginx, Apache)는 리버스 프록시로 동작 가능
- 클라이언트 요청을 WAS로 전달하면서 로드밸런싱, SSL 종료, 캐싱 가능
🔹 WAS와 서블릿 컨테이너
- WAS는 Servlet Container를 내장하고 있어 자바 기반 웹 애플리케이션 실행 가능
- 서블릿 요청/응답을 관리하고 스레드 풀을 활용해 동시성 처리
🔹 웹 서버와 WAS의 병목
- 웹 서버 없이 WAS만 사용하면, 정적 리소스까지 WAS가 처리해야 하므로 성능 저하 발생
- 따라서 분리해서 사용하는 것이 권장됨
🔹 MSA와 WAS의 변화
- 과거: 대규모 단일 WAS (모놀리식 아키텍처)
- 현재: MSA 환경에서 각 서비스가 독립적으로 WAS 역할 수행 (Spring Boot 내장 Tomcat 등)
- Kubernetes 환경에서는 Pod 내부 애플리케이션이 곧 WAS가 됨
🔹 성능 및 보안 강화
- 정적 파일은 CDN + 웹 서버에서 처리 → WAS 부하 최소화
- WAF(Web Application Firewall)과 연계하여 보안 강화 가능
🔹 웹 서버와 캐싱
- 웹 서버는 정적 콘텐츠를 캐싱해 성능을 향상
- 리버스 프록시 캐싱을 통해 WAS 요청 감소 가능
🔹 병목 분석과 모니터링
- 병목 발생 지점: 웹 서버, WAS, DB
- 모니터링 툴 예시: Nginx 로그, WAS Access Log, APM (Application Performance Monitoring)
- 실제 서비스 최적화에서는 성능 로그 분석 필수
🎯 면접 대비 질문 예시
💬 웹 서버와 WAS의 차이는 무엇인가요?
💬 왜 웹 서버와 WAS를 분리해서 사용하는 것이 좋은가요?
💬 Nginx 같은 웹 서버가 WAS 앞단에서 하는 역할은 무엇인가요?
💬 서블릿 컨테이너란 무엇이며, WAS와 어떤 관계가 있나요?
💬 MSA 환경에서는 WAS 개념이 어떻게 적용되나요?
💬 웹 서버와 WAS 사이에 발생할 수 있는 병목을 어떻게 해결할 수 있나요?
💬 웹 서버 캐싱과 CDN을 활용하면 어떤 효과가 있나요?
💬 모니터링 툴(APM, 로그)을 활용해 WAS 병목을 어떻게 진단하나요?
🚀 웹 서버와 WAS는 성능, 보안, 확장성을 고려한 아키텍처 설계의 핵심입니다. 