Feature Flags
1.1 Цель
Section titled “1.1 Цель”Лотти хочет, чтобы продукт мог “переключать” поведение без нового релиза и без ручных костылей — флаги становятся базовой ручкой управления. Платформа должна позволять продукту получать значения параметров поведения (feature flags) по ключу в момент запроса. Это нужно, чтобы:
- безопасно включать/выключать функциональность,
- запускать A/B‑эксперименты и постепенно раскатывать изменения,
- иметь предсказуемое поведение при отсутствии применимого эксперимента.
1.2 Что такое Feature flag
Section titled “1.2 Что такое Feature flag”В истории: сначала команда заводит простой флаг для новой фичи (например, новый блок рекомендаций). Пока флаг выключен — всё как раньше. Когда включили на 1% — можно безопасно проверить, что ничего не взорвалось. Feature flag — это:
- ключ: уникальный идентификатор флага, который знает продукт (код/конфиг);
- значение по умолчанию: значение, используемое, если эксперимент не применяется;
- тип значения: система должна поддерживать типизированные значения (как минимум string/number/bool).
Флаг — это “точка управления” в продукте: продукт запрашивает значение по ключу и использует полученное значение в логике.
1.3 Правила получения значения флага
Section titled “1.3 Правила получения значения флага”В истории: продакт бесится, если у одного и того же пользователя “то так, то так”. Поэтому важно, чтобы платформа давала детерминированный ответ: одному пользователю — один вариант (если специально не меняли условия). При запросе значения флага для конкретного пользователя:
-
Если нет активного эксперимента, влияющего на этот флаг — возвращается «значение по умолчанию».
-
Если есть активный эксперимент на этом флаге, но он не применился к пользователю (например, пользователь не попал в аудиторию/сегмент) — возвращается «значение по умолчанию».
-
Если активный эксперимент применился к пользователю — возвращается значение выбранного для пользователя варианта.
1.4 Управление флагами
Section titled “1.4 Управление флагами”В истории: Лотти не хочет править конфиги в проде руками. Флаг должен жить как нормальная сущность: создал → включил на сегмент → посмотрел → откатил, если плохо. Платформа должна предоставлять возможность:
- создавать новые флаги (с ключом, типом значения и дефолтным значением),
- просматривать список и детали флагов, при желании — дополнительно хранить описание/владельца/метаданные (необязательно),
- обновлять только «значение по умолчанию» существующего флага.
Пример для связи с one-pager: флаг button_color может иметь значения green по умолчанию и экспериментальные варианты blue/red.