🌐 WAS, 웹서버, 웹컨테이너, 그리고 서블릿 정리
✅ WAS란?
**WAS(Web Application Server)**는
자바 기반 웹 애플리케이션을 실행시켜주는 서버를 말한다.
사용자의 요청을 받아 자바 코드(컨트롤러, 서비스 로직 등)를 실행하고, 그 결과를 HTTP로 응답하는 역할을 한다.
WAS는 일반 웹서버로는 불가능한 **"동적 처리"**를 가능하게 한다.
✅ 웹서버란?
웹서버는 주로 정적인 리소스를 제공하는 역할을 한다.
예를 들어 HTML, CSS, JavaScript, 이미지 파일 등을 클라이언트에게 그대로 전달한다.
대표적인 웹서버
- Apache HTTP Server
- Nginx
하지만 웹서버는 자바로 작성된 로직(JSP, Spring 컨트롤러 등)을 실행하지 못한다.
그래서 웹컨테이너와 함께 동작하는 WAS가 필요하다.
✅ 웹컨테이너란?
웹컨테이너는 자바 웹 애플리케이션의 핵심 구성 요소 중 하나로,
Servlet이라는 자바 클래스(웹 요청 처리 코드)를 실행하고 관리하는 역할을 한다.
웹컨테이너의 주요 기능
- HTTP 요청을 받아 해당 서블릿으로 매핑
- 서블릿 객체 생성 및 생명주기 관리
- 응답 반환
대표적인 웹컨테이너
- Tomcat (가장 널리 사용됨)
- Jetty, Undertow (Spring Boot에서 옵션으로 사용 가능)
✅ Servlet이란?
Servlet은 자바 코드로 작성된 웹 요청 처리 클래스다.
즉, HTTP 요청을 받아서 처리하고 응답을 만들어주는 자바 클래스다.
과거에는 개발자가 직접 서블릿을 작성했지만,
현재는 Spring과 같은 프레임워크가 내부적으로 서블릿을 자동 등록하고 관리한다.
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) {
res.getWriter().write("Hello, world!");
}
}
지금 우리가 작성하는 Spring 컨트롤러도 내부적으로는 서블릿 기반으로 동작한다.
✅ WAS는 왜 "웹서버 + 웹컨테이너"인가?
WAS는 웹서버와 웹컨테이너의 기능을 모두 포함하는 구조다.
구조적으로 보면:
- 웹서버: 정적 리소스(HTML, JS, 이미지 등) 응답
- 웹컨테이너: 서블릿 실행 → 동적 웹 로직 처리
- WAS: 이 둘을 결합한 웹 애플리케이션 실행 환경
요청 처리 흐름
[브라우저 요청]
↓
[웹서버] - 정적 요청이면 바로 응답
↓
[웹컨테이너] - 동적 요청이면 서블릿 실행
↓
[응답 반환]
Spring Boot는 Tomcat(웹서버 + 웹컨테이너 포함)을 내장하고 있어서,
단독으로도 WAS 역할을 수행할 수 있다.
💬 면접에서 이렇게 설명하면 좋아요
WAS는 웹 애플리케이션을 실행하는 서버로, 웹서버와 웹컨테이너로 구성되어 있습니다.
웹서버는 정적인 파일을 처리하고, 웹컨테이너는 서블릿을 실행하여 자바 기반의 동적 요청을 처리합니다.
Servlet은 HTTP 요청을 처리하는 자바 클래스이며, Spring에서는 이 과정을 프레임워크가 대신 처리해줍니다.
✅ 마무리 요약
용어 설명
웹서버 | 정적인 파일 응답 (HTML, CSS 등) |
웹컨테이너 | 서블릿 실행 및 HTTP 요청 처리 |
Servlet | 자바로 만든 웹 요청 처리 클래스 |
WAS | 웹서버 + 웹컨테이너 결합된 서버 (Spring Boot 내장 Tomcat 등) |
'개발 > 웹' 카테고리의 다른 글
Restful API와 JWT (0) | 2025.05.23 |
---|