Как Sigma определяет группу A/B и значение фича-флага
Схема работы
Настройки целевой аудитории доступны для версий SDK, начиная с NodeJs 2.0.0 и Js 2.0.0
Фича-флаги
Что это
Фича-флаги (Feature Flags) — модуль Sigma, позволяющий гибко управлять включением и выключением функциональной сущности на сайте и в приложении (например, чат). Также фича-флаги позволяют управлять контентным содержимым: в административной панели вы можете присвоить то или иное значение в зависимости от каких-либо условий.
Типы правил
Ниже описан механизм работы фича-флагов без запущенного эксперимента. При работе с экспериментом, переходите к разделу Эксперименты
В фича-флагах есть два типа правил, от которых зависит присвоение значения пользователю:
Значение
(по-умолчанию) — правило по умолчанию, по которому будет присвоено значение, если пользователь не попал ни под одно из назначенных условий (или условий нет вовсе)- Просто
Значение
— произвольное правило, в котором может быть одно и более условий, установленных в административной панели. Значение будет присвоено, если пользователь попал под установленные условия
Ограничений на количество правил и условий нет.
Пример
Мы хотели бы изменять текст приветствия, который содержится в <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 |
|
getFeatureValue |
|
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), Значение (по-умолчанию)