1. 서버(Server)란?
서버(server)는 컴퓨터 망에서 "클라이언트"라고 불리는 다른 컴퓨터에 정보를 제공하는 컴퓨터이다.
데이터센터의 컴퓨터들을 예시로 들 수 있다.
출처: 위키백과
서버는 종류가 많은데 웹 개발에서는 어떤 정보를 제공하는지에 따라 웹 서버와 WAS로 나눌 수 있다.
2. 웹 서버(Web Server)란?
웹 서버는 클라이언트(Client = 서비스를 요청하는 사용자/브라우저)로부터 HTTP(HyperText Transfer Protocol = 하이퍼텍스트 전송 규약) 요청을 받아, 주로 정적(Static) 자원을 제공하는 역할을 수행하는 서버입니다.
static의 사전의미
- (변화·움직임이 없이) 고정된[고정적인]
- 정지 상태의
출처: 네이버 영어사전
2-1. 대표적인 정적 자원
- 문서 및 구조: HTML
- 디자인: CSS
- 실행 스크립트: Javascript
- 미디어 파일: 이미지(JPG, PNG, GIF), 동영상(MP4), 폰트 등
2-2. 웹 서버의 핵심 동작 원리
웹 서버는 복잡한 계산이나 로직 처리 없이, 브라우저가 보낸 주소(URL)에 해당하는 파일을 파일 시스템(File System)에서 찾아 그대로 응답합니다.
예시 → 크롬 주소창에 https://example.com/logo.png를 입력하면, 웹 서버는 서버 하드디스크 내 지정된 경로에 있는 logo.png 파일을 읽어 브라우저로 전송합니다.
2-3. 웹 서버의 한계
동적 처리 불가능: 웹 서버는 사용자의 아이디에 따라 이름을 다르게 보여주거나, DB(Database)의 데이터를 가공하는 등의 '비즈니스 로직'을 직접 수행하지 못합니다.
2-4. 대표적인 웹 서버 소프트웨어
- Apache(아파치): 오랜 역사와 높은 신뢰성을 가진 서버.
- Nginx(엔진엑스): 가볍고 빠른 처리가 가능하며, 현대적인 서비스에서 표준처럼 사용됨.

3. WAS(Web Application Server)란?
WAS는 DB(Database) 조회나 복잡한 비즈니스 로직을 처리하여 동적(Dynamic)인 콘텐츠를 생성하고 제공하는 서버입니다.
웹 서버가 "이미 만들어진 파일"을 보내준다면, WAS는 "그때그때 상황에 맞게 파일을 만들어" 보내주는 역할을 합니다.
3-1. WAS의 핵심 기능 및 동작 원리
- 로직 실행: Java, Python, PHP 등의 언어로 작성된 프로그램을 실행합니다.
- DB 연동: 필요한 데이터를 DB(Database)에서 가져오거나 수정합니다.
- 결과 생성: 처리된 데이터를 바탕으로 HTML 등을 실시간으로 조립하여 클라이언트에게 응답합니다.
3-2. 왜 웹 서버와 WAS를 분리하여 사용하는가?
이론적으로는 WAS가 정적 자원까지 모두 처리할 수 있지만, 분리하여 사용하는 것이 객관적으로 더 타당합니다.
- 부하 분산: 단순한 이미지는 웹 서버가 처리하고, 복잡한 연산만 WAS가 담당하여 효율을 극대화합니다.
- 보안 강화: 실제 로직이 담긴 WAS를 외부망에서 숨기고 웹 서버를 앞단에 두어 보안 계층을 형성합니다.
- 장애 극복: WAS에 문제가 생겨도 웹 서버가 "점검 중" 페이지를 보여주는 등 유연한 대처가 가능합니다.
3-3. 대표적인 WAS 소프트웨어
- Tomcat(톰캣): Java 환경에서 가장 널리 쓰이는 오픈소스 WAS.⭐
- Jeus(제우스): 국내 대규모 기업 환경(엔터프라이즈)에서 자주 사용되는 상용 WAS.
- JBoss(제이보스): 레드햇에서 제공하는 강력한 기능의 WAS.

4. 웹 서버와 WAS의 차이점
웹 서버와 WAS는 서로 대립하는 개념이 아니라, 제공하는 콘텐츠의 성격에 따라 역할 분담을 하는 상호 보완적인 관계입니다.
| 구분 | 웹 서버 (Web Server) | WAS (Web Application Server) |
|---|---|---|
| 핵심 목적 | 정적 자원 제공 및 보안/부하 분산 | 동적 자원 생성 및 비즈니스 로직 처리 |
| 콘텐츠 종류 | HTML, CSS, JS, 이미지, 폰트 등 | DB(Database) 조회 결과 등 |
| 동작 원리 | 파일 시스템에서 파일을 찾아 그대로 응답 | 프로그램을 실행하여 결과를 만들어서 응답 |
| 구성 요소 | HTTP 서버 | 웹 서버 + 웹 컨테이너(Web Container) |
| 주요 장점 | 단순하고 빠르며 서버 부하가 적음 | 복잡하고 유연한 사용자 맞춤형 서비스 가능 |
| 대표 예시 | Apache, Nginx | Tomcat, Jeus, JBoss |
'Java' 카테고리의 다른 글
| [Java] AOP (0) | 2025.12.24 |
|---|---|
| [Java] Spring Boot에서 Bean 등록하는 법 (0) | 2025.12.21 |
| [Java] CORS와 CSRF의 차이 (0) | 2025.12.14 |
| [Java] String, StringBuffer, StringBuilder (0) | 2025.12.12 |
| [Java] Framework, Library (0) | 2025.12.11 |