웹서버와 WAS를 알아보기 전에 서버에 대해 간단하게 알아보자.
서버란?
서버는 클라이언트에게 네트워크를 통해 정보나 시스템을 제공하는 컴퓨터 시스템이다.
우리가 사용하는 스마트폰이나 노트북이 손님이라면, 서버는 그 손님의 주문을 기다렸다가 원하는 정보를 가져다주는 음식점과 같다.
- 손님(Client): "메뉴판(웹페이지) 좀 보여주세요!", "비빔밥(데이터) 주문할게요!"
- 서버(Server): "네, 여기 메뉴판(HTML) 있습니다.", "주문하신 비빔밥(결과값) 나왔습니다."
웹 서버 (Web Server)
웹 서버는 클라이언트(브라우저)로부터 HTTP 요청을 받아, 컴퓨터에 저장된 정적인 파일(HTML, CSS, JS, 이미지 등)을 그대로 전달하는 역할을 합니다.
"정적 리소스의 수문장"주요 역할
- 정적 파일 서빙: 변화가 없는 파일을 빠르게 전송합니다.
- 리버스 프록시(Reverse Proxy): 클라이언트와 WAS 사이에서 중계역할을 하며 보안을 강화합니다.
- 로드 밸런싱: 여러 대의 WAS로 요청을 분산합니다.
장점
- 속도와 효율: 단순 파일 전송만 하므로 매우 빠르고 하드웨어 자원을 적게 소모합니다.
- 안정성: 구조가 단순하여 서버가 다운될 확률이 적습니다.
단점
- 로직 처리 불가: 데이터베이스와 통신하거나 사용자의 상태에 따라 변하는 정보를 처리할 수 없습니다. (예: "로그인한 직원의 연차 계산" 등은 수행 불가)
WAS (Web Application Server)
WAS는 웹 서버로부터 요청을 넘겨받아 동적인 처리를 수행합니다. 데이터베이스와 연결되어 데이터를 주고받고, 프로그램 로직을 실행하여 결과를 만들어냅니다.
"비즈니스 로직의 두뇌"주요 역할
- 프로그램 실행: Java, Python 등의 코드를 실행하여 비즈니스 로직을 처리합니다.
- DB 연동: 데이터베이스에서 직원 정보나 근태 기록을 조회/수정합니다.
- 트랜잭션 관리: 여러 작업이 동시에 일어날 때 데이터의 일관성을 유지합니다.
장점
- 유연한 서비스: 사용자마다 다른 맞춤형 정보를 실시간으로 생성할 수 있습니다.
- 복잡한 연산: HR 인사이트 분석이나 근태 정산 같은 무거운 로직을 처리합니다.
단점
- 자원 소모: 코드 실행과 DB 연결이 필요하므로 웹 서버보다 메모리와 CPU를 많이 사용합니다.
- 속도: 정적 파일만 주는 웹 서버보다는 응답 속도가 상대적으로 느릴 수 있습니다.
한눈에 비교하기
| 구분 | 웹 서버 (Web Server) | WAS (Web Application Server) |
| 주요 역할 | 정적 리소스 제공 (HTML, 이미지) | 동적 로직 수행 (데이터베이스 연동, 계산) |
| 비유 | 서빙 직원, 편의점 (완제품 판매) | 주방 요리사, 식당 (주문 즉시 조리) |
| 핵심 목표 | 빠르고 가벼운 응답 | 복잡한 비즈니스 로직 처리 |
요즘은 둘 다 사용!
| 장점 학목 | 상세 내용 |
| 효율성 극대화 | 정적 파일은 웹 서버가, 복잡한 로직은 WAS가 담당하여 전체 응답 시간을 단축합니다. |
| 보안 강화 | WAS가 외부에 직접 노출되지 않도록 웹 서버가 방패막이 역할을 수행합니다. |
| 장애 대응 | WAS가 점검 중이거나 에러가 나더라도, 웹 서버가 "점검 중" 페이지를 즉시 보여줄 수 있습니다. |
흐름

