내부 톰캣 vs 외부 톰캣

내부 톰캣 (Embedded Tomcat)

  • Spring boot에 내장된 톰캣 서버
  • Jar 파일 실행으로 애플리케이션과 함께 시작
  • 별도 설치 불필요, 의존성으로 포함
  • 개발 환경에서는 빠른 테스트 및 배포 가능
  • 설정을 application.properties에서 관리

장점:

  • 배포 간편 -> jar 하나로 실행 완료
  • 개발 생산성 -> 별도 서버 설정 불필요
  • 포트 관리 -> 자동 포트 할당 가능
  • 마이크로서비스 -> 독립적 배포에 최적화
  • 버전 호환 -> 스프링 부트가 호환성 보장

단점:

  • 메모리 사용량 -> 각 앱 마다 톰캣 인스턴스 생성
  • 튜징 제약 -> 세밀한 성능 조정 어려움
  • 모니터링 -> JVM 레벨 모니터링 제한적
  • 확정성 -> 대규모 트래픽 처리에 한계

외부 톰캣 (Standalone Tomcat)

  • 별도 설치된 독립적인 톰캣 서버
  • war 파일을 webapps 디렉토리에 배포
  • 톰캣 서버 설정 파일(server.xml, context.xml) 로 관리
  • 운영 환경에서 세밀한 튜닝 가능
  • 여러 어플리케이션 동시 배포 가능

장점:

  • 성능 튜닝 -> 커넥션 풀, 스레드 등 세밀 조정
  • 리소스 효율 -> 여러 앱이 톰캣 인스턴스 공유
  • 모니터링 -> JMX, 관리 도구 풍부
  • 운영 안정성 -> 검증된 운영 환경

단점:

  • 배포 복잡 -> war 패키징, 서버 의존성
  • 설정 관리 -> 서버와 앱 설정 분리 관리
  • 환경 차이 -> 개발/운영 환경 불일치 가능성
대표적인 외부 톰캣(WAS)

Apache Tomcat
가장 널리 사용되는 오픈소스 서블릿 컨테이너
- 경량화 되어 중소규모 애플리케이션에 적합
- Spring 프레임워크와 궁합이 좋다

상용 WAS
WebLogic (Oracle): 엔터프라이즈급 기능, 클러스터링 강력
WebSphere (IBM): 대기업 환경, 트랜잭션 처리 우수
JEUS (TmaxSoft): 국산 WAS, 금융권에서 많이 사용
JBoss/WildFly (Red Hat): 오픈소스 기반, EJB 지원

클라우드 네이티브
Undertow: JBoss에서 개발, 고성능 비동기 처리
Jetty: Eclipse 재단, 임베디드 환경에 최적화