Skip to content

Работа с флагами

Полный жизненный цикл фиче-флага в можно.: от создания до архивации. Организация флагов по тегам, именование и типичный workflow для команд.

Жизненный цикл флага

Флаг в можно. существует в двух состояниях:

СостояниеЧто происходит
АктивенФлаг виден в панели. Его конфигурацию получают SDK и оценивают локально. Состояние по умолчанию после создания.
В архивеФлаг скрыт из основных списков. SDK не получают его конфигурацию. История изменений сохраняется.

Правила активации флага настраиваются отдельно для каждого окружения — включён/выключен, контекстные условия, сегменты и процентный роллаут. Подробнее — Таргетинг и Роллаут.

Создание флага

Перейдите в раздел Флаги и нажмите «Создать флаг». Обязательные поля:

ПолеОбязательноОписание
КлючДаУникальный идентификатор, неизменяем после создания
НазваниеДаЧеловекочитаемое имя, отображается в панели.
ОписаниеНетДля чего флаг, какую проблему решает.
ТипДаRELEASE — стандартный фиче-флаг для постепенной раскатки. KILLSWITCH — аварийный выключатель.
ТегиНетМетки для группировки и фильтрации.

После создания флаг сразу активен. Настройте правила активации — иначе флаг будет возвращать false для всех.

Совет: Ключ флага — это его идентификатор в коде (isEnabled("new-checkout", ctx)). Делайте ключи осмысленными. Избегайте flag-42. Рекомендации по именованию — Лучшие практики.

Изменение флага

Все поля кроме ключа можно редактировать. Каждое изменение записывается в аудит.

Типичные изменения:

  • Настройка правил активации (включён/выключен, контекстные условия, сегменты, процент)
  • Уточнение названия и описания
  • Управление тегами

Типичный путь флага в команде

flowchart LR
    A[Создание<br/>флага] --> B[dev<br/>100%]
    B --> C[staging<br/>QA-тестирование]
    C --> D[production<br/>1% канареечный]
    D --> E[10%]
    E --> F[50%]
    F --> G[100%]
    G --> H[Удаление<br/>старого кода]
    H --> I[Архивация<br/>флага]

Каждый этап — это изменение правил активации на конкретном окружении. Канареечный запуск и постепенная раскатка в production — с мониторингом метрик на каждом шаге.

Пример одного из возможных сценариев — адаптируйте под свою команду:

ЭтапОкружениеНастройкаКто
СозданиеФлаг создан, без правилРазработчик
РазработкаdevВключён, 100%Разработчик
ТестированиеstagingВключён, сегмент QAQA
Канареечныйproduction1–5%Релиз-инженер
Раскаткаproduction10% → 50% → 100%Релиз-инженер
Очистка кодаСтарый код удалён из приложенияРазработчик
АрхивацияФлаг в архивРазработчик

Архивация и удаление

Когда архивировать

  • Флаг на 100% и старый код удалён
  • Нужно сохранить историю изменений для аудита
  • Флаг может понадобиться в будущем

Когда удалять

  • Флаг создан по ошибке (опечатка в ключе)
  • Экспериментальный флаг, который не пошёл в прод
  • Тестовый флаг из локальной разработки

Организация флагов тегами

Теги — это метаданные флага в формате ключ:значение. Они позволяют группировать и фильтровать флаги независимо от имени. Один флаг может иметь несколько тегов.

Зачем нужны теги

У вас 50 флагов. Ключи осмысленные, но найти все флаги команды оформления заказа — невозможно без тегов. Теги решают эту проблему:

ЗадачаБез теговС тегами
Найти все флаги checkout-командыПролистать все 50 флагов глазамиФильтр team:checkout — 3 флага
Показать все аварийные выключателиИскать по префиксу kill- в ключахФильтр type:killswitch надёжнее
Найти флаги конкретного сервисаГадать по названиямФильтр service:api

Как создавать теги

Теги создаются в разделе Теги в боковом меню панели. Каждый тег — это пара:

ПолеПример
Имя тегаteam
Значениеcheckout

После создания тег можно присвоить любому флагу при создании или редактировании.

Рекомендуемые категории

КатегорияФорматПримеры
Командаteam:названиеteam:checkout, team:platform
Тип флагаtype:назначениеtype:killswitch, type:experiment
Сервисservice:имяservice:api, service:payments
Статусstatus:состояниеstatus:deprecated, status:permanent

На одном флаге может быть несколько тегов: team:checkout, type:killswitch, service:api — флаг одновременно принадлежит команде, классифицирован по типу и привязан к сервису.

Что дальше?

Released under the BSL 1.1 License.