Skip to main content

Как Sigma определяет группу A/B и значение фича-флага

Схема работы

info

Настройки целевой аудитории доступны для версий SDK, начиная с NodeJs 2.0.0 и Js 2.0.0

Схема в полном разрешении

image

Фича-флаги

Что это

Фича-флаги (Feature Flags) — модуль Sigma, позволяющий гибко управлять включением и выключением функциональной сущности на сайте и в приложении (например, чат). Также фича-флаги позволяют управлять контентным содержимым: в административной панели вы можете присвоить то или иное значение в зависимости от каких-либо условий.

Типы правил

info

Ниже описан механизм работы фича-флагов без запущенного эксперимента. При работе с экспериментом, переходите к разделу Эксперименты

В фича-флагах есть два типа правил, от которых зависит присвоение значения пользователю:

  • Значение (по-умолчанию) — правило по умолчанию, по которому будет присвоено значение, если пользователь не попал ни под одно из назначенных условий (или условий нет вовсе)
  • Просто Значение — произвольное правило, в котором может быть одно и более условий, установленных в административной панели. Значение будет присвоено, если пользователь попал под установленные условия

Ограничений на количество правил и условий нет.

Пример

Мы хотели бы изменять текст приветствия, который содержится в <h1>, в зависимости от браузера пользователя. Для этого мы определим три значения:

  • Значение (по-умолчанию): Welcome!. Значение будет присвоено всем пользователям по умолчанию
  • Значение (1): Welcome user from browser Chrome!. Значение будет присвоено пользователям браузера Chrome.
  • Значение (2): Welcome user from browser Safari!. Значение будет присвоено пользователям браузера Safari.

В этом примере, если пользователь зашел с Opera, Edge и других браузеров (кроме Chrome и Safari), то получит значение по умолчанию Welcome!

Как работают правила фича-флагов

  • В условиях вы можете выбрать Поле (характеристика пользователя), которое будет проверяться перед тем, как назначить значение. Например, browser.name (имя браузера)
  • Вы можете установить несколько условий, комбинируя разные Поля. Например, browser.name и browser.version

Операции для условий

Комбинируя несколько условий друг с другом для одного Правила, вы можете установить Операцию для условий. Поддерживается два типа операций: AND (и) и OR (или)

Пример

Вернемся к примеру с браузером. Давайте добавим к Значение (1) еще одно условие browser.version equal 107.0.5304.110. Теперь значение для Chrome будет возвращаться только в случае, если пользователь попадает под оба условия (версия будет равняться 107.0.5304.110), т.к. мы выбрали Операцию для условий AND. Если пользователь зашел с Chrome, но при этом версия отличается, то ему присвоится значение по умолчанию — Welcome!

Что будет, если создать одинаковые условия в двух правилах

  • Мы рекомендуем не создавать одинаковые правила типа Значение с разными значениями
  • Если вы все же по какой-то причине это сделали, то пользователю назначится то значение, чье правило стоит выше в административной панели

Что будет, если создать противоречащие условия в одном правиле

Если в правиле противоречащие условия, тогда пользователь перейдет к следующему правилу в цепочке.

Пример

В правиле установлены browser.name equal Chrome и browser.name not equal Chrome с Операцией для условий AND.

  • 1-й пользователь зашел с браузера Chrome. Он попадает в первое условие, но во второе — нет
  • 2-й пользователь зашел с браузера Opera. Он попадает во второе условие, но в первое — нет

Оба пользователя не подойдут под правило, т.к. условия не соблюдены. Они последуют далее по цепочке остальных правил. Если и под другие правила (если они есть) они не подходят, то им присвоится значение из Значение (по-умолчанию).

Эксперименты

Что это

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

Иерархия в методах

МетодЧто делает
getExperiment
  1. Проверка статуса эксперимента
  2. Проверка платформы и глобальных правил
  3. Проверка вхождения в слой
  4. Расчет группы эксперимента
getFeatureValue
  1. Проверка правил в фича-флаге
  2. Получение значения фича-флага в зависимости от группы
getParamValueПолучение значения параметра в зависимости от группы
checkFlagВсе что делает getExperiment() и getFeatureValue(). Также метод работает как с самостоятельным фича-флагом, так и с фича-флагом, связанным с экспериментом

Принудительный список пользователей

