아파치(Apache)와 톰캣(Tomcat)의 멀티 프로세스/멀티 쓰레드 구조 차이
웹서버와 WAS의 대표적인 예로 Apache HTTP Server와 Apache Tomcat이 있다. 이 둘은 자주 함께 사용되지만, 목적과 동작 방식에는 분명한 차이가 존재한다. 특히 멀티 프로세스/멀티 쓰레드 구조 측면에서 다음과 같이 정리할 수 있다.
아파치(Apache HTTP Server)
역할
- 오픈소스 웹서버 소프트웨어
- HTML, 이미지 등 정적 콘텐츠 처리에 특화
- GET, POST, DELETE 등 HTTP 요청을 받아 결과를 클라이언트에 반환
동작 방식
- 기본 구조: 멀티 프로세스 기반
- 하나의 요청마다 별도의 프로세스를 생성하거나, 자식 프로세스를 여러 개 미리 띄워서 처리
- 확장 구조: 멀티 쓰레드도 가능
- worker, event MPM(Multi-Processing Module)을 사용하면 멀티 쓰레드 기반 동작도 지원
- 요약: 기본은 멀티 프로세스, 설정에 따라 멀티 쓰레드 혼용 가능
톰캣(Apache Tomcat)
역할
- WAS (Web Application Server)
- JSP/Servlet 기반의 동적 웹 애플리케이션 처리
- 주로 Java 웹 애플리케이션을 실행하는 데 사용
- DB와 연동하여 동적인 데이터를 생성 및 반환
동작 방식
- 멀티 쓰레드 기반
- 하나의 프로세스 안에서 요청마다 새로운 쓰레드를 생성하거나, 쓰레드 풀(thread pool)에서 꺼내서 요청 처리
- 높은 성능과 자원 효율성을 위해 멀티 쓰레드 처리 방식 채택
- 요약: 멀티 쓰레드 기반 구조
구조 비교 요약
| 항목 | 아파치(Apache) | 톰캣(Tomcat) |
| 역할 | 웹 서버 (정적 콘텐츠 처리) | WAS (동적 콘텐츠 처리) |
| 주 언어 | C | Java |
| 구조 기본 | 멀티 프로세스 | 멀티 쓰레드 |
| 구조 확장 | 멀티 쓰레드도 지원 (설정 필요) | 쓰레드 풀 기반 요청 처리 |
| 사용 예 | HTML, 이미지 요청 처리 | JSP, Servlet 처리 |
마무리
Apache와 Tomcat은 함께 배포되기도 하지만, 동작 구조는 멀티 프로세스 vs 멀티 쓰레드로 분명히 나뉜다.
- Apache는 안정성과 분산처리에 유리한 멀티 프로세스 구조
- Tomcat은 성능과 자원 효율성이 뛰어난 멀티 쓰레드 구조
둘의 차이를 이해하면 웹 서버와 WAS 구성 및 튜닝에 있어 더욱 효과적인 설계가 가능하다.
'Backend > Java & Spring' 카테고리의 다른 글
| AOP를 활용했던 경험 (0) | 2025.06.13 |
|---|---|
| Maven과 Gradle의 차이점 (1) | 2025.06.12 |
| Spring Security 인증 과정 (0) | 2025.06.10 |
| Spring Bean Life Cycle (0) | 2025.06.03 |
| filter와 interceptor의 차이 (0) | 2025.06.01 |