Добавить в корзинуПозвонить
Найти в Дзене

Как откатить релиз на проде за 2 минуты без потери пользовательских данных

Когда графики резко уходят вверх, а логи заполняются пятисотками. Ожидание исправления кода и пересборки пайплайна в такой ситуации - это непозволительная роскошь. Безопасный откат релиза за две минуты строится на архитектурных решениях, заложенных ещё до деплоя. Первый элемент - изоляция трафика через Blue-Green или Canary-развертывание. Старая стабильная версия приложения должна оставаться запущенной параллельно с новой. При обнаружении бага мы не меняем код, а просто перенаправляем 100% запросов в балансировщике (Nginx, AWS ALB или Istio) обратно на стабильные поды. Это занимает десять секунд и мгновенно уводит пользователей из-под удара. Второй элемент - обратная совместимость базы данных. Чтобы прошлая версия приложения после отката не нарушила работу с данными, любые миграции схемы должны выполняться в несколько этапов. Нельзя удалять или переименовывать поля за один шаг. Сначала добавляется новая колонка, в коде настраивается двойная запись, и только через несколько релизов уда

Когда графики резко уходят вверх, а логи заполняются пятисотками. Ожидание исправления кода и пересборки пайплайна в такой ситуации - это непозволительная роскошь. Безопасный откат релиза за две минуты строится на архитектурных решениях, заложенных ещё до деплоя.

Первый элемент - изоляция трафика через Blue-Green или Canary-развертывание. Старая стабильная версия приложения должна оставаться запущенной параллельно с новой. При обнаружении бага мы не меняем код, а просто перенаправляем 100% запросов в балансировщике (Nginx, AWS ALB или Istio) обратно на стабильные поды. Это занимает десять секунд и мгновенно уводит пользователей из-под удара.

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

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