웹 애플리케이션을 실행하는 환경에서 웹 서버와 웹 애플리케이션 서버는 각각 다른 역할을 수행합니다.
웹 서버는 클라이언트(브라우저)의 요청을 받아 정적인 리소스를 제공하는 서버입니다.
대표적인 웹 서버로는 Apache HTTP Server, Nginx 등이 있습니다.
클라이언트가 index.html을 요청하면 웹 서버가 해당 파일을 반환합니다.
GET /index.html HTTP/1.1
Host: example.com
WAS는 사용자의 요청을 받아 동적인 웹 애플리케이션을 실행하는 서버입니다.
대표적인 WAS로는 Tomcat, JBoss, WebLogic, WebSphere 등이 있습니다.
사용자가 /login을 요청하면 WAS가 DB에서 사용자 정보를 조회하고 응답을 반환합니다.
POST /login HTTP/1.1
Host: example.com
Content-Type: application/json
{
"username": "user",
"password": "1234"
}
| 구분 | 웹 서버(WS) | 웹 애플리케이션 서버(WAS) |
|---|---|---|
| 주요 역할 | 정적인 콘텐츠 제공 | 동적인 웹 애플리케이션 실행 |
| 처리 방식 | HTML, CSS, JS, 이미지 파일 반환 | 비즈니스 로직 수행, DB 연동 |
| 예시 | Nginx, Apache HTTP Server | Tomcat, JBoss, WebLogic |
| 부하 분산 | 클라이언트 요청을 WAS로 분배 | 내부에서 요청 처리 및 DB 연동 |
| 실행 방식 | HTTP 요청을 처리하여 파일 반환 | Java, PHP, Python 등의 애플리케이션 실행 |
웹 서비스에서는 웹 서버와 WAS를 함께 사용하는 구조가 일반적입니다.
https://example.com/login을 요청 index.html)를 제공 /login)일 경우 WAS로 전달 웹 서버는 정적 리소스를 제공하며 부하 분산 역할을 수행하고 WAS는 비즈니스 로직을 처리하고 동적인 응답을 생성 합니다.
실무에서는 Nginx(Apache) + Tomcat 조합을 자주 사용하며 트래픽이 많을 경우 웹 서버에서 부하 분산(Load Balancing)을 수행하는 것이 중요하다는 점을 다시 한번 느꼈습니다.