Обзор управления компонентами

Традиционно для отправки нового компонента приложения требовалось полное повторное развертывание самого приложения. Для тестирования функции часто требуется несколько развертываний приложения. В каждом развертывании функция может быть изменена или предоставлена разным клиентам для тестирования.

Управление функциями — современная методика разработки программного обеспечения, которая отделяет выпуск функций от развертывания кода и позволяет быстро вносить изменения в доступность функций по требованию. Она использует методику, называемую флагами функций (также известную как ротация функций и коммутатор функций), чтобы динамически управлять жизненным циклом функций.

Управление функциями помогает разработчикам решить следующие проблемы:

  • Управление ветвью кода. Отключение новых функций, которые сейчас находятся в разработке, с помощью флагов функций. Такая функция по умолчанию скрыта. Вы можете безопасно внедрить функцию, хотя она и не завершена, и она будет находится в неактивном состоянии в рабочей среде. При таком подходе, который называется темным развертыванием, вы можете выпускать весь свой код в конце каждого цикла развертывания. Больше не требуется поддерживать ветви кода в нескольких циклах разработки, если для завершения какой-либо функции требуется более одного цикла.
  • Тестирование в рабочей среде. Вы можете предоставлять ранний доступ к новым функциям в рабочей среде с помощью флагов функций. Например, вы можете ограничить доступ, предоставив его участникам команды или внутренним тестировщикам бета-версии. Эти пользователи получат полноценный опыт работы в рабочей среде, а не имитацию или опыт частичного использования в тестовой среде.
  • Предоставление доступа. Кроме того, с помощью флагов функций вы можете последовательно развертывать новые функции для пользователей. Сначала можно ориентироваться на небольшой процент пользователей, а затем постепенно увеличивать этот процент.
  • Мгновенное отключение. Флаги функций обеспечивают средство подстраховки при выпуске новых функций. Вы можете включать и отключать функции приложения без повторного развертывания кода. При необходимости можно быстро отключить функцию, не выполняя повторную сборку и развертывание приложения.
  • Выборочная активация. С помощью флагов функций вы можете группировать пользователей и предоставлять определенный набор функций каждой группе. У вас может быть функция, работающая только в определенном веб-браузере. Вы можете определить флаг функции таким образом, чтобы только пользователи этого браузера могли видеть и использовать данную функцию. С помощью этого подхода вы позже можете легко расширить список поддерживаемых браузеров, не внося изменения в код.

Основные понятия

Ниже приведено несколько новых терминов, связанных с управлением функциями.

  • Флаг функции. Это переменная с двоичным состоянием 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" предоставляет централизованный репозиторий для флагов функций. Вы можете использовать ее, чтобы определить различные типы флагов функций и быстро и легко управлять их состоянием. Затем вы можете легко получить доступ к этим флагам функций из своего приложения с помощью библиотек Конфигурации приложений для различных платформ языков программирования.

Флаги функций в приложении ASP.NET Core показывают, как поставщик Конфигурация приложений .NET и библиотеки управления функциями используются вместе для реализации флагов функций для веб-приложения ASP.NET. Дополнительные сведения о флагах функций в Конфигурации приложений Azure см. в следующих статьях:

Следующие шаги