Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Традиционно для отправки нового компонента приложения требовалось полное повторное развертывание самого приложения. Для тестирования функции часто требуется несколько развертываний приложения. В каждом развертывании функция может быть изменена или предоставлена разным клиентам для тестирования.
Управление функциями — это практика разработки программного обеспечения, которая отделяет выпуск компонентов от развертывания кода и позволяет быстро изменять доступность компонентов по запросу. Она использует методику, называемую флагами функций (также известную как ротация функций и коммутатор функций), чтобы динамически управлять жизненным циклом функций.
Управление функциями помогает разработчикам решить следующие проблемы:
- Управление ветвями кода: Используйте флаги функций для обёртывания новой функциональности приложения, которая находится в стадии разработки. Такая функция по умолчанию скрыта. You can safely ship the feature, even though it's unfinished, and it will stay dormant in production. При таком подходе, который называется темным развертыванием, вы можете выпускать весь свой код в конце каждого цикла развертывания. Больше не требуется поддерживать ветви кода в нескольких циклах разработки, если для завершения какой-либо функции требуется более одного цикла.
- Тестирование в рабочей среде. Вы можете предоставлять ранний доступ к новым функциям в рабочей среде с помощью флагов функций. Например, вы можете ограничить доступ, предоставив его участникам команды или внутренним тестировщикам бета-версии. Эти пользователи получат полноценный опыт работы в рабочей среде, а не имитацию или опыт частичного использования в тестовой среде.
- Пилотное тестирование: С помощью флагов функций вы можете постепенно развертывать новые возможности для конечных пользователей. Сначала можно ориентироваться на небольшой процент пользователей, а затем постепенно увеличивать этот процент.
- Instant kill switch: Feature flags provide an inherent safety net for releasing new functionality. Вы можете включать и отключать функции приложения без повторного развертывания кода. При необходимости можно быстро отключить функцию, не выполняя повторную сборку и развертывание приложения.
- Выборочная активация. С помощью флагов функций вы можете группировать пользователей и предоставлять определенный набор функций каждой группе. У вас может быть функция, работающая только в определенном веб-браузере. Вы можете определить флаг функции таким образом, чтобы только пользователи этого браузера могли видеть и использовать данную функцию. С помощью этого подхода вы позже можете легко расширить список поддерживаемых браузеров, не внося изменения в код.
Ниже приведено несколько новых терминов, связанных с управлением функциями.
- Флаг функции. Это переменная с двоичным состоянием on (Включен) или off (Отключен). С флагом функции также связан блок кода. The feature flag's state triggers whether the code block runs.
- Диспетчер функций. Это пакет приложения, который обрабатывает жизненный цикл флагов всех функций в приложении. Кроме того, диспетчер функций предоставляет дополнительные возможности, например возможности кэширование флагов функций и обновление их состояния.
- Фильтр. Это правило для оценки состояния флага функции. К потенциальным фильтрам относятся группы пользователей, типы устройств и браузеров, географические расположения и интервалы времени.
Эффективная реализация управления функциями характеризуется по крайней мере двумя компонентами, которые работают вместе.
- Приложение, которое использует флаги функций.
- Отдельный репозиторий, в котором хранятся флаги функций и их текущее состояние.
Базовый шаблон для реализации флагов функций в приложении прост. Флаг функции — это логическая переменная состояния, управляющая условным оператором в коде:
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 предлагает встроенные фильтры функций, позволяющие активировать флаг функции только в течение определенного периода или для определенной целевой аудитории вашего приложения. Дополнительные сведения см. в следующем руководстве.