Обзор управления компонентами
Традиционно для отправки нового компонента приложения требовалось полное повторное развертывание самого приложения. Для тестирования функции часто требуется несколько развертываний приложения. В каждом развертывании функция может быть изменена или предоставлена разным клиентам для тестирования.
Управление функциями — это практика разработки программного обеспечения, которая отделяет выпуск компонентов от развертывания кода и позволяет быстро изменять доступность компонентов по запросу. Она использует методику, называемую флагами функций (также известную как ротация функций и коммутатор функций), чтобы динамически управлять жизненным циклом функций.
Управление функциями помогает разработчикам решить следующие проблемы:
- Управление ветвью кода. Отключение новых функций, которые сейчас находятся в разработке, с помощью флагов функций. Такая функция по умолчанию скрыта. Вы можете безопасно внедрить функцию, хотя она и не завершена, и она будет находится в неактивном состоянии в рабочей среде. При таком подходе, который называется темным развертыванием, вы можете выпускать весь свой код в конце каждого цикла развертывания. Больше не требуется поддерживать ветви кода в нескольких циклах разработки, если для завершения какой-либо функции требуется более одного цикла.
- Тестирование в рабочей среде. Вы можете предоставлять ранний доступ к новым функциям в рабочей среде с помощью флагов функций. Например, вы можете ограничить доступ, предоставив его участникам команды или внутренним тестировщикам бета-версии. Эти пользователи получат полноценный опыт работы в рабочей среде, а не имитацию или опыт частичного использования в тестовой среде.
- Предоставление доступа. Кроме того, с помощью флагов функций вы можете последовательно развертывать новые функции для пользователей. Сначала можно ориентироваться на небольшой процент пользователей, а затем постепенно увеличивать этот процент.
- Мгновенное отключение. Флаги функций обеспечивают средство подстраховки при выпуске новых функций. Вы можете включать и отключать функции приложения без повторного развертывания кода. При необходимости можно быстро отключить функцию, не выполняя повторную сборку и развертывание приложения.
- Выборочная активация. С помощью флагов функций вы можете группировать пользователей и предоставлять определенный набор функций каждой группе. У вас может быть функция, работающая только в определенном веб-браузере. Вы можете определить флаг функции таким образом, чтобы только пользователи этого браузера могли видеть и использовать данную функцию. С помощью этого подхода вы позже можете легко расширить список поддерживаемых браузеров, не внося изменения в код.
Основные понятия
Ниже приведено несколько новых терминов, связанных с управлением функциями.
- Флаг функции. Это переменная с двоичным состоянием on (Включен) или off (Отключен). С флагом функции также связан блок кода. Состояние флага функции переключается при выполнении блока кода.
- Диспетчер функций. Это пакет приложения, который обрабатывает жизненный цикл флагов всех функций в приложении. Кроме того, диспетчер функций предоставляет дополнительные возможности, например возможности кэширование флагов функций и обновление их состояния.
- Фильтр. Это правило для оценки состояния флага функции. К потенциальным фильтрам относятся группы пользователей, типы устройств и браузеров, географические расположения и интервалы времени.
Эффективная реализация управления функциями характеризуется по крайней мере двумя компонентами, которые работают вместе.
- Приложение, которое использует флаги функций.
- Отдельный репозиторий, в котором хранятся флаги функций и их текущее состояние.
Использование флагов функций в коде
Базовый шаблон для реализации флагов функций в приложении прост. Флаг функции — это логическая переменная состояния, управляющая условным оператором в коде:
if (featureFlag) {
// Run the following code
}
Значение featureFlag
можно задать статически:
bool featureFlag = true;
Вы можете оценить состояние флага на основе определенных правил:
bool featureFlag = isBetaUser();
Можно расширить условие, чтобы задать поведение приложения для любого состояния:
if (featureFlag) {
// This following code will run if the featureFlag value is true
} else {
// This following code will run if the featureFlag value is false
}
Репозиторий флагов функций
Чтобы эффективно использовать их, необходимо переместить все флаги функций, используемые в приложении, во внешнее хранилище. Этот подход можно использовать для изменения состояния флагов функций без изменения и повторного развертывания самого приложения.
Служба "Конфигурация приложений Azure" предоставляет централизованный репозиторий для флагов функций. Вы можете использовать ее, чтобы определить различные типы флагов функций и быстро и легко управлять их состоянием. Затем вы можете легко получить доступ к этим флагам функций из своего приложения с помощью библиотек Конфигурации приложений для различных платформ языков программирования.
Следующие шаги
Чтобы начать использование флагов функций с Конфигурация приложений Azure, перейдите к следующим кратким руководствам, определенным для языка или платформы приложения.
Дополнительные сведения об управлении флагами функций в Конфигурация приложений Azure см. в следующем руководстве.
Фильтры функций позволяют условно включить флаг компонента. Конфигурация приложений Azure предлагает встроенные фильтры функций, позволяющие активировать флаг функции только в течение определенного периода или для определенной целевой аудитории вашего приложения. Дополнительные сведения см. в следующем руководстве.