Web 서버는 클라이언트(브라우저)로부터 요청을 받아 HTML, CSS, JS, 이미지 등의 정적 리소스를 전달해주는 서버입니다.
WAS(Web Application Server)는 클라이언트의 요청을 처리하기 위해 동적인 로직을 수행하고 DB와 연동하는 애플리케이션 실행 환경입니다.
| 구분 | Web Server | WAS |
|---|---|---|
| 주 역할 | 정적 리소스 제공 | 동적 로직 처리 |
| 처리 방식 | 요청된 파일을 그대로 응답 | 요청을 로직에 따라 가공 후 응답 |
| 예시 | HTML, CSS, JS, 이미지 | JSP, Servlet, Spring, 데이터 조회 |
| 리소스 사용 | 적음 | 많음 |
| 확장성 | Nginx는 뛰어남 | WAS는 부하가 큼 |
| 구조 | 클라이언트 ←→ Web | 클라이언트 ←→ Web ←→ WAS |
[Client (Browser)]
↓
[Web Server (Nginx)]
↓
[WAS (Tomcat, Spring)]
↓
[Database]| 환경 | Web 서버 | WAS | 분리 여부 |
|---|---|---|---|
| 로컬 (톰캣만 사용) | 톰캣 내장 기능 | 톰캣 서블릿 컨테이너 | ❌ 통합 |
| 운영 | Nginx, Apache | Tomcat, JBoss 등 | ✅ 분리 |
현대 웹 애플리케이션에서는 다음과 같은 흐름이 일반적입니다:
[클라이언트 브라우저]
↓
[Web 서버] ← 정적 파일(HTML, JS, CSS 등)
↓
[클라이언트 브라우저에서 실행된 JS 코드]
↓
[WAS] ← REST API 요청 (동적 데이터)즉 Web 서버는 정적 파일만 제공하고, 클라이언트는 JS로 WAS의 API를 직접 호출합니다.
SSR(서버사이드 렌더링) 구조에서는 다음 흐름도 가능합니다:
[브라우저]
↓ 요청
[WAS에서 HTML 생성 (JSP, Thymeleaf 등)]
↓ 응답
[브라우저]