WAS 역할

WAS가 애플리케이션 실행, 요청 매핑, 세션, DB 연결 준비를 담당하는 방식을 Tomcat 중심으로 정리한다.


WAS가 요청을 받는 구간

Client
  -> Web Server
  -> WAS
  -> Application
  -> DBMS

핵심 역할

WAS(Web Application Server)는 동적인 애플리케이션 로직을 실행하고, 요청을 실제 애플리케이션 코드로 연결하는 계층이다.

Web Server와 다른 점

Web Server는 주로 HTTP 요청을 받고 정적 리소스 또는 프록시를 처리한다. WAS는 애플리케이션을 실행한다.

구분Web ServerWAS
주요 역할정적 파일, TLS, 프록시, 라우팅애플리케이션 실행, 세션, 비즈니스 로직
대표 제품Nginx, Apache HTTP ServerTomcat, JEUS, JBoss/WildFly
주요 로그access/error logapplication log, catalina log
장애 예502, TLS 오류, upstream 오류500, OOM, DB connection 오류

Tomcat 기준 구조

Tomcat은 Java 웹 애플리케이션을 실행하는 Servlet Container다. 핵심 구성요소는 다음과 같다.

구성요소역할
ServerTomcat 전체 인스턴스
ServiceConnector와 Engine을 묶는 단위
Connector외부 요청을 받는 입구. HTTP 8080, AJP 8009 등
Engine요청 처리 파이프라인
Host도메인/호스트명 단위 가상 호스트
Context실제 웹 애플리케이션 단위

요청 처리 흐름은 다음처럼 볼 수 있다.

Connector
  -> Engine
  -> Host
  -> Context
  -> Servlet / Filter / Application

Context와 배포

Tomcat에서 Context는 웹 애플리케이션 하나를 의미한다. URL 경로와 애플리케이션 배포 단위가 연결된다.

배포 파일일반적인 Context Path
ROOT.war/
sample.war/sample
admin.war/admin

404가 발생했을 때는 Web Server의 location만 볼 것이 아니라 Tomcat의 Context Path와 WAR 파일명도 같이 확인해야 한다.

세션

WAS는 사용자 상태를 세션으로 관리할 수 있다. 단일 Tomcat에서는 메모리 세션으로 충분할 수 있지만, 여러 WAS로 로드밸런싱하면 세션 유지가 문제가 된다.

요청 1 -> Tomcat A: 로그인 세션 생성
요청 2 -> Tomcat B: 세션 없음

이 경우 sticky session, session clustering, Redis 같은 외부 세션 저장소, stateless 구조를 검토한다.

자주 확인하는 파일

항목설명
conf/server.xmlConnector, Engine, Host 설정
conf/context.xmlContext 공통 설정
webapps/WAR 배포 위치
logs/catalina.out표준 출력 로그
logs/localhost_access_log.*.txtTomcat 접근 로그
bin/setenv.shJVM 옵션, 환경변수 설정

점검 포인트

확인 항목예시
프로세스Tomcat이 실행 중인가
포트Connector 포트가 listen 중인가
배포WAR가 정상 배포되었는가
ContextURL path와 Context Path가 맞는가
로그catalina/app log에 예외가 있는가
리소스heap, thread, file descriptor가 부족하지 않은가

관련 블로그 기록

닫기 전 질문

  • 이 요청은 어떤 Context로 매핑되어야 하는가?
  • Web Server에서는 정상인데 500이 난다면 WAS 로그에서 무엇을 볼 것인가?
  • 여러 WAS로 분산할 때 세션은 어디에 저장되는가?