← Назад к базе знаний

Постепенный вывод изменений

Постепенный вывод изменений

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

Два подхода

Две среды Малая доля трафика
Как устроено Рабочая и запасная среды, переключение маршрутизацией Новая версия получает 1–5% запросов
Откат Мгновенный: переключить обратно Убрать долю до нуля
Стоимость Двойная инфраструктура на время выпуска Сложнее маршрутизация и наблюдение
Когда лучше Крупные обновления, миграции Частые небольшие изменения

Что обязательно рядом

Автоматическое решение об откате по показателям: доля ошибок, время ответа, ключевое бизнес-действие. Без этого «постепенный вывод» превращается в обычный выпуск, за которым кто-то следит глазами первые десять минут.

Второе — совместимость данных. Если новая версия меняет структуру хранения, откат перестаёт быть безопасным. Изменения схемы разносят с изменениями кода.

Три способа выводить изменения постепенно

Способ Как работает Когда уместен
Постепенный процент Сначала 1% пользователей, потом 10, потом все Изменения в основном сценарии
Две среды Новая версия рядом со старой, переключение трафика целиком Когда нужен мгновенный откат
Кольца Сначала сотрудники, потом лояльные клиенты, потом рынок Корпоративные системы с длинным циклом обучения

Что должно быть, иначе смысла нет

  1. Наблюдаемость по сегментам. Если метрики показывают только среднее по всем, деградация у 5% не видна.
  2. Заранее заданное условие отката: не «если станет хуже», а «если доля ошибок выше такой-то — откатываем автоматически».
  3. Возможность выключить функцию без выпуска новой версии.
  4. Кто-то, кто действительно смотрит на графики в момент раскатки. Без этого постепенность превращается в замедленную аварию.

Где ломается

Откатывают код, но не данные. Самая дорогая ошибка в этом подходе.

Долю трафика дают, но не сравнивают показатели. Новая версия хуже на пять процентов — этого никто не заметит без сравнения.

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

Постепенно раскатывают, мгновенно ломают данные. Откат кода возможен, откат изменённой структуры данных — почти нет. Изменения схемы планируются отдельно и раньше.

Раскатку доводят до 100% по расписанию. Процент увеличивают потому, что наступил четверг, а не потому, что показатели в норме.

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

Ключевой вопрос не «умеем ли раскатывать постепенно», а «за сколько минут откатимся». Если ответ больше получаса, постепенность даёт ложное спокойствие.

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

Применимо ли это к системам, которые ставят у заказчика
Частично. Кольца работают: сначала тестовый контур клиента, потом ограниченная группа пользователей, потом все. Процент трафика — обычно нет.
Замедляет ли это поставку
Отдельный выпуск — да, на часы. Общий темп — ускоряет, потому что цена ошибки падает и решения принимаются быстрее.
Как объяснить это заказчику
Через риск: обновление не приходит ко всем одновременно, проблема у небольшой группы останавливается до того, как затронет остальных.

Связанное

Постепенный вывод — это не осторожность, а способ сделать ошибку дешёвой. Дешёвая ошибка позволяет чаще пробовать.

Материал оказался полезным?