Суть. Возможность попадает в рабочую среду выключенной и включается отдельным решением: для части пользователей, для одного клиента, для внутренней команды. Выпуск кода и включение функции становятся разными событиями, и это меняет управление риском.
Виды переключателей
| Вид | Зачем | Срок жизни |
|---|---|---|
| Для незаконченного | Скрыть работу в процессе | Удаляется сразу после запуска |
| Постепенный вывод | Включить для 5%, потом больше | Недели |
| Аварийный выключатель | Мгновенно отключить проблемную функцию | Живёт долго, но осознанно |
| Под клиента | Возможность доступна конкретным заказчикам | Долго; фактически часть продукта |
Что это даёт коммерческой стороне
Возможность дать функцию одному клиенту в рамках пилота, не выпуская её всем. И возможность отключить её за минуту, если что-то пошло не так, — аргумент, который снимает часть возражений о риске внедрения.
Зачем это бизнесу
Флаг отделяет момент выкатки кода от момента включения функции. Это меняет две вещи: релиз перестаёт быть рискованным событием, и появляется возможность включать новое отдельным клиентам — а значит, обещать конкретному заказчику раннее включение, не сдвигая общий план.
Четыре типа флагов
| Тип | Зачем | Срок жизни |
|---|---|---|
| Релизный | Выкатить код, включить позже | Дни, снимается сразу после включения |
| Постепенный | Включить на части пользователей и смотреть | Недели |
| Клиентский | Функция доступна конкретным клиентам или тарифам | Постоянно, это часть продукта |
| Аварийный | Отключить тяжёлую часть при перегрузке | Постоянно |
Смешивать типы нельзя: релизный флаг, забытый на год, превращается в ветку логики, которую никто не решается удалить.
Правила эксплуатации
- У каждого флага есть владелец и дата снятия. Без даты флаг живёт вечно.
- Флаги видны в одном месте с указанием, где включены. Иначе воспроизвести поведение у клиента невозможно.
- Комбинации проверяются: два независимых флага дают четыре состояния, три — восемь.
- Снятие флага — такая же задача, как его создание, и планируется вместе с ней.
- Аварийное отключение проверяется учениями, а не в момент аварии.
Что это даёт в продаже
Возможность сказать заказчику «включим вам на следующей неделе, остальным через месяц» — сильный аргумент в enterprise-сделке, и он не требует отдельной сборки. Обратная сторона: обещание раннего включения превращается в обязательство поддерживать это состояние, поэтому фиксировать его нужно письменно вместе со сроком выравнивания.
Где ломается
Переключатели не убирают. Через год их сотни, и никто не знает, какие сочетания вообще проверялись. Правило: у каждого временного переключателя есть дата удаления.
Логика расползается. Условия включения появляются в десятке мест кода вместо одного слоя.
Тестируют только включённое состояние. Выключенный путь оказывается непроверенным и ломается в самый неподходящий момент.
- Флаги накапливаются. Сотня флагов в коде — это сотня ветвлений, которые невозможно протестировать.
- Нет обзора. Поддержка не может ответить, что именно включено у клиента.
- Флагом закрывают недоделанное. Тогда он маскирует технический долг, а не управляет выпуском.
