[웹 기초] 5. 웹 서버와 WAS

2026. 3. 29. 12:37·Web/Web Basics

 

앞에서 서버가 보내는 데이터는 정적 데이터와 동적 데이터로 나뉜다고 했다.
이 구분이 중요한 이유는 서버의 역할도 두 가지로 나뉘기 때문이다.

  • 정적 데이터를 주로 전달하는 서버 → 웹 서버(Web Server)
  • 동적 데이터를 만들어서 전달하는 서버 → WAS(Web Application Server)

둘 다 “서버”이긴 하지만, 하는 일이 다르다.

 

 

웹 서버는 정적 데이터를 빠르게 전달하는 역할이다

웹 서버는 기본적으로 요청이 들어오면 파일을 찾아서 그대로 전달하는 데 강점이 있다.

예를 들어 이런 요청이 들어오면 웹 서버는 처리하기 쉽다.

  • /index.html
  • /style.css
  • /app.js
  • /images/logo.png

요청받은 파일을 디스크에서 읽어서 그대로 응답하면 끝이다.
서버가 복잡한 로직을 실행할 필요가 없다.

그래서 웹 서버는 보통 다음 특징을 가진다.

  • 정적 파일 제공에 최적화되어 있다
  • 요청 처리 속도가 빠르다
  • 많은 요청을 가볍게 처리할 수 있다

대표적으로 `Nginx`, `Apache` 같은 것들이 웹 서버로 많이 언급된다.

 

 

WAS는 동적 처리를 위한 “실행 환경”이다

반면 동적 데이터는 파일 하나로 끝나는 문제가 아니다.

요청이 들어올 때마다 서버가 이런 일을 해야 한다.

  • 요청 데이터를 읽는다
  • 로그인 상태를 확인한다
  • 데이터베이스에서 값을 조회한다
  • 비즈니스 로직(검증/계산/조건 분기)을 실행한다
  • 결과를 HTML 또는 JSON으로 만들어 응답한다

즉 동적 응답을 만들려면 서버가 “프로그램을 실행”할 수 있어야 한다.
이런 실행을 담당하는 서버(또는 실행 환경)를 WAS라고 부른다.

WAS는 보통 다음 특징을 가진다.

  • 서버 사이드 코드를 실행할 수 있다
  • 동적 데이터를 생성해 응답할 수 있다
  • 세션 같은 서버 측 상태 관리 기능을 제공하는 경우가 많다

자바 진영에서는 톰캣(Tomcat)이 대표적인 WAS로 많이 언급된다.

 

 

“톰캣은 웹 서버냐, WAS냐?”가 헷갈리는 이유

현실에서는 웹 서버와 WAS의 경계가 깔끔하게만 나뉘지 않는다.

톰캣은 원래 “서블릿/JSP 실행”을 목표로 한 WAS(서블릿 컨테이너) 성격이 강하다.
하지만 동시에 기본적인 정적 파일 제공 기능도 같이 가지고 있다.

그래서 실무에서는 이렇게 말하는 경우가 많다.

  • 엄밀히 말하면 톰캣은 WAS 성격이 더 강하다
  • 하지만 웹 서버 기능도 어느 정도 포함하고 있어서 “둘 다 한다”라고도 말한다

핵심은 용어 싸움이 아니라 역할 구분이다.

  • 정적은 파일 전달 중심
  • 동적은 코드 실행 중심

이 차이를 잡는 게 중요하다.

 

 

보통 실무에서는 웹 서버 + WAS를 같이 둔다

실제 서비스 구조에서는 보통 둘을 같이 둔다.

  • 웹 서버(Nginx 같은 것)는 정적 파일을 빠르게 처리하고
  • 동적 요청은 WAS(톰캣 같은 것)로 넘겨서 처리한다

이렇게 역할을 나누면 장점이 생긴다.

  • 정적 요청은 웹 서버가 빠르게 처리해서 WAS 부담을 줄인다
  • WAS는 동적 로직 처리에 집중할 수 있다
  • 전체적으로 트래픽을 더 안정적으로 처리할 수 있다

이 구조는 나중에 리버스 프록시, 로드 밸런싱 같은 개념으로 이어진다.

 

 

핵심 정리

웹 서버와 WAS를 정리하면 다음과 같다.

  • 웹 서버: 정적 데이터를 빠르게 전달하는 역할에 강하다
  • WAS: 서버 사이드 코드를 실행해 동적 데이터를 만들어 응답한다

그리고 실제 서비스에서는 보통 둘을 섞어서 사용한다.

 

'Web > Web Basics' 카테고리의 다른 글

[웹 기초] 7. HTTP 메시지는 왜 Header와 Body로 나뉘는가  (0) 2026.03.29
[웹 기초] 6. 프로토콜과 HTTP/HTTPS  (0) 2026.03.29
[웹 기초] 4. 정적 데이터와 동적 데이터는 무엇이 다른가  (0) 2026.03.29
[웹 기초] 3. GET과 POST는 무엇이 다른가  (0) 2026.03.29
[웹 기초] 2. request와 response는 어떻게 한 쌍으로 동작하는가  (0) 2026.03.29
'Web/Web Basics' 카테고리의 다른 글
  • [웹 기초] 7. HTTP 메시지는 왜 Header와 Body로 나뉘는가
  • [웹 기초] 6. 프로토콜과 HTTP/HTTPS
  • [웹 기초] 4. 정적 데이터와 동적 데이터는 무엇이 다른가
  • [웹 기초] 3. GET과 POST는 무엇이 다른가
sqaxe1
sqaxe1
woojoo-devlog 님의 블로그 입니다.
  • sqaxe1
    Woojoo's Devlog
    sqaxe1
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Backend (9)
        • Servlet (7)
        • Spring (2)
      • Frontend (1)
      • CS (0)
      • Book (33)
        • 자바 웹 프로그래밍 Next Step (30)
        • 테스트 주도 개발: 고품질 쾌속개발을 위한 TDD.. (1)
        • 성공과 실패를 결정하는 1%의 네트워크 원리 (2)
      • Engineering (0)
        • Testing (0)
      • Infra (6)
        • AWS (6)
      • Java (4)
      • Network (1)
      • 김영한 (28)
        • 자바 입문 (8)
        • 실전 자바 - 기본편 (6)
        • 실전 자바 - 중급편 (10)
        • 실전 자바 - 고급편 (4)
      • Web (39)
        • Web Basics (39)
      • Project (24)
        • NeoSquare (0)
        • Memo Evolution (24)
      • 정보처리기사 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java
    개발서적
    aws
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sqaxe1
[웹 기초] 5. 웹 서버와 WAS
상단으로

티스토리툴바