Daily Dev Q&A: Web Server vs WAS (Web Application Server)

2026. 1. 6. 14:40·Archive/Daily Dev Q&A

Topic (오늘의 주제)

Web Server vs WAS (Web Application Server)

Why (왜 사용하는가? 왜 중요한가?)

  • 실무: 서버 부하를 분산하고 보안을 강화하기 위해 역할을 분리합니다. 정적 리소스(이미지, HTML)는 빠르고 가벼운 Web Server가, 복잡한 연산은 WAS가 처리하게 합니다.
  • 구조적 의미: 3-Tier Architecture(Client ↔ Web Server ↔ WAS ↔ DB)의 핵심 구성 요소입니다.
  • 면접 의도: 단순히 "둘 다 서버 아닌가요?"가 아니라, 정적/동적 컨텐츠 처리의 차이와 Reverse Proxy로서의 Web Server 활용 능력을 검증하려 합니다.

Core Concept (핵심 개념 정리)

요소 Web Server WAS (Web Application Server)
개념 정의 클라이언트(브라우저)로부터 HTTP 요청을 받아 정적 컨텐츠를 제공하는 서버. Web Server 기능에 더해, 동적 컨텐츠(DB 조회, 비즈니스 로직)를 수행하기 위한 컨테이너를 포함한 서버.
주요 역할 HTML, CSS, Image, JS 파일 등 이미 만들어져 있는 파일을 그대로 전송. JSP, Servlet, API 로직 등을 실행하여 결과물을 생성해서 전송.
구성 요소 HTTP Daemon (프로세스) Web Server + Web Container (JSP/Servlet Container)
대표 제품 Nginx, Apache HTTP Server, IIS Tomcat, Jeus, WebLogic, JBoss
동작 흐름 요청 → Web Server → (정적이면 응답 / 동적이면 WAS로 토스) Web Server로부터 요청 받음 → 로직 수행/DB 연결 → 결과 생성 → Web Server에 반환.

Interview Answer Version (면접 답변식 요약)

"Web Server는 이미지나 HTML 같은 정적 리소스를 빠르게 처리하는 데 특화되어 있고, WAS는 비즈니스 로직을 수행하거나 DB에 접근하여 동적 데이터를 생성하는 데 특화되어 있습니다.

Spring Boot를 예로 들면, 내장된 Tomcat이 WAS 역할을 수행합니다.

실무에서는 부하 분산과 보안을 위해 **Nginx 같은 Web Server를 앞단(Reverse Proxy)**에 두고, 뒷단에 WAS를 배치하여 역할을 분리하는 구조를 주로 사용합니다."

Practical Tip (실제 사용 예시 및 구성)

1. Spring Boot 개발 시 (Embedded WAS)

  • 개발 중인 Spring Boot 프로젝트에는 **Tomcat이 내장(Embedded WAS)**되어 있습니다.
  • 따라서 별도의 웹 서버 설치 없이 Run만 해도 localhost:8080으로 웹 서비스가 가능한 것입니다. 이때 Tomcat이 웹 서버 역할과 WAS 역할을 동시에 수행합니다.

2. 실제 배포 환경 (Web Server + WAS 조합)

  • 실제 서비스 배포 시에는 **Nginx(Web Server)**를 앞단에 두고, Spring Boot(WAS)와 연결합니다. 이를 Reverse Proxy 구성이라고 합니다.
    • 이유 1 (로드 밸런싱): Nginx 하나가 뒤에 있는 여러 개의 Spring Boot 서버로 요청을 나눠줄 수 있습니다.
    • 이유 2 (보안): 실제 WAS의 포트(8080)를 외부에 노출하지 않고, Nginx(80/443)만 노출합니다.
    • 이유 3 (HTTPS): SSL 인증서 처리를 Nginx가 담당하여 WAS의 부담을 줄입니다.

[Nginx 설정 예시 - nginx.conf]

