2025-11-01
오늘 배운 것
✅ Tomcat: 전통적인 자바 웹 서버
Servlet 기반의 HTTP 요청/응답 처리
스프링 부트의 기본 내장 WAS (Web Application Server)
주요 특징
Servlet + JSP표준 지원- 블로킹 IO (Thread-per-request) 방식
- Java EE 호환성 우수
- Spring MVC와 찰떡궁합
⚙️ Netty: 비동기 이벤트 기반 네트워크 프레임워크
고성능 네트워크 애플리케이션을 위한 비동기 프레임워크
주요 특징
- TCP/UDP 등 저수준 네트워크 처리 가능
- 논블로킹 + 이벤트 드리븐 구조
- Spring WebFlux, gRPC, GateWay 등에서 사용
- HTTP 외 다양한 프로토콜 지원
🔁 구조/기술 비교
| 항목 | Tomcat | Netty |
|---|---|---|
| 기술 스택 | Servlet 기반 | Java NIO 기반 |
| IO 모델 | 블로킹 IO | 논블로킹 IO (NIO) |
| 요청 처리 | 스레드당 요청 1개 | 이벤트 루프 기반 처리 |
| 표준 준수 | Java EE / Servlet 지원 | 비표준, 직접 구현 |
| 사용 예 | Spring MVC, JSP | WebFlux, gRPC, Netty 서버 직접 구현 |
| 성능 | 단순 구조에선 안정적 | 고성능 실시간 처리에 적합 |
| 학습 난이도 | 낮음 (Spring 기본 내장) | 높음 (커스터마이징 용도 많음) |
📦 Spring과의 관계
| 스프링 구조 | 기본 서버 |
|---|---|
| Spring MVC | Tomcat (블로킹) |
| Spring WebFlux | Netty (논블로킹) |
Spring WebFlux는 Servlet 스펙 없이 Netty 기반 비동기 처리 가능
🎯 언제 어떤 걸 선택할까?
| 상황 | 추천 서버 |
|---|---|
| 기존 웹 MVC, JSP 기반 시스템 | ✅ Tomcat |
| REST API + 고성능 실시간 처리 | ✅ Netty |
| 많은 요청, 낮은 지연 시간 | ✅ Netty (e.g. 게임 서버, 채팅 서버) |
| Spring 기본 설정 사용 | ✅ Tomcat (내장 WAS) |