WAS는 단순한 정적 파일 전달을 넘어, 동적 컨텐츠(Dynamic Content)를 생성하고 비즈니스 로직을 수행하는 애플리케이션 서버입니다. 웹서버 기능에 Web Container(서블릿 컨테이너 등) 기능을 합친 구조로 이해할 수 있습니다.
- 주요 역할: DB 조회, 사용자 요청에 따른 비즈니스 로직 처리, 동적 데이터 생성
- 대표적인 제품: Tomcat, Jeus, Undertow, Node.js (Express), Django/Gunicorn
- 특징: 클라이언트의 요청 파라미터에 따라 매번 다른 결과 화면(HTML 또는 JSON/XML)을 실시간으로 만들어 전송합니다.

3. 웹서버와 WAS의 핵심 구조적 차이점
두 서버의 가장 큰 차이는 컨테이너(Container/Engine)의 유무와 데이터 처리 흐름에 있습니다.
[클라이언트/브라우저]
│
▼ (HTTP 요청)
┌──────────────┐ ┌─────────────────────────────┐
│ Web Server │ ───> │ WAS │
│ (정적 데이터)│ <─── │ (웹 컨테이너 + 비즈니스 로직) │
└──────────────┘ └─────────────────────────────┘
│
▼ (SQL)
┌─────────────┐
│ Database │
└─────────────┘
① 컨테이너(Container) 탑재 여부
- 웹서버: 웹 컨테이너가 존재하지 않습니다. HTTP 프로토콜을 해석하고 파일 경로에 있는 자원을 찾아 전달하는 기능에 집중되어 있습니다.
- WAS: 웹 컨테이너(Web Container / Servlet Container)를 내장하고 있습니다. 자바(Java) 기준으로는 서블릿(Servlet)의 생명주기를 관리하고, 코드(CGI/WSGI/자바 클래스 등)를 실행하여 결과를 HTTP 형태로 변환해 줍니다.
② 데이터 처리 방식 (정적 vs 동적)
- 웹서버 (정적): GET /logo.png 요청이 오면, 미리 저장되어 있는 logo.png 파일 그대로 응답합니다. 누구에게나 똑같은 결과를 보여줍니다.
- WAS (동적): GET /mypage 요청이 오면, 로그인된 사용자 ID를 확인하고 DB에서 해당 사용자의 잔액, 주문 내역 등을 조회한 뒤 계산된 최신 결과 화면을 만들어 응답합니다.
③ 리소스 관리 및 스레드 구조
- 웹서버: 파일 I/O 처리에 최적화되어 있으며, 비동기 이벤트 기반(예: Nginx) 구조를 활용해 엄청난 수의 concurrent(동시) 접속자를 가볍게 처리합니다.
- WAS: 각 요청마다 비즈니스 로직 연산과 DB 커넥션 풀(DBCP) 관리가 필요하므로, 상대적으로 메모리 및 CPU 사용량이 큽니다.
4. 웹서버와 WAS의 차이점 한눈에 비교
| 구분 | 웹서버 (Web Server) | WAS (Web Application Server) |
| 주요 목적 | 정적 리소스 전달 및 HTTP 통신 관리 | 동적 비즈니스 로직 실행 및 DB 연동 |
| 핵심 컴포넌트 | HTTP 엔진 | HTTP 엔진 + 웹 컨테이너 (Web Container) |
| 주요 데이터 | HTML, CSS, JS, 이미지, MP4 등 | 사용자별 맞춤 데이터, 결제, 로그인 정보 등 |
| DB 연동 여부 | DB와 직접 통신하지 않음 | DB 커넥션 풀을 이용해 DB와 직접 연동 |
| 대표 소프트웨어 | Nginx, Apache | Tomcat, Jeus, GlassFish |
5. 실무에서 웹서버와 WAS를 함께(앞단-뒷단) 구성하는 이유
대규모 웹 아키텍처에서는 웹서버만 쓰거나 WAS만 단독으로 쓰지 않고, [웹서버 - WAS - DB] 3-Tier 구조로 연결하여 사용하는 것이 표준입니다.
① 서버 부하 분산 (Efficiency)
정적 컨텐츠(이미지, CSS 등)는 속도가 빠른 웹서버가 앞단에서 즉시 처리하여 반환합니다. 연산이 필요한 동적 요청만 뒷단의 WAS로 넘겨줌으로써 WAS의 CPU 및 메모리 부하를 대폭 줄일 수 있습니다.
② 보안 강화 (Security)
실제 비즈니스 로직과 데이터베이스 접근 권한을 가진 WAS를 외부 인터넷망에 직접 노출하지 않고, 프라이빗 네트워크(Private Subnet)에 숨길 수 있습니다. 앞단의 웹서버가 침입 차단막(Reverse Proxy) 역할을 수행합니다.
③ 무중단 배포 및 장애 격리 (Availability)
웹서버 1대 뒤에 WAS를 여러 대(Cluster) 두고 로드 밸런싱(Load Balancing)을 구성할 수 있습니다. 특정 WAS에 장애가 발생하거나 신규 버전을 배포할 때, 웹서버 설정 변경만으로 다른 WAS로 트래픽을 넘겨 서비스 중단 없이 운영이 가능합니다.
💡 요약 및 결론
- 웹서버는 파일만 챙겨주는 "빠른 파일 전달자"입니다.
- WAS는 로직을 계산하고 DB를 조회해 화면을 만들어내는 "일 잘하는 애플리케이션 실행기"입니다.
두 시스템의 역할 차이를 명확히 이해하고 서비스 규모에 맞는 적절한 아키텍처를 구성하는 것이 안정적인 웹 서비스 운영의 핵심입니다.