поддержана в iOS не полностью. 2. Умеет раскатывать фичи на разные группы пользователей. 3. Имеет систему фильтров (версия приложения, локаль устройства). 4. Файл состоит из описаний конфигураций экспериментов и закодирован в protobuf. 5. Каждая конфигурация состоит из групп экспериментов. Фича в коде привязывается к активной группе эксперимента.
конфигураций экспериментов выкладывается на сервер. 2. При запуске он скачивается и сохраняется локально. 3. При следующем старте, мы декодируем файл и для каждого эксперимента находим активную конфигурацию. 4. Выбираем активную группу эксперимента внутри конфигурации. Система экспериментов ничего не хранит сама, все считается
без исправления кода. 2. Нельзя раскатить часть фичи или разбить фичу на части. 3. Нельзя конфигурировать фичу и сравнивать конфигурации. 4. Аналитики и разработчики вынуждены согласовывать названия групп заранее. Хватит это терпеть - Make Experiments Great Again
2. Нельзя посмотреть значения Feature&FeatureParam. 3. Нужно выкатить файл с конфигурацими экспериментов в Production для тестирования. Тестировщику тяжело тестировать еще не вышедшую фичу
для выкладки конфига, сделали настройку для подмены источника конфигурации экспериментов. 2. Поддержали часть ?show-variations-cmd на странице browser://version. 3. Сделали систему cheat-урлов, дополняющие систему экспериментов. 4. Начали разрабатывать диагностический экран.
study- файл фейковым экспериментом указав в ней требуемые enabled/ disabled feature и params 2. Выложить данный конфиг на новые сервис. Получим ссылку на proto-файл. 3. Указаем его на экране server_configuration для внутренних сборок браузера. Вставьте изображение
где Feature - название фичи Trial - название эксперимента Group - группа в эксперименте p* - название параметра v* - значение параметра --force-fieldtrials="translator/enabled_new/" --force-fieldtrial-params="translator.enabled_new:timeout/5000" --enable-features="TranslateServiceAPITimeout<translator"
21 Монетка - это случайное число из промежутка [0..1) ассоциированное с именем эксперимента. На основе монетки происходит выбор группы эксперимента. 1. Хранить монетку может быть небезопасно и избыточно 2. Генерация монетки должна быть одинаковой от запуска к запуску 3. Необходимо равномерно распределять пользователей по группам Цель - не хранить значения монеток на диске
- UUID, который хранится на диске 2. Берется hash от источника энтропии и имени эксперимента 3. Значение хеша переводится в значение от [0..1) Подробнее какой хеш и как переводить “An Efficient Low-Entropy Provider" - https://clck.ru/JKS8H.
2. Использовать разные сущности для разработки и аналитики. 3. Калькулируемой. 4. Иметь инструменты для диагностики и тестирования. 5. Расширяемой (chromium variation service - https://clck.ru/JR4HU) Проводите эксперименты, анализируйте их и делайте приложения лучше!