소프트웨어 릴리즈와 버전 이해하기

StrayCat·2026년 2월 23일

CS지식

목록 보기
8/32

Spring Framework나 Java 등을 사용하다 보면 버전 옆에 낯선 용어들이 붙어 있는 걸 자주 보게 됩니다. 이 용어들은 소프트웨어의 개발 및 배포 단계를 나타내는 것으로, 업계 전반에서 공통적으로 사용하는 개념입니다.


📦 소프트웨어 릴리즈 단계 이해하기

소프트웨어는 개발 → 테스트 → 배포의 큰 흐름을 가지고 있습니다. 각 단계마다 붙는 이름이 다릅니다.

개발 단계

🔧 SNAPSHOT

"아직 개발 중인 버전이고 언제든 바뀔 수 있습니다."

spring-boot-3.5.0-SNAPSHOT
  • 현재 활발히 개발 중인 최신 코드를 빌드한 버전
  • 기능이 수시로 추가/변경/삭제될 수 있음
  • Maven/Gradle이 해당 버전을 캐시하지 않고 매번 새로 다운로드
  • ⚠️ 실서비스(Production)에는 절대 사용 금지

테스트 단계

🧪 Alpha

"주요 기능 개발은 끝났지만, 아직 마감이 완벽하지 않습니다."

  • 내부 테스트 단계, 버그가 많음
  • 외부 공개가 제한적인 경우가 많음

🧪 Beta

"기능은 완성됐고, 피드백을 받고 싶은 상태입니다."

  • 외부 사용자에게 공개하여 피드백 수집
  • 여전히 버그가 있을 수 있음

🧪 RC (Release Candidate)

"이번 버전이 최종 후보입니다. 치명적 버그가 없는 경우 이대로 출시합니다."

spring-boot-3.3.0-RC1
spring-boot-3.3.0-RC2  ← 마지막 RC 통과 후 GA로 이동
  • GA 직전의 최종 검증 단계
  • 기능 추가는 없고 버그 수정만 진행
  • 개발자들이 사전 테스트 용도로 써볼 수 있음

출시 이후

✅ GA (General Availability)

"정식 출시 버전입니다. 이제 모두가 사용할 수 있습니다."

  • 가장 중요한 단계, 상용 서비스에 사용하는 버전
  • 충분한 테스트를 거쳐 안정성이 검증된 상태
  • 보안 패치 및 버그 수정이 지속적으로 제공됨

✅ CURRENT

"지금 이 시점에서 가장 권장하는 버전입니다."

  • GA 버전들 중에서도 공식적으로 가장 추천하는 최신 안정 버전을 가리킵니다.
Spring Boot 버전 목록 예시:
3.4.3 (CURRENT)  ← 지금 당장 시작한다면 이것을 사용하는것을 권장
3.3.9            ← 아직 지원은 되지만 CURRENT는 아님
3.2.x            ← 곧 지원 종료 예정
  • LTS와는 다르게, 시간이 지나면 다음 버전으로 CURRENT 타이틀이 넘어갑니다
  • "새 프로젝트를 시작한다면 대체로 이 버전"이라고 보시면 됩니다

🏆 LTS (Long-Term Support)

"이 버전은 장기간 지원합니다."

Java 8, Java 11, Java 17, Java 21  ← 모두 LTS 버전
Spring Boot 3.x  ← LTS 트랙
  • 일반 GA 버전보다 훨씬 긴 기간 동안 보안 패치, 버그 수정 제공
  • 기업 환경에서 특히 선호하는 이유가 여기 있음
  • 빠르게 바뀌는 최신 기능보다 안정성과 예측 가능성이 중요할 때
구분일반 버전 지원LTS 지원
Java (OpenJDK 기준)6개월8년 +
Node.js6개월30개월

시멘틱 버저닝 (Semantic Versioning, SemVer)

버전 번호 X.Y.Z의 각 자리는 다음을 의미합니다.

  3   .   3   .   6
  ↑       ↑       ↑
MAJOR   MINOR   PATCH

MAJOR (주 버전)

  • 하위 호환이 깨지는 큰 변화가 있을 때 올라갑니다
  • 기존 코드가 그대로 동작하지 않을 수 있음
  • 예: Spring Boot 2.x → 3.x 마이그레이션 시 Java 최소 버전, 패키지명 등 대규모 변경 발생

MINOR (부 버전)

  • 하위 호환을 유지하면서 새로운 기능이 추가될 때 올라갑니다
  • 기존 코드는 그대로 동작하면서 새 기능을 쓸 수 있음
  • 예: 3.2.x → 3.3.x 업그레이드는 비교적 안전

PATCH (패치 버전)

  • 버그 수정, 보안 패치 등 작은 수정만 있을 때 올라갑니다
  • 기능 변화 없이 안정성만 높아짐
  • 예: 3.3.5 → 3.3.6은 거의 부담 없이 업그레이드 가능

어디까지 업그레이도 해도 괜찮을까?

PATCH 업그레이드  →  거의 항상 안전 ✅
MINOR 업그레이드  →  대부분 안전, 릴리즈 노트 확인 권장 🔍
MAJOR 업그레이드  →  마이그레이션 가이드 필독, 충분한 테스트 필요 ⚠️

PATCH는 자주, MINOR는 신중하게, MAJOR는 프로젝트 일정을 잡고 계획적으로 진행하는 것이 일반적입니다.


현업에선 어떤 버전을 사용해야 할까?

상황권장 버전
실서비스 (Production)GA, 가능하면 LTS
신기술 미리 사용해보기RC
기여 (Contributing) 또는 최신 기능 탐색SNAPSHOT
profile
알면 좋은 것보단 잊어버리기 싫은 것들을 기록합니다.

0개의 댓글