Как подготовить проверяемый откат релиза

Совместимость кода и данных, контрольные сигналы и последовательность возвращения предыдущей версии.

Практическое решение · 3 мин чтения
Как подготовить проверяемый откат релиза — tarasovcode
DevOpsКак подготовить проверяемый откат релиза

Новая версия проходит запуск, но увеличивает ошибки в одном маршруте. Возврат старого образа может не помочь, если изменились данные или фоновые задания. План отката готовят до выпуска и связывают с конкретной версией и наблюдаемыми критериями.

Что подготовить

  • Артефакты текущего и предыдущего выпуска с неизменяемыми идентификаторами.
  • Изменения схемы, конфигурации, форматов сообщений и внешних контрактов.
  • Пороговые сигналы ошибок и ответственный за решение о возврате.

Порядок работы

  1. Определите, какие изменения обратимы заменой приложения, а какие требуют преобразования данных.
  2. Проверьте старую версию на состоянии данных, которое создаст новая. Несовместимость должна быть устранена до выпуска либо явно учтена.
  3. Запишите порядок остановки опасных заданий, переключения трафика и возврата конфигурации.
  4. Проведите репетицию на стенде с характерным запросом и очередью сообщений.
  5. После возврата проверьте не только доступность, но и корректность ранее начатых операций.

Разобранный пример

Новый обработчик пишет дополнительное значение статуса. Старая версия его не понимает, поэтому простой откат опасен. Перед выпуском добавляют совместимое чтение неизвестного статуса либо откладывают запись нового значения до завершения перехода.

Как проверить результат

  • Предыдущий артефакт доступен и его происхождение известно.
  • Критичные пользовательские операции проходят после репетиции возврата.
  • Очереди и отложенные задания не повторяют уже выполненные действия.

Если что-то пошло не так

Если данные уже необратимо преобразованы, остановите автоматический возврат кода. Потребуется восстановление, совместимая промежуточная версия или исправление вперед. У решения должны быть понятные последствия для операций, выполненных после выпуска.

Карточка решения о возврате

До выпуска заполните карточку: версия, наблюдаемые признаки ухудшения, допустимый период наблюдения, ответственный и точка остановки. Укажите, какие сигналы относятся к релизу, а какие могут быть вызваны внешней зависимостью. Это не повод задерживать необходимый возврат, но способ не принимать каждую общую неисправность за дефект новой версии.

Проверьте конфигурацию отдельно от артефакта. Старый код с новыми обязательными параметрами, измененными полномочиями или другим форматом очереди может работать иначе, чем до релиза. Зафиксируйте совместимый набор целиком. Для данных добавьте пример записи, созданной новой версией, и явно проверьте ее чтение предыдущей.

Во время репетиции оставьте одну операцию незавершенной перед переключением. После возврата выясните, кто продолжит ее обработку, куда попадет ответ и допустим ли повтор. Если фоновый исполнитель новой версии еще работает, замена только веб-процессов не завершает откат. В протоколе отметьте фактические версии всех участников. После возврата сравните не только текущие ошибки, но и накопившуюся очередь: временно восстановленный интерфейс может скрывать продолжающийся сбой обработки. Отдельно сохраните условия повторного выпуска исправленной версии, чтобы аварийный возврат не стал бессрочным неопределенным состоянием.

Промпт для разбора ваших материалов

Подготовь план отката для описанного релиза. Раздели код, конфигурацию, данные и очереди. Укажи критерии запуска процедуры, проверки совместимости и границы, после которых возврат старого артефакта недостаточен.

Частые вопросы

Откат и восстановление копии — одно действие?

Нет. Откат приложения может сохранять новые данные, а восстановление возвращает состояние и может потерять последующие изменения.

Достаточно ли проверки доступности?

Нет. Нужны характерные операции, формат сообщений и состояние незавершенных процессов.

Материал библиотеки решений Ильи Тарасова / TarasovWeb.

О проекте

Практическая библиотека Ильи Тарасова и TarasovWeb. Telegram-канал · Личная страница · ВКонтакте.

#tarasovweb #ИльяТарасов