Spring Boot 지원 기간과 LTS 선택 전략
최종 업데이트: 2026년 7월 26일
Spring Boot에는 Java 21·25처럼 모든 사용자에게 붙는 공통 LTS 라벨이 없습니다. 그렇다고 장기 지원이 전혀 없는 것도 아닙니다. 공식 정책은 오픈소스, 상용 구독, 메이저의 마지막 마이너에 제공되는 엔터프라이즈 지원을 구분합니다. 핵심은 어떤 지원을 기준으로 선택하는가입니다.
결론부터 정리
| 상황 | 권장 선택 |
|---|---|
| 신규 프로젝트 | Spring Boot 4.1을 우선 검토 |
| 현재 4.0을 안정적으로 운영 중 | 최신 4.0 패치 유지 후 4.1 전환 계획 |
| 현재 3.x를 운영 중 | 먼저 최신 3.5로 정리한 뒤 4.x 마이그레이션 |
| Java 17·기존 라이브러리 제약이 큼 | 3.5 유지 기간과 업그레이드 비용을 함께 계산 |
| 장기간 같은 계열의 상용 지원이 필요 | 메이저 마지막 마이너와 엔터프라이즈 지원 계약 검토 |
2026년 7월 26일 현재 공식 문서에 표시된 주요 안정 버전은 Spring Boot 4.1.0, 4.0.7, 3.5.16입니다. 새 프로젝트라면 4.1을 기본 후보로 삼되, 사용하는 데이터베이스 드라이버와 사내 라이브러리까지 함께 검증해야 합니다.
Spring Boot 지원 정책 정확히 이해하기
Spring 공식 지원 정책은 Spring Boot에 대해 다음 기준을 제시합니다.
| 지원 구분 | 공식 최소 기준 |
|---|---|
| 메이저 릴리스 | 최대 3년 |
| 마이너 릴리스 오픈소스 지원 | 최소 13개월 |
| 제품 구독을 통한 마이너 지원 | 최소 25개월 |
| 메이저의 마지막 마이너 | 기존 기간에 추가 5년 엔터프라이즈 지원 |
Spring Boot 3.x의 마지막 마이너인 3.5에는 상용 장기 지원 경로가 추가됩니다. 모든 개발자가 무료로 5년 패치를 받는다는 뜻은 아닙니다. 오픈소스와 유료 엔터프라이즈 지원을 구분해야 합니다.
따라서 다음 두 문장은 모두 부정확합니다.
- “Spring Boot에는 장기 지원이 전혀 없다.”
- “Spring Boot 3.5는 누구나 무료로 쓰는 LTS다.”
더 정확한 표현은 다음과 같습니다.
Spring Boot에는 Java처럼 공통 LTS 라벨은 없지만, 공식 지원 정책과 상용 구독에서는 메이저의 마지막 마이너에 장기 지원 경로가 제공된다.
Spring Boot 4.1·4.0·3.5 비교
| 버전 | 현재 위치 | 추천 대상 | 주의점 |
|---|---|---|---|
| 4.1 | 최신 안정 마이너 | 신규 서비스, 4.x 도입을 준비한 팀 | 서드파티 라이브러리의 4.1 지원 확인 |
| 4.0 | 4.x 첫 마이너 | 이미 4.0으로 운영 중인 서비스 | 4.1로 이동할 유지보수 일정을 잡아야 함 |
| 3.5 | 3.x 마지막 마이너 | 기존 3.x 서비스, 장기 상용 지원 검토 조직 | 4.x 이전을 무기한 미루는 이유로 사용하면 안 됨 |
Spring Boot 4.1
Spring Boot 4.1.0은 2026년 6월 10일 공개됐습니다. Spring gRPC, HTTP 클라이언트 SSRF 완화, 관측성 개선 등이 포함됐습니다. Java 17 이상이 필요하고 Java 26까지 호환되며, 신규 프로젝트에서는 Java 21 또는 25 LTS 조합이 현실적입니다.
Spring Boot 4.0
4.0은 Spring Framework 7, Jakarta EE 11, Jackson 3 등 큰 변화가 시작된 버전입니다. 운영 중이라면 최신 패치를 유지하며 4.1을 검증하면 됩니다. 새 프로젝트에서 특별한 이유 없이 4.0에 고정할 필요는 적습니다.
Spring Boot 3.5
3.5는 3.x의 마지막 마이너입니다. 3.2·3.3·3.4를 사용한다면 최신 3.5로 정리하는 것이 4.x 이전의 좋은 중간 단계입니다. 상용 지원은 마이그레이션을 없애는 것이 아니라 시간을 확보하는 수단입니다.
현재 버전 확인 방법
Gradle 프로젝트에서는 빌드 파일의 플러그인 버전을 먼저 확인합니다.
plugins {
id 'org.springframework.boot' version '4.1.0'
id 'java'
}
실제로 해석된 의존성을 확인하려면 Wrapper를 사용합니다.
./gradlew dependencyInsight \
--dependency org.springframework.boot:spring-boot \
--configuration runtimeClasspath
Maven은 부모 POM 또는 BOM 버전을 확인합니다.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>4.1.0</version>
<relativePath/>
</parent>
CI에서 빌드 도구와 Java 버전도 함께 기록해 두는 것이 좋습니다.
java -version
./gradlew --version
./gradlew clean test
안전한 업그레이드 순서
- 현재 마이너의 최신 패치 버전으로 먼저 올립니다.
- 폐기 예정 API와 설정 경고를 제거합니다.
- Java, 빌드·테스트 도구의 요구 버전을 맞춥니다.
- 다음 마이너로 이동해 DB, JSON, 보안 필터와 전체 테스트를 확인합니다.
- 운영과 비슷한 환경에서 부하·롤백 테스트를 수행합니다.
설정 키 변경을 찾을 때 spring-boot-properties-migrator를 임시로 사용할 수 있습니다.
runtimeOnly 'org.springframework.boot:spring-boot-properties-migrator'
애플리케이션을 실행해 경고를 수정한 뒤에는 이 의존성을 제거해야 합니다. 계속 넣어두는 운영 의존성이 아니라 업그레이드 도구이기 때문입니다.
실무에서 버전을 선택하는 방식
새 서비스는 최신 안정 마이너에서 시작하는 편이 관리하기 쉽습니다. 반면 사내 라이브러리, 특정 WAS, 보안 인증 모듈에 묶인 시스템은 공급사 인증 여부가 우선입니다.
팀은 다음 질문에 답할 수 있어야 합니다.
- 정기적으로 새 마이너를 검증할 테스트 자동화가 있는가?
- 보안 패치가 끝난 버전을 누가 발견하고 알릴 것인가?
- 실패했을 때 이전 컨테이너 이미지로 즉시 돌아갈 수 있는가?
- 상용 장기 지원 비용이 직접 마이그레이션하는 비용보다 낮은가?
이 질문에 답하지 않고 “LTS니까 안전하다”라고 결정하면 지원 기간이 길어도 운영 위험은 줄어들지 않습니다.
자주 하는 실수
- 모든 마이너가 정확히 12개월만 지원된다고 단정합니다. 공식 기준은 최소 13개월입니다.
- 3.5를 누구나 무료로 쓰는 LTS라고 부릅니다. 오픈소스와 상용 지원은 다릅니다.
- Java·Gradle·Tomcat·APM 호환성을 보지 않고 Spring Boot만 올립니다.
- 오래된 3.x에서 4.1로 바로 이동합니다. 최신 3.5를 거치면 문제를 분리하기 쉽습니다.
핵심 요약
- Spring Boot에는 Java와 같은 공통 LTS 라벨이 없습니다.
- Spring Boot 마이너의 오픈소스 지원은 공식적으로 최소 13개월입니다.
- 제품 구독 지원은 최소 25개월이며, 메이저의 마지막 마이너에는 추가 5년 엔터프라이즈 지원이 붙습니다.
- 신규 프로젝트는 Spring Boot 4.1을 우선 검토합니다.
- 기존 3.x는 최신 3.5를 거쳐 4.x로 이동하는 편이 안전합니다.
- 지원 기간보다 정기 업그레이드가 가능한 테스트와 운영 체계를 만드는 것이 중요합니다.
마무리
Spring Boot 버전을 고를 때 “LTS가 무엇인가”만 묻는다면 절반만 보는 것입니다. 실제로 필요한 것은 현재 버전의 지원 종류, 다음 업그레이드 시점, 자동화된 테스트와 장애 시 롤백 계획입니다.
신규 프로젝트는 최신 안정 버전에서 시작하고, 기존 프로젝트는 지원이 끝나기 전에 작은 단계로 계속 이동하는 방식이 가장 안전합니다. 장기 상용 지원은 업그레이드를 하지 않아도 된다는 면허가 아니라, 중요한 시스템의 전환 시간을 확보하는 선택지로 이해해야 합니다.
함께 보면 좋은 글:
공식 자료:
'Programming > Spring Boot' 카테고리의 다른 글
| Spring Boot @ConfigurationProperties 검증: 잘못된 운영 설정을 시작 단계에서 차단하기 (0) | 2026.07.31 |
|---|---|
| Spring Boot Graceful Shutdown 설정: 배포 중 요청을 안전하게 종료하는 방법 (0) | 2026.07.28 |
| Spring Boot JPA N+1 문제 해결하기 (0) | 2026.06.30 |
| Spring Boot에서 REST API 응답 구조를 일관되게 설계하는 방법 (0) | 2026.06.25 |
| Spring Boot REST API 에러 응답 설계: HTTP 상태코드부터 ProblemDetail까지 (0) | 2026.06.10 |