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

Переключатели возможностей

Переключатели возможностей

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

Виды переключателей

Вид Зачем Срок жизни
Для незаконченного Скрыть работу в процессе Удаляется сразу после запуска
Постепенный вывод Включить для 5%, потом больше Недели
Аварийный выключатель Мгновенно отключить проблемную функцию Живёт долго, но осознанно
Под клиента Возможность доступна конкретным заказчикам Долго; фактически часть продукта

Что это даёт коммерческой стороне

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

Зачем это бизнесу

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

Четыре типа флагов

Тип Зачем Срок жизни
Релизный Выкатить код, включить позже Дни, снимается сразу после включения
Постепенный Включить на части пользователей и смотреть Недели
Клиентский Функция доступна конкретным клиентам или тарифам Постоянно, это часть продукта
Аварийный Отключить тяжёлую часть при перегрузке Постоянно

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

Правила эксплуатации

  1. У каждого флага есть владелец и дата снятия. Без даты флаг живёт вечно.
  2. Флаги видны в одном месте с указанием, где включены. Иначе воспроизвести поведение у клиента невозможно.
  3. Комбинации проверяются: два независимых флага дают четыре состояния, три — восемь.
  4. Снятие флага — такая же задача, как его создание, и планируется вместе с ней.
  5. Аварийное отключение проверяется учениями, а не в момент аварии.

Что это даёт в продаже

Возможность сказать заказчику «включим вам на следующей неделе, остальным через месяц» — сильный аргумент в enterprise-сделке, и он не требует отдельной сборки. Обратная сторона: обещание раннего включения превращается в обязательство поддерживать это состояние, поэтому фиксировать его нужно письменно вместе со сроком выравнивания.

Где ломается

Переключатели не убирают. Через год их сотни, и никто не знает, какие сочетания вообще проверялись. Правило: у каждого временного переключателя есть дата удаления.

Логика расползается. Условия включения появляются в десятке мест кода вместо одного слоя.

Тестируют только включённое состояние. Выключенный путь оказывается непроверенным и ломается в самый неподходящий момент.

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

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

С чего начать
С релизных флагов на крупные изменения и правила «дата снятия обязательна». Остальные типы добавляются по мере надобности.
Нужен ли отдельный инструмент
На старте достаточно конфигурации. Инструмент нужен, когда флагов больше двух десятков или когда включать должен не разработчик.
Как связано с постепенной поставкой
Постепенная поставка — это способ применения флагов: включение на долю пользователей с наблюдением и автоматическим откатом.

Связанное

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