Nginx
server {
    listen 80;
    server_name my-service.com;

    # 1. 정적 파일은 Nginx가 직접 처리 (빠름)
    location /static/ {
        root /var/www/html;
    }

    # 2. 동적 요청은 WAS(Spring Boot)로 넘김 (Proxy)
    location / {
        proxy_pass http://localhost:8080; 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

3. 오해하기 쉬운 점

  • "WAS는 정적 컨텐츠를 처리 못하나요?" -> 아닙니다. Tomcat 5.5 이후부터는 정적 처리 성능도 매우 좋아졌습니다. 하지만 로드 밸런싱과 무중단 배포 등을 위해 여전히 Web Server를 앞단에 두는 것이 표준 아키텍처입니다.

예상 꼬리질문 정리

  1. Q: Reverse Proxy가 무엇이고 왜 쓰나요?
    • 핵심 키워드: 클라이언트 대신 서버에 요청을 보내주는 대리자. 보안(서버 IP 숨김), 로드 밸런싱, 캐싱, SSL 처리를 위해 사용.
  2. Q: 서블릿 컨테이너(Servlet Container)란 무엇인가요?
    • 핵심 키워드: WAS의 핵심 부품으로, 자바 서블릿(Servlet)의 생명주기를 관리하고 요청을 처리하는 주체. (ex: Tomcat).
  3. Q: 로드 밸런싱을 할 때 세션(Session)은 어떻게 관리해야 하나요?
    • 핵심 키워드: Sticky Session(특정 사용자를 특정 서버에 고정) 또는 Session Clustering(Redis 등을 이용한 세션 공유) 사용.

'Archive > Daily Dev Q&A' 카테고리의 다른 글

Daily Dev Q&A: 영속성 컨텍스트  (0) 2026.01.09
Daily Dev Q&A: ORM (Object-Relational Mapping)의 개념과 한계(Trade-off)  (0) 2026.01.07
Daily Dev Q&A: JPA  (0) 2026.01.05
Daily Dev Q&A: RESTful API 설계 원칙과 애매한 상황(Edge Case)의 현실적 해결 전략  (0) 2025.12.31
Daily Dev Q&A: session 로그인 방식과 token 로그인 방식  (0) 2025.12.31
'Archive/Daily Dev Q&A' 카테고리의 다른 글
  • Daily Dev Q&A: 영속성 컨텍스트
  • Daily Dev Q&A: ORM (Object-Relational Mapping)의 개념과 한계(Trade-off)
  • Daily Dev Q&A: JPA
  • Daily Dev Q&A: RESTful API 설계 원칙과 애매한 상황(Edge Case)의 현실적 해결 전략
tlsgkstj
tlsgkstj
짱구의 성장 일기
  • tlsgkstj
    코딩하는 짱구
    tlsgkstj
  • 전체
    오늘
    어제
    • 분류 전체보기 (159)
      • About (1)
      • Projects (35)
        • Personal Projects (21)
        • Team Projects (14)
      • Engineering (20)
        • CS & Tools (0)
        • Backend Core (15)
        • Frontend (1)
        • Infra & Cloud (2)
        • AI & Tools (1)
      • Trouble Shooting & Issues (0)
      • Growth & Career (38)
        • Interview Prep (0)
        • Retrospectives (38)
      • Archive (65)
        • TIL (8)
        • Daily Dev Q&A (56)
  • 블로그 메뉴

    • 홈
    • About
    • Projects
    • Tech Stack
    • Dev Log
    • GitHub
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    jpa
    network
    spring
    til
    커리어리셋
    DevFestIncheon2025
    경기기후바이브코딩
    SpringBoot
    REACT
    aws_s3
    devlog
    클로드코드
    java
    backend
    Spring비교
    데브페스트
    프로덕트개발자
    OrphanRemova
    프로젝트회고
    Project_Review
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
tlsgkstj
Daily Dev Q&A: Web Server vs WAS (Web Application Server)
상단으로

티스토리툴바