Разруливание конфликтующих экспериментов
11.1 Цель
Section titled “11.1 Цель”Конфликты — неизбежны: разные эксперименты могут хотеть менять одно и то же. Платформа должна решать это предсказуемо. В реальной жизни эксперименты могут конфликтовать:
- два эксперимента меняют одну и ту же пользовательскую “поверхность” (UI/алгоритм) разными путями;
- разные команды запускают тесты, которые нельзя одновременно показывать одному пользователю;
- несколько экспериментов претендуют на один и тот же “показ” (и бюджет/метрики смешиваются).
Нужна система, которая:
- делает конфликты явными до запуска,
- обеспечивает детерминированное решение при выдаче значений,
- сохраняет корректную атрибуцию событий и понятный аудит.
11.2 Типы конфликтов
Section titled “11.2 Типы конфликтов”В истории: одновременно тестируют “новую кнопку” и “новый блок рекомендаций”, и оба трогают один экран — нужно понять, что с чем конфликтует.
11.2.1 Конфликт на одном флаге
Section titled “11.2.1 Конфликт на одном флаге”Один «ключ флага» не должен одновременно иметь более одного активного эксперимента. Это базовая защита.
11.2.2 Конфликт “на поверхности”
Section titled “11.2.2 Конфликт “на поверхности””Даже если флаги разные, эксперименты могут менять один и тот же экран/алгоритм и мешать друг другу. Пример: один эксперимент меняет сортировку, другой — выдачу баннера, но оба влияют на общую конверсию так, что метрики неинтерпретируемы.
11.2.3 Конфликт “взаимоисключение”
Section titled “11.2.3 Конфликт “взаимоисключение””Есть классы экспериментов, которые нельзя показывать одному субъекту одновременно:
- два разных дизайна checkout,
- две разные модели цены,
- два разных “больших” изменения в одной зоне.
11.3 Модель конфликтных доменов
Section titled “11.3 Модель конфликтных доменов”Это способ объяснить конфликт не инженерам, а людям: “вот зона продукта, которую этот эксперимент трогает”. Каждый эксперимент может (опционально) объявлять:
- список конфликтных доменов — группы конфликтов (например, checkout, search ranking, home banner).
- политика конфликта — как вести себя при конфликте (см. 11.4).
Бизнес‑смысл: домен — это “поверхность”, где одновременно может быть активен только один эксперимент для данного субъекта.
11.4 Политики разрешения конфликтов
Section titled “11.4 Политики разрешения конфликтов”В истории: если пользователь попал сразу в два конфликтующих эксперимента, платформа должна выбрать вариант по политике (приоритет/рандом/победитель). Когда механизм принятия решения для одного «идентификатор субъекта» обнаруживает несколько применимых экспериментов в одном домене, система должна выбрать стратегию:
11.4.1 Mutual exclusion
Section titled “11.4.1 Mutual exclusion”- Разрешён только один эксперимент в домене.
- Остальные считаются “не применившимися” (fallback на значение по умолчанию для их флагов или отсутствие их влияния).
- Выбор победителя — детерминированный (см. 11.5).
11.4.2 Конкурентный выбор по ставке
Section titled “11.4.2 Конкурентный выбор по ставке”- Если у экспериментов задана ставка, домен может разрешать выбор победителя “по ставке”.
- Выбранный победитель получает право “показаться” субъекту, остальные проигрывают.
- Это полезно, когда эксперименты представляют разные “кампании” или конкурируют за ограниченное место показа.
Важно: пользователю и аналитике должно быть видно, что один эксперимент проиграл конфликт и не применился (для аудита и объяснимости).
11.4.3 Priority tiers
Section titled “11.4.3 Priority tiers”- Эксперименты помечаются уровнями приоритета (например, P0/P1/P2 или числом).
- Побеждает самый высокий приоритет; при равенстве — детерминированный tie-breaker.
11.5 Детерминированный выбор победителя
Section titled “11.5 Детерминированный выбор победителя”В истории: важно, чтобы выбор был воспроизводимым — иначе один и тот же пользователь может получить разные комбинации и эксперимент развалится. Требование: при неизменной конфигурации один и тот же «идентификатор субъекта» должен получать стабильный результат.