๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

[Spring Boot] ๋ฒ„์ „ ์ฒด๊ณ„ Semantic Versioning ๋ณธ๋ฌธ

Web (back-end)/Spring

[Spring Boot] ๋ฒ„์ „ ์ฒด๊ณ„ Semantic Versioning

9taetae9 2025. 2. 27. 14:19
728x90

Semantic Versioning(SemVer)์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ฒด๊ณ„์ ์ธ ๊ทœ์น™์œผ๋กœ, MAJOR.MINOR.PATCH ํ˜•์‹์œผ๋กœ ๋ฒ„์ „์„ ๊ตฌ์„ฑํ•œ๋‹ค. ์ด ์ฒด๊ณ„๋Š” API๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ช…ํ™•ํžˆ ์ „๋‹ฌํ•˜๋ฉฐ, Spring Boot ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋„ ํ•ต์‹ฌ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ „๋žต์œผ๋กœ ์ฑ„ํƒ๋˜์—ˆ๋‹ค.

Basic syntax of semantic versioning

 

Semantic Versioning ๊ธฐ๋ณธ ํ˜•์‹

MAJOR.MINOR.PATCH
MAJOR ๋ฒ„์ „(์ฃผ ๋ฒ„์ „): ๊ธฐ์กด ๊ธฐ๋Šฅ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆฌ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋  ๋•Œ ์ฆ๊ฐ€(์˜ˆ: 1.x.x → 2.0.0)
MINOR ๋ฒ„์ „(๋ถ€ ๋ฒ„์ „): ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋  ๋•Œ ์ฆ๊ฐ€(์˜ˆ: 2.1.x → 2.2.0)
PATCH ๋ฒ„์ „(ํŒจ์น˜ ๋ฒ„์ „): ๋ฒ„๊ทธ ์ˆ˜์ • ๋“ฑ ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์ด ๋‚ด๋ถ€ ๊ฐœ์„ ์ด ์žˆ์„ ๋•Œ ์ฆ๊ฐ€(์˜ˆ: 2.2.0 → 2.2.1)

๋ณ€๊ฒฝ ์œ ํ˜• ์˜ˆ์‹œ ๋ฒ„์ „ ์ด๋™ ์˜ํ–ฅ๋„ ์—…๋ฐ์ดํŠธ ์ „๋žต
PATCH ์—…๋ฐ์ดํŠธ 3.4.0 → 3.4.1 ๋‚ฎ์Œ ์ฆ‰์‹œ ์ ์šฉ, ํ…Œ์ŠคํŠธ ํ›„ ์ ์šฉ
MINOR ์—…๋ฐ์ดํŠธ 3.4 → 3.5 ์ค‘๊ฐ„ ํ…Œ์ŠคํŠธ ํ›„ ์ ์šฉ
MAJOR ์—…๋ฐ์ดํŠธ 2.7 → 3.0 ๋†’์Œ ์•„ํ‚คํ…์ฒ˜ ๊ฒ€ํ†  ํ•„์ˆ˜

 

๋ฒ„์ „ 

1. ์ฃผ ๋ฒ„์ „ (MAJOR)

์ฃผ ๋ฒ„์ „์€ API ํ˜ธํ™˜์„ฑ์ด ๊นจ์ง€๋Š” ํฐ ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ ์ฆ๊ฐ€ํ•œ๋‹ค. ์ด๋Š” ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํฌํ•จํ•œ๋‹ค.

์˜ˆ์‹œ: WebSecurityConfigurerAdapter Deprecated

https://github.com/spring-projects/spring-security/issues/10822

 

Deprecate WebSecurityConfigurerAdapter · Issue #10822 · spring-projects/spring-security

With the following issues closed we've added the ability to configure the security of an application without needing the WebSecurityConfigurerAdapter. Related issues: #8804 #8978 #10040 #10138 Back...

github.com

 

์œ„ issue๋ฅผ ๋ณด๋ฉด Spring Security 5.7.0-M2(2022๋…„ 2์›” 22์ผ ๋ฐฐํฌ)์—์„œ WebSecurityConfigurerAdapter๊ฐ€ deprecated ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค. ์ดํ›„ ์ฃผ(MAJOR) ๋ฒ„์ „ 6.0.0์—์„œ ํ•ด๋‹น ํด๋ž˜์Šค๋Š” ์™„์ „ํžˆ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” deprecation ๊ฒฝ๊ณ ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ฃผ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ ์ด์ „ ์ ์ง„์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ฉฐ ๋Œ€๋น„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ Spring Security๋Š” 5.7์—์„œ ๋ฐ”๋กœ 6.0์œผ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ณ , ๋ฒ„์ „ 5.8์„ ์ œ๊ณตํ–ˆ๋‹ค.

