본문 바로가기
SpringBoot/스프링 부트 프로젝트 생성

내장 톰캣 이해하기

by DEVLIB 2025. 4. 14.
728x90

내장 톰캣(Embedded Tomcat)이란?

정의

내장 톰캣이란, **웹 서버(Tomcat)**를 따로 설치하지 않아도, Spring Boot 애플리케이션 내부에 포함되어 함께 실행되는 구조를 말합니다.

한 줄 요약:
스프링 부트는 톰캣을 프로젝트 안에 내장시켜서,
그냥 JAR 실행만으로도 웹 서버가 작동되도록 합니다.


동작 방식

기존의 전통적인 웹 애플리케이션은 WAR 파일을 만들고 외부 톰캣에 배포해야 했습니다:

[WAR 파일] → [톰캣 설치 폴더]에 복사 → [톰캣 실행] → 웹 애플리케이션 동작

 

하지만, 스프링 부트는 다음과 같은 흐름을 탑니다:

[Spring Boot App] + [내장 Tomcat] → JAR 파일 생성 → java -jar로 실행

 

spring-boot-starter-web을 의존성에 추가하면 자동으로 톰캣이 포함됩니다.


JAR vs WAR 구조

항목 JAR (내장 톰캣) WAR (외부 톰캣 배포)
서버 프로젝트 안에 포함 별도 설치 필요
실행 방식 java -jar 한 줄 WAS에 배포
설정 복잡도 낮음 높음
유연성 독립 실행형 서버 종속적
실무 사용 마이크로서비스 등에서 선호 기존 레거시 시스템 호환성 ↑

현재 스프링 부트의 표준 배포 방식은 JAR + 내장 톰캣입니다.


실제 동작 확인

1. build.gradle에 웹 스타터 추가

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

2. 실행

./gradlew bootRun

 

혹은 빌드 후:

java -jar build/libs/demo-0.0.1-SNAPSHOT.jar

3. 결과

  • 애플리케이션이 실행되며 내장 톰캣이 8080포트에서 기동
  • 브라우저에서 http://localhost:8080/ 확인 가능

포트 변경 예시

application.yml 또는 application.properties에서 설정 변경 가능:

server:
  port: 9090
server.port=9090

내장 톰캣 vs 외부 WAS 요약

기준 내장 톰캣 (Spring Boot Default) 외부 톰캣 (Spring Legacy)
장점 설정 단순, 빠른 배포, 독립성 ↑ 서버 관리 용이, 대규모 프로젝트 호환
단점 복수 앱 구동 시 포트 충돌 가능 설정 복잡, 설치 필요
추천 마이크로서비스, 클라우드 환경 전통적 기업 환경, 다중 WAR 관리 필요시

마무리 정리

  • 스프링 부트는 톰캣을 애플리케이션 안에 내장시켜서 따로 설치할 필요 없음
  • 기본 포트는 8080, 설정으로 변경 가능
  • JAR 파일 한 개로 실행 가능 → "Java로 만든 독립 실행형 웹 서버"
  • 실무에서는 CI/CD, Docker, AWS 배포에도 매우 유리
LIST