웹서버와 WAS란 무엇인가
웹 서비스를 운영하다 보면 "웹서버(Web Server)"와 "WAS(Web Application Server)"라는 두 개념을 반드시 마주치게 됩니다. 처음에는 둘 다 "서버"라는 단어가 붙어 있어 혼란스럽지만, 역할과 탄생 배경이 전혀 다릅니다. 이 둘을 명확히 구분하고 왜 함께 사용하는지 이해하는 것이 서버 연동 학습의 첫걸음입니다.
웹서버(Web Server)란?
웹서버 는 클라이언트(브라우저)로부터 HTTP 요청을 받아 정적(static) 콘텐츠 를 반환하는 소프트웨어입니다.
정적 콘텐츠란 서버에 미리 저장된 파일을 그대로 전달하는 것을 말합니다.
- HTML 파일 (
index.html) - CSS 파일 (
style.css) - JavaScript 파일 (
app.js) - 이미지 (
logo.png,photo.jpg) - 폰트, PDF, 동영상 등 바이너리 파일
웹서버는 이런 파일들을 디스크에서 읽어 클라이언트에게 전송하기만 합니다. 별도의 프로그램 실행이나 데이터베이스 조회 없이 빠르고 가볍게 처리할 수 있습니다.
대표적인 웹서버
| 이름 | 개발사 | 특징 |
|---|---|---|
| Nginx | Igor Sysoev | 비동기 이벤트 기반, 고성능, 리버스 프록시·로드밸런서 역할 겸용 |
| Apache HTTPD | Apache 재단 | 모듈 기반 확장성, 오랜 역사, .htaccess 등 유연한 설정 |
| Caddy | Caddyserver | 자동 HTTPS, 간결한 설정 문법 |
| IIS | Microsoft | Windows 환경에 최적화 |
WAS(Web Application Server)란?
WAS 는 웹서버의 기능에 더해 동적(dynamic) 콘텐츠 를 생성할 수 있는 애플리케이션 실행 환경을 제공하는 서버입니다.
동적 콘텐츠란 요청이 들어올 때마다 프로그램을 실행하여 그 시점에 생성 되는 응답입니다.
- 로그인 후 사용자 이름이 포함된 HTML
- 데이터베이스에서 조회한 상품 목록
- 결제 처리 후 생성된 주문 번호
- 실시간 검색 결과
WAS는 이런 처리를 위해 Java EE 컨테이너(Servlet·JSP) 나 Python WSGI, ** Node.js**등의 런타임을 내장하고 있습니다.
대표적인 WAS
| 이름 | 개발사 | 특징 |
|---|---|---|
| Apache Tomcat | Apache 재단 | Servlet·JSP 컨테이너, 경량, 오픈소스 |
| JBoss / WildFly | Red Hat | Java EE 전체 스펙 지원, 엔터프라이즈 |
| WebLogic | Oracle | 엔터프라이즈 유료, 고가용성 |
| WebSphere | IBM | 대형 금융·공공 엔터프라이즈 환경 |
| Jetty | Eclipse 재단 | 경량 임베디드 WAS |
왜 웹서버와 WAS를 분리하는가?
처음 웹을 배우는 분들은 "Tomcat만 있으면 웹 서비스 가능한데 Nginx는 왜 필요해?" 라고 묻습니다. 실제로 Tomcat만으로도 HTTP 요청을 받고 응답을 줄 수 있습니다. 그런데 실무 운영 환경에서는 반드시 둘을 분리합니다. 이유는 다음과 같습니다.
1. 역할 전문화로 성능 향상
웹서버(Nginx)는 정적 파일을 처리하는 데 최적화되어 있습니다. Nginx는 비동기 이벤트 기반 구조로 수만 개의 정적 파일 요청을 동시에 처리할 수 있습니다. 반면 Tomcat이 직접 정적 파일을 서빙하면 JVM 위에서 돌아가기 때문에 불필요한 오버헤드가 생깁니다.

2. WAS 보호 (보안)
WAS를 인터넷에 직접 노출하면 여러 보안 위험이 있습니다. 웹서버를 앞에 두면:
- WAS의 포트(8080, 8009)를 외부에서 접근 불가능하게 막을 수 있습니다.
- 웹서버에서 악성 요청, DDoS를 1차 필터링합니다.
- SSL/TLS 종료를 웹서버에서 처리하여 WAS는 HTTP만 받으면 됩니다.
3. 무중단 배포와 운영 편의성
웹서버를 앞에 두면 WAS를 교체하거나 재시작할 때 사용자가 에러 페이지를 보지 않도록 트래픽을 다른 WAS 인스턴스로 우회할 수 있습니다.
4. 로드밸런싱 (수평 확장)
트래픽이 늘어날 때 WAS를 여러 대 띄우고 웹서버가 요청을 분산하는 로드밸런싱을 적용할 수 있습니다.

HTTP 요청 처리 흐름
웹서버와 WAS가 함께 동작할 때의 전체 요청 흐름을 살펴봅니다.

웹서버 단독 vs WAS 단독 vs 연동 비교
| 구성 | 장점 | 단점 | 적합한 상황 |
|---|---|---|---|
| 웹서버 단독 | 빠름, 단순함 | 동적 처리 불가 | 정적 사이트, CDN |
| WAS 단독 | 구성 단순 | 보안 취약, 정적 파일 비효율 | 개발·테스트 환경 |
| 웹서버 + WAS | 성능, 보안, 확장성 우수 | 설정 복잡도 증가 | ** 실무 운영 환경 표준** |
실무에서는 웹서버(Nginx 또는 Apache) + WAS(Tomcat) 연동 구성이 사실상 표준입니다.
정리
- 웹서버(Nginx·Apache): 정적 파일 서빙, 리버스 프록시, SSL 처리, 로드밸런싱 전문
- WAS(Tomcat): 동적 콘텐츠 생성, 비즈니스 로직 실행, DB 연동 전문
- 분리하는 이유: 성능 최적화, 보안 강화, 무중단 배포, 수평 확장
- 요청 흐름: 브라우저 → 웹서버(정적 처리 or 프록시) → WAS(동적 처리) → 응답
다음 장에서는 정적 콘텐츠와 동적 콘텐츠의 차이를 더 깊이 파고들고, CGI에서 서블릿·WAS로 발전해온 역사를 살펴봅니다.