WP 5-1. 웹 서버(Web Server) vs WAS(Web Application Server) 개념 이해와 차이 비교 feat. Tomcat

소영·2025년 2월 16일
post-thumbnail

🔎 주제

웹 서버(Web Server)와 WAS(Web Application Server)는 어떻게 다른걸까?

웹 서버(Web Server)

웹 서버는 클라이언트(웹 브라우저)로부터 HTTP 요청을 받아 요청에 맞는 응답 결과를 전송하는 역할을 한다.

작동 방식

클라이언트 URL을 입력하여 요청을 보내고, 이 URL이 웹 서버의 주소 식별자이다.

클라이언트와 웹 서버의 통신 방식
1. 클라이언트는 URL을 사용하여 서버의 IP 주소를 찾음.
2. 클라이언트는 원하는 정보를 위한 HTTP 요청을 보냄.
3. 웹 서버는 데이터베이스와 통신하여 관련 데이터를 찾음.
4. 웹 서버는 HTML 페이지, 이미지, 파일 등과 같은 정적 리소스를 HTTP 형태로 응답을 생성하여 클라이언트에게 반환함.
5. 응답 결과를 받은 클라이언트가 사용자에게 정보를 표시함.

✅ 이때 정적 리소스(정적 콘텐츠)란,
변경되지 않는 파일로, 사용자가 요청할 때마다 서버는 동일한 데이터를 반환한다.

예시로는 HTML 파일, CSS 스타일, JavaScript 파일, 이미지, 동영상 등이 있다.

WAS(Web Application Server)

일반적인 서비스에서 정적인 콘텐츠만 제공해주는 경우는 잘 없다.
새로운 데이터가 필요한 경우가 있다.

만약, 사용자로부터 동적인 요청이 들어오면, 웹 서버에서 자체적으로 동적인 콘텐츠를 생성할 수 없기에 WAS에 요청한다.

WAS는 일반적으로 애플리케이션 서버라고도 부른다.
애플리케이션 서버는 웹 서버가 할 수 없는 동적 콘텐츠 생성, 애플리케이션 로직 및 다양한 리소스와의 통합을 지원하여 웹 서버의 기능을 확장한다.

작동 방식

  1. 클라이언트에서 HTTP 요청을 보냄.
  2. 웹 서버가 요청을 받음.
  3. 정적 파일이면 웹 서버에서 그대로 제공하지만, 동적 콘텐츠인 경우 애플리케이션 서버로 요청을 전달함.
  4. 애플리케이션 서버에서 요청을 분석하고 필요한 데이터를 조회하여 비즈니스 로직을 수행함.
  5. 애플리케이션 서버는 새로운 HTML 페이지(또는 JSON) 등 생성한 응답을 웹 서버에 반환함.
  6. 웹 서버는 클라이언트에 응답을 반환함.
  7. 클라이언트가 사용자에게 정보를 표시함

✅ 동적 콘텐츠란,
사용자의 요청에 따라 그때그때 서버에서 생성되어 제공되는 콘텐츠를 말한다.

예시로 사용자별 맞춤 페이지나 인터넷 뉴스 최신 피드, 게시판 글 목록 등 늘 동일하지는 않은 데이터이다.
클라이언트에서 동일한 URL로 요청해도 사용자마자 다른 결과를 얻을 수 있다.


애플리케이션 서버는 클라이언트와 직접 소통하지 않는다.
늘 다음과 같은 방식으로 통신한다.

"애플리케이션 서버가 동적으로 생성 → 웹 서버가 클라이언트에게 전달"

그렇다면 애플리케이션 서버와 클라이언트 사이에 낀 웹 서버가 동적 콘텐츠를 전달하는 모양이니까
웹 서버가 동적 콘텐츠를 제공한다고 볼 수 있는 거 아닌가?라는 의문이 들 수도 있다.

애플리케이션이 동적으로 데이터를 생성하여도 "완성된 상태"로 클라이언트에 제공하면 더 이상 변하지 않는 고정된 상태가 된다.
즉 최종적으로 클라이언트가 받는 것은 정적 콘텐츠이고, 웹 서버는 정적인 형태로 리소스를 제공한다.

🔑 웹 서버와 WAS의 차이점 요약

구분웹 서버 (Web Server)애플리케이션 서버 (WAS)
역할정적 콘텐츠 제공 (HTML, CSS, JS, 이미지 등)동적 콘텐츠 처리 (비즈니스 로직, DB 연동)
작동 방식HTTP 요청을 받아 정적 파일을 반환비즈니스 로직 실행 후 HTML, JSON 등의 동적 데이터 생성
요청 처리 방식클라이언트 요청을 받아 정적 파일 제공 또는 필요에 따라 WAS로 전달웹 서버에서 전달받은 요청을 처리하고 응답 생성
클라이언트와의 관계클라이언트와 직접 통신보통 웹 서버를 통해서만 클라이언트와 통신
데이터 연동없음 (파일만 제공)데이터베이스와 연동하여 동적 콘텐츠 생성
예시Apache, Nginx, IISTomcat, JBoss, WebLogic, Flask, Express.js

+ Tomcat은 어디에 해당할까?

Apache Tomcat

톰캣은 Java 기반 웹 애플리케이션을 실행하는 오픈 소스 웹 컨테이너 및 WAS이다.

✅ 웹 컨테이너란?
서블릿(Servlet)과 JSP(Java Server Pages)와 같은 Java 기반 웹 애플리케이션을 실행하는 환경으로, 서블릿을 실행하는 핵심 모듈이다.

❇️ 서블릿이란?
Java 기반 웹 애플리케이션에서 HTTP 요청을 처리하고 동적 웹 페이지를 생성, 응답을 반환하는 클래스이다.

❇️ JSP란?
JSP(Java Server Pages)는 서버 측에서 실행되는 HTML 페이지로, Java 코드를 HTML 안에 삽입하여 동적인 웹 페이지를 생성할 수 있게 해주는 기술이다.

즉, 톰캣은 서블릿과 JSP를 실행할 수 있는 서버로 Spring Boot의 내장 서버이기도 하다.

비즈니스 로직을 수행하고 동적인 콘텐츠를 생성할 수 있다는 점에서 톰캣은 WAS의 역할을 수행할 수 있다고 본다.

그러나 일반적인 WAS(예: JBoss, WebLogic 등)에서 가능한 트랜잭션 처리나 보안 기능 같은 추가 기능은 포함되어 있지 않아 웹 컨테이너라고 부르는 게 가장 적합하지 않을까?

참고자료

'웹'이란 글자를 너무 많이 보았더니 글자가 되게 이상하게 생긴 것 같다...(?)
ㅇㅜㅔㅂ...

ㅇ ㅔ
ㅜ 
  ㅂ ...

AWS: 웹 서버와 애플리케이션 서버의 차이점은 무엇인가요?
웹 서버와 WAS
[TOMCAT] 🐱 아파치 톰캣 개념 구성 & 설정 💯 정리

profile
블로그 이전: https://syleeblog.tistory.com/

0개의 댓글