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
'SpringBoot > 스프링 부트 프로젝트 생성' 카테고리의 다른 글
application.properties vs application.yml (0) | 2025.04.14 |
---|---|
프로젝트 구조 이해 (0) | 2025.04.14 |
Spring Initializr 사용법 (0) | 2025.04.14 |