- 사용자 요청 (주문): 사용자가 브라우저에서 요청을 보낸다.
- 웹 서버 도착 (안내 직원): 가장 먼저 웹 서버가 요청을 받는다.
- 웹 서버는 요청을 확인하고 "내가 줄 수 있는 것(정적 리소스)"인지 판단한다.
- 만약 배경 이미지나 로고 같은 것이라면 웹 서버가 창고에서 꺼내 바로 돌려준다.
- WAS로 전달 (주방에 주문 전달): "근태 데이터 계산"처럼 계산이 필요한 동적 요청인 경우, 웹 서버는 이 요청을 WAS에게 넘긴다.
- WAS 처리 (요리사): WAS는 요청을 분석한다.
- DB(냉장고)에 접근해서 사용자의 출퇴근 기록을 가져온다.
- 가져온 데이터를 바탕으로 지각 횟수, 총 근무 시간 등을 복잡하게 계산(로직 처리)한다.
- 응답 생성 (요리 완성): WAS는 계산된 결과를 HTML이나 JSON 형태로 만들어 웹 서버에게 돌려준다.
- 최종 응답 (손님에게 서빙): 웹 서버는 WAS가 만든 결과물을 받아 사용자에게 최종적으로 전달한다.
이유
1. 기능을 분리하여 서버 부하 방지 (효율성)
- 웹 서버: 정적인 파일(HTML, CSS, 이미지)만 처리하도록 특화되어 있다. 아주 빠르고 가볍다.
- WAS: 복잡한 비즈니스 로직(근태 계산, 데이터 분석)에만 집중해야 한다.
- 결과: 웹 서버가 앞단에서 가벼운 일들을 미리 쳐내줌으로써, WAS가 연산에만 전념할 수 있도록 부하를 줄여준다.
2. 보안 강화 (보안성)
- WAS는 데이터베이스와 연결되어 있어 직접 외부에 노출되면 위험하다.
- 웹 서버를 앞단에 두면 일종의 방패(Proxy) 역할을 한다. 외부 사용자는 웹 서버하고만 통신하고, 실제 데이터가 처리되는 WAS의 구조나 IP는 숨길 수 있다.
3. 여러 대의 WAS 연결 가능 (확장성/로드 밸런싱)
- 사용자가 갑자기 몰려 요리사(WAS) 한 명으로 부족할 때, 웹 서버는 여러 명의 요리사(WAS 1, WAS 2, WAS 3)에게 주문을 골고루 나눠줄 수 있다.
- 이를 로드 밸런싱(Load Balancing)이라고 한다.
4. 무중단 서비스 운영 (가용성)
- 요리사(WAS) 한 명이 아파서 잠시 쉬어야 하거나(업데이트/점검), 갑자기 쓰러져도(장애 발생) 웹 서버가 다른 요리사에게 주문을 넣으면 된다.
- 사용자는 서비스가 멈췄다는 사실을 모른 채 계속 이용할 수 있다.
면접 답변식 요약
웹 서버는 정적인 콘텐츠(HTML, 이미지 등)를 처리하는 데 특화되어 있고, WAS는 DB 연동이나 복잡한 로직을 수행하는 동적인 콘텐츠 처리에 특화되어 있습니다. 두 서버를 함께 사용하는 가장 큰 이유는 부하 분산과 보안, 그리고 서비스의 안정성 때문입니다.
'Daily Dev Q&A 정리 템플릿' 카테고리의 다른 글
| 26.01.08 JPA의 영속성 컨텍스트란? (0) | 2026.01.08 |
|---|---|
| 26.01.07 ORM이란? (0) | 2026.01.07 |
| 26.01.05 JPA를 사용하는 이유 (0) | 2026.01.05 |
| 26.01.02 restfull 설계방식에 대해서 설명하고 이를 적용할 때 에매한 경우의 예시를 들어, 보통 이럴 때 어떻게 하는지를 설명해주세요. (0) | 2026.01.02 |
| 26.01.01 session로그인방식과 token로그인 방식 (0) | 2026.01.01 |