Фича-флаги предоставляют современным разработчикам инструменты для развертывания новых функций для конкретной аудитории, A/B тестирования и управления развертыванием с большей скоростью и меньшим риском.
Облачные архитектуры приложений, микросервисы, конвейеры CI/CD (непрерывная интеграция, непрерывная разработка), автоматизация тестирования и инфраструктура в виде кода — все это технологии, которые позволяют командам разработчиков часто доставлять код в эксплуатацию.
Они перенесли разработку программного обеспечения со времен ежеквартальных релизов и сложных интеграций в современную эру непрерывной разработки.
Разработчиков всегда интересовало, как управлять кодовой базой для поддержки частых релизов, производительности разработчиков, разработки новых функций и рефакторинга кода для решения проблемы технического долга.
Github поддерживает различные парадигмы разработки и ветвления, включая feature branches, release branches, trunk-based development, и Gitflow. Стратегии ветвления структурируют код, входящий в сборки, и, таким образом, могут быть использованы для контроля над тем, какие функциональные возможности развертываются у конечных пользователей.
Несмотря на продолжающуюся дискуссию о подходах ветвления, существует сильный консенсус в отношении того, что командам разработчиков следует избегать использования долгосрочных фиче-веток. Такие ветки часто создают сложные слияния кода, когда фичи готовы к интеграции в основную ветку.
Рассмотрим несколько способов, с помощью которых команды разработчиков могут проводить гибкие эксперименты с использованием фиче-флагов.
-
1.
Функции управления в средах разработки и тестирования
Сколько раз приложения в средах разработки или тестирования случайно посылали электронные письма внутренним пользователям — или, что еще хуже, внешним клиентам — из-за неправильной настройки конфигурации? Выполнялось ли пакетное задание, когда оно не должно было выполняться, или приложение обрабатывало кредитные карты, когда бета-тестеры тестировали новые возможности?
Это могут быть настройки конфигурации, которые легко включить или выключить, если есть только несколько сред. Но что, если, в дополнение к средам разработки и тестирования, существуют также демонстрационные среды для клиентского тестирования?
Вы не сможете сделать этот уровень конфигурации при тестировании на кодовом или системном уровне, если есть много переменных, настроек конфигурации и владельцы вне ИТ-отдела, необходимые для контроля над ними. Фича-флаги являются одним из способов включения этих элементов управления.
-
2.
A/B-тесты интерфейса, дизайна и языка
Дизайнеры часто хотят протестировать пользовательские интерфейсы и имеют конструкции с конечными пользователями, чтобы измерить их простоту использования и влияние. Разработчики и дизайнеры могут тестировать различные конструкции несколькими способами, чтобы проверить, какие из них получают большее количество притяжения.
Предоставление пользователям возможности устанавливать элементы управления личными данными и настраивать приложения может быть непростым делом, особенно если речь идет об уровне детализации, языке и элементах управления. Тестирование нескольких подходов — это один из способов дать пользователям возможность выразить, какой подход легче понять и контролировать.
-
3.
Альфа- и бета-тестирование новой технологии
Иногда разработчикам приходится тестировать новые сервисы, библиотеки или комплекты для разработки программного обеспечения. В других случаях доступное обновление включает в себя новые возможности. Каким образом владельцы продуктов и команды разработчиков должны понять, какие компоненты и возможности готовы для критически важных приложений?
Один из способов избавиться от догадок — это реализовать фичи, управлять ими с помощью флагов и выпустить их в виде альфа-фич. Разработчики могут включить их для небольшой группы внутренних сотрудников, чтобы обеспечить обратную связь о новых возможностях. После того, как команда разработчиков решит любые проблемы или риски, владелец продукта может включить фичу для внутренних и внешних бета-тестеров.
-
4.
Проверка производительности путем медленного расширения доступа к новым возможностям
Вариант альфа- и бета-тестирования — это когда команды разработчиков медленно увеличивают доступ к новым возможностям, чтобы обеспечить их надежность, производительность и стабильность.
Еще одним новым примером использования является проверка реакции на алгоритмы машинного обучения и искусственного интеллекта, такие как чат-боты, интерфейсы естественного языка, алгоритмы распознавания образов и управления голосом. Приложения могут быть запрограммированы с расширенными функциональными флагами для контроля над тем, какие случаи использования включены по мере тестирования и совершенствования алгоритмов.
-
5.
Развертывание фич по географии, языку или другим клиентским сегментам
Одним из важных соображений является включение функций для конкретных клиентских сегментов. Например, функция может быть готова к использованию пользователями в США, но регулирование не позволяет использовать ее в Европейском союзе.
Другим примером являются функции, требующие реализации на конкретном языке; флаги могут включать выбранные языки. Владельцы продуктов могут захотеть включить новые функции для начинающих пользователей, клиентов с низким уровнем риска или других демографических показателей.
Современные разработчики должны быстрее тестировать новые возможности, а фиче-флаги предоставляют инструменты для проведения экспериментов и развертывания новых возможностей с меньшим риском.