Spring Boot 3.0 uses Spring Security 6.0. The Spring Security team have released Spring Security 5.8 to simplify upgrading to Spring Security 6.0.

์ด๋Š” ํฐ ๋ณ€ํ™”๋ฅผ ์ ์ง„์ ์œผ๋กœ ๋„์ž…ํ•˜๊ธฐ ์œ„ํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์ด๋ผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ๋ถ€ ๋ฒ„์ „ (MINOR)

๋ถ€ ๋ฒ„์ „์€ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์ฆ๊ฐ€ํ•œ๋‹ค. ๊ธฐ์กด ์ฝ”๋“œ๋Š” ์ˆ˜์ • ์—†์ด ๊ณ„์† ๋™์ž‘ํ•œ๋‹ค.

์˜ˆ์‹œ: Spring Boot Version 3.3.x → 3.4.0

Spring Boot 3.4.0 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์‚ฌํ•ญ๋“ค์ด ๋ณ€๊ฒฝ ๋˜์—ˆ๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.4-Release-Notes

Spring Boot 3.4.0์—์„œ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋“ค์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”๋ฐ, MockMvcTester๋ผ๋Š” ์ƒˆ๋กœ์šด ํ…Œ์ŠคํŠธ ๋„๊ตฌ๊ฐ€ ๋„์ž…๋˜์—ˆ๊ณ , ์—ฌ๋Ÿฌ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š์œผ๋ฏ€๋กœ MINOR ๋ฒ„์ „์ด ์ฆ๊ฐ€ํ•œ๋‹ค๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ๋ฌธ์„œ์—์„œ "Deprecations from Spring Boot 3.2" ์„น์…˜์„ ๋ณด๋ฉด:

"Classes, methods, and properties that were deprecated in Spring Boot 3.2 and marked for removal in 3.4 have been removed in this release."

3.2์—์„œ deprecated ๋˜๊ณ  "3.4์—์„œ ์ œ๊ฑฐ๋  ๊ฒƒ"์ด๋ผ๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ํ‘œ์‹œ๋œ ๊ธฐ๋Šฅ๋“ค์ด 3.4(๋ถ€๋ฒ„์ „ ์—…๋ฐ์ดํŠธ)์—์„œ ์‹ค์ œ๋กœ ์ œ๊ฑฐ๋˜์—ˆ์Œ์„ ์•Œ๋ ค์ฃผ๊ณ  ์žˆ๋‹ค.

 

์ด๋ฅผ ํ†ตํ•ด ์ผ๋ฐ˜์ ์œผ๋กœ ๋ช…์‹œ์ ์ธ ์ œ๊ฑฐ ์‹œ์ ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์€ deprecated ๊ธฐ๋Šฅ์€ ๋ณดํ†ต ๋‹ค์Œ ์ฃผ๋ฒ„์ „์—์„œ ์ œ๊ฑฐ๋˜์ง€๋งŒ, "X.Y ๋ฒ„์ „์—์„œ ์ œ๊ฑฐ ์˜ˆ์ •"์œผ๋กœ ๋ช…ํ™•ํžˆ ํ‘œ์‹œ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ถ€๋ฒ„์ „์—์„œ๋„ ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

How upgrading from Spring Boot 3.2.5 to 3.3.1 broke our object mapper

After upgrading Spring Boot from version 3.2.5 to 3.3.1 we started to have a serialization issue with the Optional class. Check how to fix it in this post

joaovieira.ca

์œ„ ๋งํฌ์˜ ๊ธ€์—์„œ ์ž‘์„ฑ์ž๋Š” Spring Boot 3.2.5์—์„œ 3.3.1๋กœ์˜ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ MINOR ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ(3.2→3.3)์ด๋ฏ€๋กœ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋Š” ๋ณ€ํ™”๊ฐ€ ์—†์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” Jackson Databind ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ 2.15.4์—์„œ 2.17.1๋กœ ์—…๋ฐ์ดํŠธ๋˜๋ฉด์„œ Optional ํƒ€์ž…์˜ ์ง๋ ฌํ™” ๋ฐฉ์‹์ด ๋ณ€๊ฒฝ๋˜์–ด ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. 