Принудительный список игнорирует следующие стратегии:

  • Глобальные условия
  • Слой
  • Процент выделенного трафика (Allocation)

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

СтратегияВ какую группу попадут пользователи
Процент трафика равен 0%Пользователь будет определен в группу эксперимента в любом случае
Эксперименту выделено 10% слоя, пользователь не попал в группу слоя из 10%
В глобальных условиях установлено правило geo.country equal Russia. Пользователь зашел из Казахстана
В эксперименте установлен фича-флаг. Добавили пользователя в список группы А. У фича-флага для группы А два правилаПользователь попадет в группу А в любом случае. Значение будет присвоено в зависимости от попадания под условия одного из двух правил

Что будет, если отключить запущенный A/B и потом снова включить

Реконфигурация статуса экспериментаПользователи перемешаются?
Запустили A/B, затем отключили и спустя время снова включилиПеремешивания не будет после повторного включения. Пользователи получат те же группы, что и в первый раз

Процент трафика и вес групп

Что произойдет, если поменять вес группы

Реконфигурация веса вариантаПользователи перемешаются?
A и B были 50%/50%. Поменяли на 70%/30%Все 50% пользователей из группы А останутся в своей группе. 20% из группы B теперь получат A
A и B были 50%/50%. Поменяли на 70%/30%. Затем вернули на 50%/50%Все пользователи после второго изменения развесовки (изменили на 50%/50%) вернутся к изначальной конфигурации (вариант А получат те пользователи, которые попали в А при первой конфигурации)
A и B были 50%/50%. Добавили вариант C с развесовкой 50%/25%/25%.Пользователи из группы А сохранят свою группу. Половина пользователей из группы B теперь получат группу C

Что произойдет, если поменять процент трафика

Реконфигурация процента трафикаПользователи перемешаются?
Увеличили с 5% до 25%Пользователи, которые были в 5% останутся в назначенных вариантах
Уменьшили с 25% до 5%Пользователи, которые были изначально определены в 5% останутся в назначенных вариантах
Уменьшили с 25% до 0%, затем опять увеличили до 25%Те пользователи, что получили вариант при конфигурации трафика 25% в первый раз, получат тот же самый вариант

Слой

Что произойдет, если поменять процент трафика в слое

Реконфигурация процента трафика в слоеПользователи перемешаются?
Увеличили с 5% до 25%Пользователи, которые были в 5%, останутся в назначенных вариантах
Уменьшили с 25% до 5%Пользователи, которые были изначально определены в 5%, останутся в назначенных вариантах
Уменьшили с 25% до 0%, затем опять увеличили до 25%Те пользователи, что получили вариант при конфигурации трафика 25% в первый раз, получат тот же самый вариант
Уменьшили с 25% до 0%, затем выделили 5% на второй эксперимент в слой, затем увеличили у первого с 0% до 25%. Всего занято 30%Пользователи перемешаются
Уменьшили с 25% до 20%, затем выделили 10% на второй эксперимент в слой, затем увеличили у первого с 20% до 40%. Всего занято 50%Пользователи в первом эксперименте из 20% останутся в своем эксперименте, остальные перемешаются

Взаимодействия с правилами фича-флагов

Эксперимент имеет приоритет выше, чем остальные правила для фича-флага.

Пример

Создан фича-флаг isNewCart с типом BOOL. Всего два правила + одно по умолчанию с тремя значениями:

  • Правило Значение (1): appVersion greater 1.0.1, значение True
  • Правило Значение (2): geo.country equal Russia, значение True
  • Правило Значение (по-умолчанию): значение False

Создан эксперимент с двумя вариантами и процентом трафика 10%, где используется фича-флаг isNewCart, в нем мы поставили False для первой группы и True для второй.

В этом кейсе сначала проверяется попадание пользователя в эксперимент. Если он попал в него, тогда ему присвоится группа и соответствующее значение группы (True/False). Даже если пользователь обладает appVersion выше 1.0.1 или из России, ему может присвоиться группа со значением False, потому что не было добавлено дополнительное правило на обработку appVersion и geo.country.

Если пользователь не попал в эксперимент (не прошел по проценту трафика в данном случае), тогда стратегия присвоения значения будет зависеть от ранее созданных правил и их значений: Значение (1), Значение (2), Значение (по-умолчанию)