Опубликовано: 3 апреля 2025 г.
Когда приходит время выпустить новую функцию в Chrome, существует множество проверок и противовесов, чтобы гарантировать работоспособность, соответствие и надежность функции. Одним из таких противовесов являются эксперименты Finch. Не позволяйте части «эксперимент» в его названии обмануть вас, заставив думать, что это небезопасно, это совсем наоборот. Выпуски Finch помогают нам добавлять функции, которые потенциально могут вызывать проблемы совместимости, безопасным способом, поскольку они позволяют нам быстро отключить функцию, если мы сталкиваемся с непредвиденными проблемами. В этой статье объясняется, как и почему мы используем Finch для некоторых выпусков функций в Chrome.
Обычно включение функции в Chrome просто означает переключение логического значения с выключенного на включенное внутри Chrome. Когда новая функция «отгружается», это просто означает, что это логическое значение по умолчанию изменено на «включено» для всех пользователей. Есть несколько способов сделать это:
- Включить функцию «в коде» : это означает, что исполняемый файл Chrome имеет настройку, которая включена по умолчанию.
- Включить функцию «через пробную версию Origin» : система пробной версии Origin — это способ для определенного сайта включить всех пользователей Chrome в эксперимент, который включает определенную функцию только на этом сайте.
- Включение функции «с помощью Finch» : Chrome периодически извлекает файл конфигурации с сервера, и этот файл может содержать инструкции по включению или отключению функции.
- "Finch kill switch" : противоположность включению "использования Finch". В этом случае функция включается "в коде", но затем отключается с помощью системы Finch, обычно из-за проблем, обнаруженных после запуска
Варианты использования Finch
Тема этого блога — Finch, поэтому мы не будем обсуждать включение «в коде» или «исходного пробного периода». Но у Finch есть несколько интересных вариантов использования.
Тестирование на небольшой группе пользователей (A/B-тестирование)
Часто Finch используется для проведения " A/B-тестирования " функции или оптимизации. В этом случае функция включается для небольшого процента пользователей, чтобы можно было собрать данные о разнице в производительности, поведении или использовании, когда функция включена по сравнению с отключенной.
Примером A/B-тестирования является запуск Speculative image decodes . Это улучшение производительности, которое не должно быть заметно разработчикам или пользователям, за исключением того, что Chrome стал загружать страницы быстрее. Но чтобы убедиться, что не произошло ничего неожиданного, а также чтобы иметь возможность точно измерить влияние на производительность, мы использовали Finch для A/B-тестирования.
Отключить проблемную функцию
Для безопасности продукта и пользовательского опыта Chrome может использовать систему Finch для удаленного отключения проблемных функций, которые были включены «в коде». Например, если функция была включена по умолчанию, но проблемы появились только после того, как Chrome достиг статуса Stable, нам нужен способ быстрого отключения функции, чтобы вернуть пользователей и компании в безопасное состояние. Это может быть необходимо, когда в функции есть необнаруженные ошибки или когда функция нарушает работу существующих сайтов по непредвиденным причинам.
Включите рискованные функции более безопасным способом
Для большинства функций, которые запускает Chrome, риск невелик, поскольку мы можем протестировать и убедиться, что новый код работает на всех сайтах.
Однако иногда запуск функций может быть довольно рискованным из-за неизвестных проблем совместимости или других сложных взаимодействий. В этом случае система Finch может быть использована для фактического включения функции, а не просто держать ее в резерве в качестве аварийного выключателя.
Например, "релаксация" парсера HTML была изменением, связанным с новой функцией customizable-select, которая позволяла размещать больше контента, чем раньше, внутри элемента <select>
. Поскольку возможно, что это изменение может сломать существующие сайты, нам нужно было развернуть его осторожно.
Включение функций с помощью Finch может быть безопаснее, чем использование Finch для их удаления, поскольку Finch не охватывает 100% пользователей по разным причинам. Например, у некоторых корпоративных пользователей есть политика, которая полностью запрещает настройку Finch. Эти пользователи останутся в зоне риска в случае, если функция будет включена в коде, а затем будет отключена с помощью Finch, поскольку эти пользователи не получат настройку Finch и функция будет по-прежнему включена. Вместо этого включив функцию с помощью Finch, мы можем гарантировать возможность отключить ее для абсолютно всех пользователей в случае чрезвычайной ситуации.
Как проверить, участвуете ли вы в эксперименте Финча?
Это сложно сделать пользователям напрямую. Рекомендуемый способ — связаться с инженером Chrome (чаще всего в контексте ошибки Chromium ) и отправить ему свой «список вариаций». Это список специальных закодированных версий всех настроек Finch для данного браузера. Его можно легко получить:
- Перейдите по адресу
chrome://version
. - Скопируйте весь текстовый список (да, он может быть довольно длинным), указанный рядом с «Активными вариантами».
- Вставьте этот текст в текстовый файл (например,
variations.txt
) и прикрепите его к ошибке.
Используя этот список вариаций, инженеры Chrome могут расшифровать его и увидеть, какие функции включены или отключены в вашем браузере.
Что произойдёт, когда эксперимент Финча достигнет 100% и будет готов к продолжению?
Как только мы убедимся, что наш эксперимент «успешный», и рассматриваемая функция не представляет риска для разработчиков или пользователей, мы всегда включаем функцию «в коде». На этом этапе можно безопасно завершить конфигурацию Finch, чтобы она перестала оказывать влияние на браузеры после версии, в которой функция была включена в коде.