В каких случаях Java-приложению требуется поддержка нескольких релизных версий?

«В каких случаях Java-приложению требуется поддержка нескольких релизных версий?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Поддержка нескольких версий (N-1, N-2) необходима в следующих сценариях:

  1. Долгосрочная поддержка (LTS) для клиентов: Клиенты не могут сразу обновиться и требуют исправления безопасности или критических багов в старой версии.
  2. Поэтапный rollout (канареечные выпуски): Новая версия развертывается на части инфраструктуры, пока старая продолжает работать для остальных пользователей.
  3. Кастомизированные версии для разных клиентов: У некоторых клиентов есть собственная форкнутая или модифицированная версия продукта.

Практика управления версиями в Git:

# main/trunk — актуальная разрабатываемая версия
git checkout main

# Ветка для поддержки релиза 1.x
git checkout release/1.x
# Ветка для поддержки релиза 2.x
git checkout release/2.x

Лучшие практики:

  • Используйте семантическое версионирование (SemVer: MAJOR.MINOR.PATCH).
  • Автоматизируйте сборку и тестирование для всех поддерживаемых веток через CI/CD (Jenkins, GitLab CI).
  • Четко определите и задокументируйте политику поддержки (сроки, типы исправлений).