앞에서 서버가 보내는 데이터는 정적 데이터와 동적 데이터로 나뉜다고 했다.
이 구분이 중요한 이유는 서버의 역할도 두 가지로 나뉘기 때문이다.
- 정적 데이터를 주로 전달하는 서버 → 웹 서버(Web Server)
- 동적 데이터를 만들어서 전달하는 서버 → WAS(Web Application Server)
둘 다 “서버”이긴 하지만, 하는 일이 다르다.
웹 서버는 정적 데이터를 빠르게 전달하는 역할이다
웹 서버는 기본적으로 요청이 들어오면 파일을 찾아서 그대로 전달하는 데 강점이 있다.
예를 들어 이런 요청이 들어오면 웹 서버는 처리하기 쉽다.
- /index.html
- /style.css
- /app.js
- /images/logo.png
요청받은 파일을 디스크에서 읽어서 그대로 응답하면 끝이다.
서버가 복잡한 로직을 실행할 필요가 없다.
그래서 웹 서버는 보통 다음 특징을 가진다.
- 정적 파일 제공에 최적화되어 있다
- 요청 처리 속도가 빠르다
- 많은 요청을 가볍게 처리할 수 있다
대표적으로 `Nginx`, `Apache` 같은 것들이 웹 서버로 많이 언급된다.
WAS는 동적 처리를 위한 “실행 환경”이다
반면 동적 데이터는 파일 하나로 끝나는 문제가 아니다.
요청이 들어올 때마다 서버가 이런 일을 해야 한다.
- 요청 데이터를 읽는다
- 로그인 상태를 확인한다
- 데이터베이스에서 값을 조회한다
- 비즈니스 로직(검증/계산/조건 분기)을 실행한다
- 결과를 HTML 또는 JSON으로 만들어 응답한다
즉 동적 응답을 만들려면 서버가 “프로그램을 실행”할 수 있어야 한다.
이런 실행을 담당하는 서버(또는 실행 환경)를 WAS라고 부른다.
WAS는 보통 다음 특징을 가진다.
- 서버 사이드 코드를 실행할 수 있다
- 동적 데이터를 생성해 응답할 수 있다
- 세션 같은 서버 측 상태 관리 기능을 제공하는 경우가 많다
자바 진영에서는 톰캣(Tomcat)이 대표적인 WAS로 많이 언급된다.
“톰캣은 웹 서버냐, WAS냐?”가 헷갈리는 이유
현실에서는 웹 서버와 WAS의 경계가 깔끔하게만 나뉘지 않는다.
톰캣은 원래 “서블릿/JSP 실행”을 목표로 한 WAS(서블릿 컨테이너) 성격이 강하다.
하지만 동시에 기본적인 정적 파일 제공 기능도 같이 가지고 있다.
그래서 실무에서는 이렇게 말하는 경우가 많다.
- 엄밀히 말하면 톰캣은 WAS 성격이 더 강하다
- 하지만 웹 서버 기능도 어느 정도 포함하고 있어서 “둘 다 한다”라고도 말한다
핵심은 용어 싸움이 아니라 역할 구분이다.
- 정적은 파일 전달 중심
- 동적은 코드 실행 중심
이 차이를 잡는 게 중요하다.
보통 실무에서는 웹 서버 + WAS를 같이 둔다
실제 서비스 구조에서는 보통 둘을 같이 둔다.
- 웹 서버(Nginx 같은 것)는 정적 파일을 빠르게 처리하고
- 동적 요청은 WAS(톰캣 같은 것)로 넘겨서 처리한다
이렇게 역할을 나누면 장점이 생긴다.
- 정적 요청은 웹 서버가 빠르게 처리해서 WAS 부담을 줄인다
- WAS는 동적 로직 처리에 집중할 수 있다
- 전체적으로 트래픽을 더 안정적으로 처리할 수 있다
이 구조는 나중에 리버스 프록시, 로드 밸런싱 같은 개념으로 이어진다.
핵심 정리
웹 서버와 WAS를 정리하면 다음과 같다.
- 웹 서버: 정적 데이터를 빠르게 전달하는 역할에 강하다
- WAS: 서버 사이드 코드를 실행해 동적 데이터를 만들어 응답한다
그리고 실제 서비스에서는 보통 둘을 섞어서 사용한다.
'Web > Web Basics' 카테고리의 다른 글
| [웹 기초] 7. HTTP 메시지는 왜 Header와 Body로 나뉘는가 (0) | 2026.03.29 |
|---|---|
| [웹 기초] 6. 프로토콜과 HTTP/HTTPS (0) | 2026.03.29 |
| [웹 기초] 4. 정적 데이터와 동적 데이터는 무엇이 다른가 (0) | 2026.03.29 |
| [웹 기초] 3. GET과 POST는 무엇이 다른가 (0) | 2026.03.29 |
| [웹 기초] 2. request와 response는 어떻게 한 쌍으로 동작하는가 (0) | 2026.03.29 |