์œ„ ์‚ฌ๋ก€๋ฅผ ๋ณด์•˜์„๋•Œ, MINOR ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋„ ์ข…์† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ณ€๊ฒฝ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ณ , ์ข…์† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ณ€๊ฒฝ์ด ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€(MINOR) ๋ฒ„์ „ ๋˜ํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ ๋ณ€๊ฒฝ ๋‚ด์—ญ(changelog)์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 

 

3. ํŒจ์น˜ ๋ฒ„์ „ (PATCH)

ํŒจ์น˜ ๋ฒ„์ „์€ ๋ฒ„๊ทธ ์ˆ˜์ •, ๋ณด์•ˆ ํŒจ์น˜, ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ๊ฐ™์€ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ์ˆ˜์ •์‚ฌํ•ญ์— ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ์‹œ: 3.4.0 → 3.4.1 

Spring Boot 3.4.1 patch ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ ๋…ธํŠธ๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์‚ฌํ•ญ๋“ค์ด ๋ณ€๊ฒฝ ๋˜์—ˆ๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

https://github.com/spring-projects/spring-boot/releases/tag/v3.4.1

 

Release v3.4.1 · spring-projects/spring-boot

๐Ÿž Bug Fixes KafkaProperties fail to build SSL properties when the bundle name is an empty string #43563 Diagnostics are poor when property resolution throws a ConversionFailedException #43559 Spri...

github.com

3.1. ๋ฒ„๊ทธ ์ˆ˜์ •

 

์ด๋Ÿฌํ•œ ์ˆ˜์ •์€ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด์ง€, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

3.2 ๋ฌธ์„œ ๊ฐœ์„ 

๋ฌธ์„œ ์ˆ˜์ •์€ API๋‚˜ ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์ด ์‚ฌ์šฉ์ž ์ดํ•ด๋„๋ฅผ ๋†’์ธ๋‹ค.

3.3 ์˜์กด์„ฑ ์—…๊ทธ๋ ˆ์ด๋“œ

ํŒจ์น˜ ๋ฒ„์ „์—์„œ์˜ ์˜์กด์„ฑ ์—…๊ทธ๋ ˆ์ด๋“œ๋Š” ์ฃผ๋กœ ๋™์ผํ•œ major,minor ๋ฒ„์ „ ๋‚ด์—์„œ์˜ ํŒจ์น˜ ์—…๋ฐ์ดํŠธ๋‹ค. ์ด๋Š” ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•˜๋ฉด์„œ ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.

ํŒจ์น˜ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด ๋ฒ„๊ทธ ์ˆ˜์ •, ๋ฌธ์„œ ๊ฐœ์„ , ์˜์กด์„  ์—…๊ทธ๋ ˆ์ด๋“œ ๋“ฑ์„ ์•ˆ์ „ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ์ทจ์•ฝ์  ๋“ฑ์˜ ์ค‘์š” ๊ฐœ์„  ์‚ฌํ•ญ์ด ์กด์žฌํ•œ๋‹ค๋ฉด ํ™•์ธ ํ›„ ์ตœ์‹  ํŒจ์น˜ ๋ฒ„์ „์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค.

 

 

์ฐธ๊ณ  ์ž๋ฃŒ

 

Semantic Versioning 2.0.0

Semantic Versioning spec and website

semver.org

 

 

Spring Boot

 

spring.io

 

 

About semantic versioning | npm Docs

Documentation for the npm registry, website, and command-line interface

docs.npmjs.com

https://techblog.lycorp.co.jp/ko/how-to-migrate-to-spring-boot-3

 

์‹ค์ „! Spring Boot 3 ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋“ค์–ด๊ฐ€๋ฉฐ ์•ˆ๋…•ํ•˜์„ธ์š”. LINE Plus์—์„œ ํƒœ๊ตญ LINE BK ์ฑ„๋„ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ๋ฐ ์šด์˜ ์—…๋ฌด๋ฅผ ๋งก๊ณ  ์žˆ๋Š” ์ด์„์žฌ์ž…๋‹ˆ๋‹ค. LINE BK์—์„œ๋Š” ์ง€๋‚œ 9์›”์— LINE BK ๋ณดํ—˜ ์ค‘๊ฐœ ์„œ...

techblog.lycorp.co.jp

 

 

728x90