๐ค ์ํํธ์จ์ด ๋ฒ์ ๊ด๋ฆฌ
์ํํธ์จ์ด ๊ณต๊ธ๊ธฐ์ ์ ๊ฒฝ์ฐ, ํ์ ์ ํ์ ๋ณ๊ฒฝํ์ง ์๊ณ ๊ธฐ๋ฅ์ ํฅ์ํ๊ฑฐ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ์ํํธ์จ์ด ๋ฒ์ ์ ์ฌ์ฉํ๋ค.
์๊ฐ์ด ์ง๋๋ฉด์ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ์ -> ๊ฐ๋ฐ์๋ ๋ฒ๊ทธ๋ฅผ ์์ , ์ ๋ฐ์ดํธ, ์ ๋ฒ์ ๊ฐ๋ฐํ๋ฉด ์ํํธ์จ์ด ํญ์ด ๋์ด์ง๋ค.
๋ฐ๋ผ์ ์ํํธ์จ์ด ๋ฒ์ ๊ด๋ฆฌ ( Software Versioning )์ ์ ์ ๋ถ๋ถ์์ ํ์์ ์ด๋ค.
์ฌ์ฉ์๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์๊ฐ ์ํํธ์จ์ด๋ฅผ ์ต์ ์ํ๋ก ๊ด๋ฆฌํ๊ธฐ๋ฅผ ๊ธฐ๋ํ๊ณ , ์ธ์ ์ด๋ค ์ ๋ฐ์ดํธ๊ฐ ์ถ์๋๋์ง ์ฒด๊ณ์ ์ผ๋ก ์ดํดํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋ค. -> ์ํํธ์จ์ด ๊ณต๊ธ๊ธฐ์ ์ ๋ฒ์ ๊ด๋ฆฌ ์ค์์ฑ
๊ณต๊ธ๊ธฐ์ ์ ์ํํธ์จ์ด ๋ฒ์ ์ ์ถ์ ๊ด๋ฆฌ -> ํ์ ์ ๋ฐ์ดํธ์ ๋ถ์ฐจ์ ์ธ ์ ๋ฐ์ดํธ ๋ถ๋ฆฌ -> ํน์ ๊ธฐ๋ฅ์ ๊ฐ์กฐ or ๋ถ๋ฅํ๋ค.
๋ํ ๊ณ ๊ฐ์ด ์ฌ์ฉํ๋ ๋ฒ์ ์ ๋ณด๋ฅผ ์ถ์ ๊ด๋ฆฌํ๋ฉด ์ต์ ์ํํธ์จ์ด ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ณ ๊ฐ์ ํ์ ํ๊ณ ์ ๋ฐ์ดํธํด์ผ ํ ๊ณ ๊ฐ์ ๊ตฌ๋ถํ ์ ์๋ ์ด์ ์ด ์๋ค.
์ํํธ์จ์ด ๋ฒ์ ๊ด๋ฆฌ๋ ์ํํธ์จ์ด ๊ธฐ์ ์์ ์ถ์ํ๋ ๋ค์ํ ์ํํธ์จ์ด ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค.
์ถ์๋ ์ํํธ์จ์ด๋ ๋ฒ์ ๋ณ๋ก ์ํํธ์จ์ด ๋ฒ์ ๋ฒํธ๋ฅผ ๋ถ์ฌ๋ฐ๋๋ค.
โ ์ํํธ์จ์ด ๋ฒ์ ์์ฑ
์ํํธ์จ์ด ๋ฒ์ ์์ฑ ( Software Versioning )์ ์ปดํจํฐ ์ํํธ์จ์ด์ ํน์ ์ํ์ ๋ํ ์ ์ผํ ๋ฒ์ ์ด๋ฆ / ๋ฒ์ ๋ฒํธ๋ฅผ ๊ฒฐ์ ํ๋ ๊ณผ์ .
์๋กญ๊ฒ ์ํํธ์จ์ด๊ฐ ๊ฐ๋ฐ๋๋ฉด ์ด๋ค ๋ฒํธ๋ ์ฆ๊ฐํ์ฌ ๊ฒฐ์ ํ๋ค.
์ธ์ธํ ๊ด๋ฆฌ๋ฅผ ์ํด ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ๊ฐ ์ฌ์ฉ๋๋ค.
โ ๋ฒ์ ๋ฒํธ๋ ์ด๋ป๊ฒ ๋ถ์ฌ๋ฐ๋๊ฐ?
๋ฒ์ ์ด๋ฆ์๋ ์ซ์๊ฐ ํ ๋น๋๋ฉด ๋ฒ์ ์์๋ฅผ ํ์ํ๋ ํ์ค ์์คํ ์ด ์๋ค.
โ ์ํํธ์จ์ด ๋ฒ์ ์ด๋ฆ์ ์ด๋ป๊ฒ ๋ง๋๋๊ฐ?
๊ธฐ์ ๋ง๋ค ์ํํธ์จ์ด ์ด๋ฆ์ ๋ง๋๋ ๋ฐ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
์๋ฉํฑ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ช ๋ช ์์คํ ์ด๋ค.
์ด๋ค ๋ฐฉ๋ฒ์ ์ ํํํ๋ ํ ๊ฐ์ง ๋ฒํธ ์ง์ ๋ฐฉ๋ฒ์ ๊ณ ์ํ์ฌ ์ด๋ฅผ ํตํด ๊ธฐ์ ์ ์์คํ ์ ์ง์์ ์ฐํ๊ฒ ๊ด๋ฆฌํ๊ณ , ์ฌ์ฉ์๋ ํน์ ์ํํธ์จ์ด์ ์ ๋ฐ์ดํธ์ ์ถ์ ์ ๋ณด๋ฅผ ์ถ์ ํ๋ค.
- ์ํํธ์จ์ด ๋ฒ์ ๋ฒํธ๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ๋ค - |
1. ์๋งจํฑ ๋ฒํธ ์ง์ - '๋ฉ์ด์ , ๋ง์ด๋, ํจ์น' ๊ธฐ๋ฐ์ 3์๋ฆฌ ๋ฒํธ ์ง์ ๊ธฐ๋ฒ |
2. ์ถ์ ๋ ์ง - ์ํํธ์จ์ด ๋ฒ์ ๋ฒํธ๋ฅผ ์ถ์ ๋ ์ง๋ก ํ๋ค. ( ex) 20.06 - 2020๋ 6์ ) |
3. ๋จํญ ๋ฒํธ ์ง์ |
4. ์์ซ์ ์ฝ๋ |
5. ์์ฐจ ๋ฒํธ ์ง์ |
๐ค ์๋งจํฑ ๋ฒ์ ๊ด๋ฆฌ = ์ ์์ ๋ฒ์ ๊ด๋ฆฌ
์๋งจํฑ ๋ฒ์ ๊ด๋ฆฌ ( Semantic Versioning )๋ ์ํํธ์จ์ด ๋ฒ์ ๋ฒํธ๋ฅผ ๋งค๊ธฐ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
์ด ๋ฐฉ๋ฒ์ '๋งค์ด์ , ๋ง์ด๋, ํจ์น' ์์๋ฅผ ๋ฐ๋ผ ์ํํธ์จ์ด ๋ฒ์ ๋ณ๋ก 3๊ฐ์ ์ซ์๋ฅผ ์ฌ์ฉํ๋ค.
Major.Minor.Patch ๋๋ Major.Minor.Patch+Build |
์์ด์ , ๋ง์ด๋, ํจ์น ์ ๋ฐ์ดํธ๊ฐ ์์ ๋๋ง๋ค ํด๋น ์ซ์๊ฐ ์ปค์ง๋ค.
๋ฉ์ด์ ๋ฒ์ ( Major )๋ณ๊ฒฝ ์ฌํญ | ํธํ๋์ง ์๋ API ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ด๋ จ. |
๋ง์ด๋ ๋ฒ์ ( Minor )๋ณ๊ฒฝ ์ฌํญ | ์ด์ ๋ฒ์ ๊ณผ ํธํ๋๋ ๋ฐฉ์์ผ๋ก ์ ๊ธฐ๋ฅ์ ์ถ๊ฐ. |
ํจ์น ๋ฒ์ ( Patch ) ๋ณ๊ฒฝ ์ฌํญ | ์ด์ ๋ฒ์ ๊ณผ ํธํ๋๋ ๋ฐฉ์์ผ๋ก ๋ฒ๊ทธ ์์ . |
๋ฒ์ ๋ฒํธ๋ ์ ๋ฒ์ ์ ์ง์ ํ๋ ๊ณผ์ ์์ ๋ณ๊ฒฝ๋ ์ ํ์ ๋ฐ๋ผ ํ ์๋ฆฌ์ฉ ์ฆ๊ฐํ๋ค.
ex) ์ํํธ์จ์ด ๋ฒ์ 1.3.1
- ํด๋น ์ํํธ์จ์ด๊ฐ ์ฒซ ๋ฉ์ด์ ๋ฒ์ ex) Major 1
- 3๊ฐ์ง ์ถ๊ฐ ๊ธฐ๋ฅ์ด ๋ํด์ง ex) Minor 3
- ํ ๋ฒ์ ํจ์น ์์ ์ด ์ด๋ค์ง. ex) Patch 1
๊ฐ๋ฐ์๊ฐ ์ด ๋ฒ์ ์ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ค๋ฉด?
์ถ์๋๋ ๋ฒ์ ์ ์ด๋ฆ์ ๋ฒ์ 1.3.2์ด๋ค.
โ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๊ฒฝ์์ ์๋งจํฑ ๋ฒ์ ๊ด๋ฆฌ๋ ๋ฌด์์ธ๊ฐ?
์๋งจํฑ ๋ฒ์ ๊ด๋ฆฌ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๊ฒฝ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋๋ฐ, ์ด๋ ์ํํธ์จ์ด ๋ฒ์ ์ ์ ์ ํ ๋ฒํธ๋ฅผ ์ง์ ํ๊ณ ๊ณ ๊ฐ์ด ์ต๋ํ ์ฝ๊ฒ ์ฌ์ฉํ๋ ๋ฐ ๋์์ด ๋๋ค.
์ผ๋ถ ์ ํ
: '๋ฉ์ด์ , ๋ง์ด๋, ํจ์น' ๋ฒํธ ์ง์ ๋ฐฉ์์ฒ๋ผ ์์ธํ ํํ ๋ฐฉ์์ด ํ์ํ์ง ์๊ณ , ๊ทธ ๋์ ๋ ๊ฐ๋จํ '๋ฉ์ด์ ,๋ง์ด๋' ์์คํ ์ ์ฌ์ฉํ๋ค.
์ผ๋ถ ๊ธฐ์
: ์ผ๋ถ ์ ํ๊ณผ ๋์กฐ์ ์ผ๋ก ๋ฒ์ ์ถ์๊ฐ ๋น๋ฒํ๊ธฐ ๋๋ฌธ์ ์์ธํ ๋ฒํธ ์ง์ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ๋ค.
์ผ๋ฐ์ ์ธ ์๋ฉํฑ ์์คํ ๋์ ํ์ ์๋ฅผ ์ถ๊ฐํ๋ค. ๋ฐ๋ผ์ 3์๋ฆฌ ์ซ์ ๋ฌธ์์ด ๋์ , ์ด ์ํํธ์จ์ด์ ์ ๋ฐ์ดํธ ๋ฒ์ ์๋ 4์๋ฆฌ ์ซ์๊ฐ ๋ถ์ฌ๋๋ค.
โ ๊ฒ์๋ ํจํค์ง์ ๋ฒ์ ์ฆ๊ฐ
ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ ๊ฐ๋ฐ์๋ฅผ ์ํด ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ฆ๊ฐ์ํค๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
์ฝ๋ ์ํ ( Code status ) | ์ํ ( Stage ) | ๊ท์น ( Rule ) | ์์ |
๋ฐฐํฌ ์ ( Before release ) | ๋ฐฐํฌ ์ | Major์ 0์ผ๋ก ์์ํ๋ค. | 0.1.0 |
์ฒซ ๋ฆด๋ฆฌ์ฆ ( First release ) | ์๋ก์ด ์ํํธ์จ์ด | 1.0.0์ผ๋ก ์์ํ๋ค. | 1.0.0 |
์ด์ ๊ณผ ํธํ๋๋ ๋ฒ๊ทธ ํฝ์ค ( Backward compatible bug fixed ) |
ํจ์น ๋ฆด๋ฆฌ์ฆ | Patch๋ฅผ ์ฆ๊ฐํ๋ค. | 1.0.1 |
์ด์ ๊ณผ ํธํ๋๋ ์๋ก์ด ๊ธฐ๋ฅ ( Backward compatible new features ) |
๋ง์ด๋ ๋ฆด๋ฆฌ์ฆ | Minor์ ์ฆ๊ฐ์ํค๊ณ , Patch๋ฅผ 0์ผ๋ก ์์ ํ๋ค. |
1.2.0 |
์ด์ ๊ณผ ํธํ๋์ง ์๋ ๋ณ๊ฒฝ ( Changes that break backward compatibility ) |
๋ฉ์ด์ ๋ฆด๋ฆฌ์ฆ | Major์ ์ฌ๋ฆฌ๊ณ ๋๋จธ์ง๋ฅผ 0์ผ๋ก ์์ ํ๋ค. | 2.0.0 |
โ ๋ฒ์ ๋ณ ์ฐ์ ์์
- ๋ฒ์ ๋ณ ์ฐ์ ์์๋ Major > Minor > Patch ์์ผ๋ก ์ ํด์ง๋ค. 1.00 < 2.0.0 < 2.1.0 < 2.1.1
- ์ 3๊ฐ๊ฐ ๋์ผํ ๋ ์ ์๋ฐฐํฌ ์ ๋ฒ์ (alpha, beta, rc)์ด ํฌํจํ ๊ฒฝ์ฐ ์ฐ์ ์์๊ฐ ๋ฎ๋ค. 1.0.0-alpha < 1.0.0
- ์ซ์๋ก๋ง ๊ตฌ์ฑ๋ ์๋ณ์๊ฐ ๋ฌ๋ ธ๋ค๋ฉด ๋ฌธ์์ ๋ถํํ๊ฐ ์๋ ์๋ณ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ฎ๋ค. 1.2.1-1 < 1.2.1- alpha
- ์๋ณ์๊ฐ ๋ชจ๋ ๊ฐ์ผ๋ฉด ๋ฐฐํฌ ์ ๋ฒ์ ๊ณผ ํ๋ ์๊ฐ ๋ ๋ง์ ์ชฝ์ด ์ฐ์ ์์๋ฅผ ๊ฐ๋๋ค.
ex ) 1.0.0- alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0 < 1.0.0+0.2.1 < 1.2.1+build.1 < 1.2.1
- ์ํํธ์จ์ด ๋ฒ์
์ํํธ์จ์ด ๋ฒ์ ์์ฑ - ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์
์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ์ . ์ํํธ์จ์ด ๋ฒ์ ์์ฑ(software versioning)์ ์ปดํจํฐ ์ํํธ์จ์ด์ ํน์ ์ํ์ ๋ํ ์ ์ผํ ๋ฒ์ ์ด๋ฆ ํน์ ๋ฒ์ ๋ฒํธ๋ฅผ ๊ฐ๊ฐ ๊ฒฐ์ ํ๋ ๊ณผ์ ์ด๋ค. ์ฃผ์ด์ง ๋ฒํธ ์ฒด
ko.wikipedia.org
์ํํธ์จ์ด ๋ฒ์ ๊ด๋ฆฌ ๊ธฐ๋ณธ ์ ๋ณด | ์ํํธ์จ์ด ๋ฒ์ ๊ด๋ฆฌ๋
์นด์์ค, ํ๋ ์ค์ Sentinel ์ ํ์ ์ฌ์ฉํ์ฌ ์ํํธ์จ์ด ๋ผ์ด์ ์ฑ ๋ฐ ์์ตํํ๋ ๋ฐฉ๋ฒ ๋ชจ์-ํ์ฉ์ฌ๋ก ์๋น์ ๊ฐ์ ๋ฐ ๋น์ฆ๋์ค ์ฅ๋น ์๋ฃจ์ ์ ์ธ๊ณ์ ์ธ ์ ์กฐ์ ์ฒด ์ธ ์นด์์ค๋ ๊ณผํ ๊ณ์ฐ๊ธฐ์ ๋ํ
cpl.thalesgroup.com
์ํํธ์จ์ด/์ฑ ๋น๋๋ฒ์ ๊ด๋ฆฌ ๊ท์น, Semantic Versioning (์๋งจํฑ ๋ฒ์ ๋)
๋ฒ์ ๊ด๋ฆฌ ์ด๋ป๊ฒ ํด์ผํ ๊น? ์๋๋ก์ด๋ ์ฑ์ ๊ฐ๋ฐํ๊ฑฐ๋ ์ํํธ์จ์ด ๋ฑ์ ๋ง๋ค๋ฉด ๋ณด๋ฉด ํญ์ ๋ช ์ํ๋ ๊ฒ๋ค์ด ์์ฃ (์ฑ ์ด๋ฆ, ์ ์์, ๋ผ์ด์ผ์ค ๋ฑ) ๊ทธ ์ค ์ค๋ ์ฐพ์๋ณธ ๋ฒ์ (Version) ๊ด๋ จ ๋ด์ฉ์
daryeou.tistory.com