1. 들어가며

Spring Boot 기반 백엔드 시스템을 구축할 때 대부분 기본적으로 사용하는 WAS는 Tomcat입니다.
하지만 최근에는 Undertow를 선택하는 프로젝트도 점점 늘어나고 있습니다.

두 서버는 단순히 “대체 가능한 WAS”가 아니라 아키텍처 구조와 리소스 사용 방식이 다르기 때문에
성능, CPU 사용량, 메모리 소비, 운영 안정성 측면에서 차이가 있습니다.

이 글에서는 Spring Boot 백엔드 관점에서 Tomcat과 Undertow의 성능과 시스템 자원 사용 특성을 비교해보겠습니다.


2. Tomcat vs Undertow 기본 구조

Tomcat

Tomcat은 Servlet 기반 스레드 모델을 사용하는 전통적인 Java 웹 서버입니다.

구조 특징

  • 요청마다 Worker Thread 할당
  • Blocking I/O 기반
  • 안정성과 레퍼런스가 매우 많음
  • 대부분의 Spring MVC 프로젝트 기본 선택

요청 처리 흐름

Client Request

Acceptor Thread

Worker Thread Pool

Servlet / Controller
 

특징

  • 안정적
  • 운영 경험 많음
  • 대규모 레퍼런스 존재
  • Spring Boot 기본 WAS

Undertow

Undertow는 JBoss/WildFly에서 개발된 고성능 웹 서버입니다.

구조 특징

  • Event-driven + non-blocking IO
  • Worker thread 최소화
  • Netty와 유사한 구조

요청 처리 흐름

Client Request

IO Thread

Worker Thread (필요 시)

Handler / Servlet
 

특징

  • 이벤트 기반
  • 적은 스레드 사용
  • 낮은 메모리 사용
  • 높은 동시성 처리

3. CPU 사용량 비교

Tomcat

Tomcat은 요청당 스레드 모델입니다.

요청 증가 → 스레드 증가 → CPU context switching 증가
 

동시 요청이 많아지면

  • CPU context switching 증가
  • 스레드 관리 비용 증가

예시

1000 동시 요청
→ worker thread 1000개 가능
→ CPU 스케줄링 비용 증가
 

CPU 특징

  • 안정적
  • predictable
  • 동시 요청 많을 때 CPU 증가

Undertow

Undertow는 이벤트 기반 IO 모델을 사용합니다.

IO Thread → 이벤트 처리
필요 시 Worker Thread
 

동시 요청 증가
→ IO thread는 크게 증가하지 않음
 

CPU 특징

  • context switching 감소
  • IO 처리 효율 높음
  • CPU 사용률 낮은 편

CPU 비교 정리

항목                                                                                             Tomcat                                        Undertow
스레드 모델 요청당 스레드 이벤트 기반
CPU context switching 많음 적음
동시 요청 처리 보통 유리
CPU 효율 안정적 효율적

4. 메모리 사용량 비교

메모리는 스레드 수와 직접 관련됩니다.

Tomcat

Tomcat은 Worker Thread Pool 기반입니다.

기본 설정

maxThreads = 200
 

스레드 하나당

약 1MB stack
 

200 threads
≈ 200MB stack memory
 

메모리 특징

  • 스레드 증가 → 메모리 증가
  • 높은 동시 요청 → 메모리 상승

Undertow

Undertow는 적은 IO thread + worker thread 구조입니다.

예시

IO threads = CPU * 2
Worker threads = CPU * 8
 

8코어 서버

IO thread = 16
Worker thread = 64
 

총 스레드

80개
 

Tomcat 대비

200 → 80
 

메모리 특징

  • 낮은 스레드 수
  • 낮은 메모리 사용
  • 고동시성에서 유리

메모리 비교

항목                                                                               Tomcat                                                                   Undertow
스레드 수 많음 적음
메모리 사용 상대적으로 높음 낮음
대량 트래픽 메모리 증가 안정적

5. 처리 성능 (Throughput)

벤치마크 환경에서 일반적으로 나타나는 경향

항목                                                                                             Tomcat                                      Undertow
요청 처리량 높음 더 높음
latency 안정적 낮은 편
동시 접속 보통 유리

Undertow는 특히 고동시성 상황에서 장점이 나타납니다.

10k concurrent connections
 

이 상황에서는

  • Undertow
  • Netty

같은 이벤트 기반 서버가 유리합니다.


6. 운영 안정성 비교

성능만 보면 Undertow가 좋아 보이지만
실제 운영에서는 다른 요소가 중요합니다.

Tomcat 장점

  • Spring Boot 기본 WAS
  • 레퍼런스 많음
  • 운영 문서 많음
  • 디버깅 쉬움
  • 커뮤니티 매우 큼

운영 안정성 최고
 

Undertow 장점

  • 가벼움
  • 성능 좋음
  • 고동시성 처리 유리

하지만

  • 운영 사례는 Tomcat보다 적음
  • 레퍼런스 상대적으로 적음

7. 실제 Spring Boot 서버에서 체감 차이

일반적인 백엔드 서비스에서는
Tomcat과 Undertow 차이는 생각보다 크지 않습니다.

왜냐하면 대부분 병목은

DB
Redis
검색엔진
파일 IO
외부 API
 

에서 발생하기 때문입니다.

WAS 교체만으로 성능이 극적으로 개선되는 경우는 드뭅니다.
 

8. 어떤 서버를 선택해야 할까

Tomcat 추천 상황

  • 일반 웹 서비스
  • Spring MVC 기반 API 서버
  • 운영 안정성 중요
  • 팀 협업 프로젝트

대부분의 Spring Boot 서비스
 

 


Undertow 추천 상황

  • 경량 API 서버
  • 동시 요청 많음
  • 컨테이너 환경
  • 리소스 절약 중요

API Gateway
Microservice
고동시성 서비스
 

9. Spring Boot 설정 예시

Tomcat → Undertow 변경

implementation("org.springframework.boot:spring-boot-starter-web") {
exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
}

implementation("org.springframework.boot:spring-boot-starter-undertow")
 

10. 결론

Spring Boot 서버 선택을 정리하면 다음과 같습니다.

기준                                                                                        Tomcat                                                     Undertow
안정성 매우 높음 높음
CPU 효율 보통 좋음
메모리 사용 높음 낮음
동시 요청 보통 유리
레퍼런스 매우 많음 적음

따라서

  • 일반적인 Spring Boot 서비스 → Tomcat
  • 경량 고성능 API 서버 → Undertow

라는 선택이 가장 현실적인 기준입니다.


✔ 핵심 요약

Tomcat은 가장 안정적인 선택이고
Undertow는 더 가볍고 효율적인 대안입니다.

대부분의 백엔드 서비스에서는 Tomcat으로도 충분하지만
리소스 효율과 동시성 처리가 중요한 시스템에서는 Undertow가 좋은 선택이 될 수 있습니다.

LIST

+ Recent posts