Π—Π΄Π΅ΡΡŒ прСдставлСно ΠΌΠΎΠ΅ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ идСального вСрсионирования Π² микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅. Π—Π°Ρ‡Π΅ΠΌ ΠΌΠ½Π΅ своя стратСгия вСрсионирования, ΠΏΠΎΡ‡Π΅ΠΌΡƒ просто Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ БСмантичСскоС вСрсионированиС?

ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ сСмантичСскоС вСрсионированиС (SemVer) Π½Π°Ρ†Π΅Π»Π΅Π½ΠΎ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Ρ€ΠΈ разряда:

  1. ΠœΠ°ΠΆΠΎΡ€ (x) β€” ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ нСсовмСстимыС измСнСния.
  2. ΠœΠΈΠ½ΠΎΡ€ (y) β€” Π½ΠΎΠ²Ρ‹Π΅ возмоТности ΠΈΠ»ΠΈ измСнСния, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ.
  3. ΠŸΠ°Ρ‚Ρ‡ (z) β€” исправлСния ошибок, Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Однако, Π² микросСрвисных ΠΈΠ»ΠΈ event-driven Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ измСнСния Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ² ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΡ€Π°Π²ΠΎΠΊ, Π° Ρ‚Π°ΠΊΠΆΠ΅ явно Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ хотфиксы для ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… вСрсий. ИмСнно для Ρ‚Π°ΠΊΠΈΡ… случаСв прСдлагаСтся ΠΌΠΎΠ΅ вСрсионированиС

ВСрсия состоит ΠΈΠ· 4 разрядов:

 MAJOR.MINOR.PATCH.HOTFIX
  • MAJOR β€” мСняСтся ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ нСсовмСстимых измСнСниях Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ² (API, Kafka-event, grpc proto).
    • НапримСр, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ Π² API, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ клиСнтского ΠΊΠΎΠ΄Π°.
  • MINOR β€” мСняСтся ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстимых измСнСниях Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ².
    • НапримСр, Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π² API ΠΈΠ»ΠΈ Kafka-событиС, Π½Π΅ ломая ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ.
  • PATCH β€” мСняСтся ΠΏΡ€ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… измСнСниях, Π½Π΅ Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° внСшний ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚.
    • НапримСр, Π»ΠΎΠ³ΠΈΠΊΠ° сСрвиса, оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Π±Π΅Π· измСнСния API.
  • HOTFIX β€” мСняСтся ΠΏΡ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ исправлСнии критичСских ошибок, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ дСлаСтся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ вСрсии.
    • НапримСр, Π²Ρ‹ΡˆΠ»Π° вСрсия 2.7.0, ΠΈ Π² Π½Π΅ΠΉ обнаруТился Π±Π°Π³. Если нСльзя сразу ΠΏΠ΅Ρ€Π΅ΡΠΊΠΎΡ‡ΠΈΡ‚ΡŒ Π½Π° 2.7.1, ΠΌΡ‹ выпускаСм 2.7.0.1 (ΠΈ ΠΏΡ€ΠΈ нСобходимости 2.7.0.2, 2.7.0.3 ΠΈ Ρ‚.Π΄.).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ наглядно

  • 3.2.0.0: ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· (MAJOR = 3) Π±Π΅Π· хотфиксов, MINOR = 2, PATCH = 0.
  • 3.2.1.0: нСбольшоС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ (PATCH).
  • 3.2.1.1: хотфикс для вСрсии 3.2.1.
  • 3.3.0.0: Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π² API (MINOR).
  • 4.0.0.0: ΡƒΠ±Ρ€Π°Π»ΠΈ/ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ API (Π»ΠΎΠΌΠΊΠ° совмСстимости), MAJOR стал 4.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  1. Π―Π²Π½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² API. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎ MAJOR ΠΈΠ»ΠΈ MINOR рост β€” это сигналы ΠΎ Π½ΠΎΠ²Ρ‹Ρ… (ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Ρ…) ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°Ρ…, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ PATCH Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΡ….
  2. Чёткая ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° хотфиксов
    • НаличиС Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ³ΠΎ разряда (HOTFIX) ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΡƒΠ΄Π° вкатываСтся критичСский фикс.
    • Если Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° стоит 2.7.0, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сразу Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ Π²Π΅Ρ€ΡΠΈΡŽ 2.7.0.1 (ΠΈ Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ Π»ΠΈΠ½Π΅ΠΉΠΊΡƒ, которая пошла дальшС Π΄ΠΎ 2.7.1 ΠΈ Ρ‚.Π΄.).

НСдостатки ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ

  1. ΠΠ΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ со стандартными инструмСнтами SemVer. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² ΠΈ CI/CD систСм ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° Ρ‚Ρ€Ρ‘Ρ…Ρ€Π°Π·Ρ€ΡΠ΄Π½ΡƒΡŽ схСму. Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ настройка, Ссли Π»ΠΎΠ³ΠΈΠΊΠ° инструмСнтов Β«Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Β» Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚ΠΎΠ³ΠΎ разряда.
  2. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Если ваш сСрвис ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ сторонниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ чСтвёртая Ρ†ΠΈΡ„Ρ€Π°, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρƒ вас Π΄Π²Π° ΠΏΠ°Ρ‚Ρ‡-уровня (PATCH/HOTFIX), ΠΈ ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ измСнСния MAJOR/MINOR.
  3. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Β«Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚ΠΎΠΉ Ρ†ΠΈΡ„Ρ€Ρ‹Β» Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ хотфиксы для старых вСрсий, Π½ΠΎ это Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ эти Π²Π΅Ρ‚ΠΊΠΈ. НуТно Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… послСдних MINOR-Π»ΠΈΠ½Π΅Π΅ΠΊΒ»).

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

  • Если Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ c CI/CD, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ build-ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ SemVer (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 2.7.0+hotfix.1) β€” Ρ‚Π°ΠΊ сохраняСтся ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, Π½ΠΎ Π²Ρ‹ всё Ρ€Π°Π²Π½ΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹ΠΉ Β«ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒΒ» вСрсии.
  • ΠŸΡ€ΠΈ любом Ρ€Π΅Π»ΠΈΠ·Π΅ (любого разряда) фиксируйтС Π² ChangeLog, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ измСнилось. Π­Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ Π² микросСрвисах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстро ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ API ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

ΠœΠ΅Ρ‚Π° информация

ΠžΠ±Π»Π°ΡΡ‚ΡŒ::
Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ::
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ::
Π‘ΠΎΠ·Π΄Π°Π½Π°:: 2025-03-07
Автор::

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