Skip to main content

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

Схема работы#

info

Глобальные условия пока выключены и будут добавлены в декабре 2022

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

image

Фича флаги#

Что это#

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

Типы правил#

info

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

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

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

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

Пример#

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

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

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

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

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

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

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

Пример#

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

Что, если у меня одинаковые условия в двух правилах?#

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

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

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

Пример#

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

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

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

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

Что это#

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

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

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

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

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

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

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

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

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

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

Allocation (процент траффика) и вес групп#

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

Реконфигурация веса вариантаПользователи перемешаются?
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

Что произойдет, если поменять allocation (% траффика)?#

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

Слой#

Что произойдет, если поменять layer allocation (% траффика от слоя)?#

Реконфигурация процента траффика в слоеПользователи перемешаются?
Увеличили с 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. Всего 2 правила + 1 по-умолчанию с 3 значениями:

  • Правило Standard rule (1): appVersion greater 1.0.1, значение True
  • Правило Standard rule (2): geo.country equal Russia, значение True
  • Правило Default rule: значение False

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

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

Если пользователь не попал в эксперимент (не прошел по allocation в данном случае), тогда стратегия присвоения значения будет зависить от ранее созданных правил и их значений: Standard rule (1), Standard rule (2), Default rule