Варианты размещения Функций Azure

При создании приложения-функции в Azure необходимо выбрать план размещения для приложения. Существует три основных плана размещения Функции Azure, предоставляемые Функции Azure: план потребления, план "Премиум" и "Выделенный" (Служба приложений). Эти планы размещения упрощаются инфраструктурой служб приложение Azure и общедоступными как на виртуальных машинах Linux, так и на виртуальных машинах Windows.

План размещения Функции Azure, который вы выбираете, определяет следующее поведение:

  • Как масштабируется приложение-функция.
  • Ресурсы, доступные для каждого экземпляра приложения-функции.
  • Поддержка расширенных функций, таких как подключение к виртуальной сети Azure.

Помимо размещения Функции Azure, вы также можете размещать контейнерные приложения-функции в контейнерах, которые можно развернуть в кластерах Kubernetes или в приложениях контейнеров Azure. При размещении функций в кластере Kubernetes рассмотрите возможность использования кластера Kubernetes с поддержкой Azure Arc. Дополнительные сведения о развертывании пользовательских приложений контейнеров см. в статье "Приложения контейнеров Azure" для размещения Функции Azure.

В этой статье представлено подробное сравнение различных планов размещения, включая варианты размещения на основе контейнеров.

Примечание.

Размещение Функции Azure контейнеров в кластерах Kubernetes с поддержкой Azure Arc и azure Container Apps в настоящее время находится в предварительной версии.

Обзор планов

Ниже приведены краткие сведения о преимуществах трех основных планов размещения Функции Azure:

Планирование Льготы
План потребления Настройте автоматическое масштабирование и платите только за вычислительные ресурсы, которые используются при выполнении функций.

В рамках плана потребления экземпляры узла Функций динамически добавляются и удаляются в зависимости от числа входящих событий.

✔ План размещения по умолчанию.
✔ Оплата насчитывается только при выполнении функций.
✔ Масштабирование выполняется автоматически, даже во время периодов высокой нагрузки.
План категории "Премиум" Автоматически масштабируется на основе спроса с помощью предварительно подготовленных рабочих ролей, которые запускают приложения без задержки после бездействия, работают на более мощных экземплярах и подключаются к виртуальным сетям.

Рассмотрим план Функции Azure Premium в следующих ситуациях:

✔ Приложения-функции выполняются непрерывно или почти непрерывно.
✔ У вас большое количество небольших выполнений и большой счет за использование, но в плане потребления низкий уровень ГБ в секунду.
✔ Вам требуется больше ресурсов ЦП или памяти, чем доступно в плане потребления.
✔ Код требуется выполнять дольше максимального времени выполнения, разрешенного в плане потребления.
✔ Требуются функции, недоступные в плане потребления, например подключение к виртуальной сети.
✔ Необходимо предоставить пользовательский образ Linux для выполнения функций.
План ценовой категории "Выделенный" Выполняйте функции в рамках плана службы приложений по стандартным тарифам плана службы приложений.

Лучше всего подходит для долго выполняющихся сценариев, в которых Устойчивые функции нельзя использовать. План службы приложений стоит использовать в следующих случаях:

✔ У вас есть неиспользуемые виртуальные машины, в которых уже запущены другие экземпляры Службы приложений.
✔ Требуется прогнозируемое масштабирование и затраты.

Таблицы сравнения в этой статье также включают следующие варианты размещения, которые обеспечивают максимальный уровень контроля и изоляции для выполнения приложений-функций.

Вариант размещения Сведения
ASE Среда службы приложений (ASE) — это компонент Службы приложений, который предоставляет полностью изолированную и выделенную среду для безопасного выполнения приложений Службы приложений в большом масштабе.

ASEs подходят для рабочих нагрузок приложений, требующих:

✔ Очень большой масштаб.
✔ Полная изоляция вычислений и безопасный доступ к сети.
✔ Использование большого объема памяти.
Приложения контейнеров Azure Приложения контейнеров Azure — это полностью управляемая среда, которая позволяет запускать микрослужбы и контейнерные приложения на бессерверной платформе. Приложения контейнеров Azure позволяют выполнять свои функции с помощью базовых Служба Azure Kubernetes (AKS) при удалении сложности работы с API Kubernetes.
Kubernetes
(прямой или
Azure Arc)
Kubernetes предоставляет полностью изолированную и выделенную среду на основе платформы Kubernetes.

Kubernetes подходит для рабочих нагрузок приложений, требующих:
✔ Настраиваемые требования к оборудованию.
✔ Изоляция и безопасный доступ к сети.
✔ Возможность запуска в гибридной или многооблачной среде.
✔ Работа вместе с существующими приложениями и службами Kubernetes.

Остальные таблицы в этой статье сравнивают планы различных функций и поведения. Сравнение затрат между динамическими планами размещения (потребления и "Премиум") см. на странице цен на Функции Azure. Цены на различные параметры Выделенного плана см. на странице цен на Службу приложений.

Операционная система или среда выполнения

В следующей таблице показана операционная система и поддерживаемый язык для планов размещения.

Linux1,2
только код
только код Windows Linux1,2,3
Контейнер Docker
План потребления C#
JavaScript
Java
Python
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
Поддержка не поддерживается
План категории "Премиум" C#
JavaScript
Java
Python
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
План ценовой категории "Выделенный" C#
JavaScript
Java
Python
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
ASE C#
JavaScript
Java
Python
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Kubernetes (прямой) Недоступно Недоступно C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Azure Arc (предварительная версия) C#
JavaScript
Java
Python
TypeScript
Н/Д C#
JavaScript
Java
PowerShell Core
Python
TypeScript

1 Linux является единственной поддерживаемой операционной системой для стека среды выполнения Python.
2 Поддержка PowerShell в Linux в настоящее время находится в предварительной версии.
3 Linux — единственная поддерживаемая операционная система для контейнеров Docker.

Время ожидания приложения-функции

Длительность времени ожидания функций в приложении-функции определяется свойством functionTimeoutв файле проекта host.json . Это свойство применяется специально к выполнению функций. После запуска триггера выполнения функции функция должна возвращать и реагировать в течение времени ожидания. Дополнительные сведения см. в разделе "Улучшение Функции Azure производительности и надежности".

В следующей таблице приведены значения по умолчанию и максимальные значения (в минутах) для конкретных планов:

Планирование По умолчанию Максимум1
План потребления 5 10
План категории "Премиум" 302 Не ограничено3
План ценовой категории "Выделенный" 302 Не ограничено3

1 Независимо от параметра времени ожидания приложения-функции, 230 секунд — это максимальное время, в течение которого функция, активируемая HTTP, может реагировать на запрос. Это определяется стандартным временем простоя Azure Load Balancer. При более длительной обработке рассмотрите возможность использования асинхронного шаблона Устойчивых функций или отложите работу и получите немедленный ответ.
2 Время ожидания по умолчанию для версии 1.x среды выполнения Функций не ограничено.
3 гарантировано до 60 минут. Исправления операционной системы и среды выполнения, исправление уязвимостей и масштабирование в поведении по-прежнему могут отменять выполнение функций, чтобы обеспечить надежную запись функций.

Масштабировать

В следующей таблице сравниваются режимы масштабирования различных планов размещения.
Максимальное количество экземпляров предоставляются для каждого приложения-функции (Потребление) или для каждого плана (Премиум/Выделенный), если не указано иное.

Планирование Горизонтальное увеличение масштаба Максимальное число экземпляров
План потребления Управляемые события. Горизонтальное увеличение масштаба выполняется автоматически, даже во время периодов высокой нагрузки. Инфраструктура Функций Azure масштабирует ресурсы ЦП и памяти, добавляя дополнительные экземпляры узла Функций в зависимости от количества входящих событий триггера. Windows: 200
Linux: 1001
План категории "Премиум" Управляемые события. Горизонтальное увеличение масштаба выполняется автоматически, даже во время периодов высокой нагрузки. Инфраструктура Функций Azure масштабирует ресурсы ЦП и памяти, добавляя дополнительные экземпляры узлов Функций в зависимости от количества событий, которые активируют функции. Windows: 100
Linux: 20-1002
План ценовой категории "Выделенный"3 Ручная или автомасштабирование 10-30
ASE3 Ручная или автомасштабирование 100
Kubernetes Автоматическое масштабирование на основе событий для кластеров Kubernetes с помощью KEDA. Зависит от кластера

1 Во время горизонтального увеличения масштаба в настоящее время существует ограничение в 500 экземпляров на подписку в час для приложений Linux в плане Потребления.
2 В некоторых регионах приложения Linux в плане "Премиум" могут масштабироваться до 100 экземпляров. Дополнительную информацию см. в статье "План Премиум".
3 Для определенных ограничений для различных параметров плана службы приложений см. раздел ограничения плана службы приложений.

Поведение холодного запуска

Планирование Сведения
План потребления Приложения могут масштабироваться до нуля при простое, что означает, что некоторые запросы могут иметь дополнительную задержку при запуске. План потребления имеет некоторые оптимизации для сокращения времени холодного запуска, включая получение от предварительно занятых функций-заполнителей, в которых уже запущены узлы функций и языковые процессы.
План категории "Премиум" Бессрочные экземпляры, чтобы избежать холодного запуска.
План ценовой категории "Выделенный" При выполнении в Выделенном плане узел Функций может работать непрерывно, что означает, что холодный запуск на самом деле не является проблемой.
ASE При выполнении в Выделенном плане узел Функций может работать непрерывно, что означает, что холодный запуск на самом деле не является проблемой.
Kubernetes В зависимости от конфигурации KEDA приложения можно настроить так, чтобы избежать холодного запуска. Если настроено масштабирование до нуля, то для новых событий может возникнуть холодный запуск.

Лимиты служб

Ресурс План потребления План категории "Премиум" План ценовой категории "Выделенный" ASE Kubernetes
Время ожидания по умолчанию (в мин) 5 30 301 30 30
Максимальное время ожидания (в мин) 10 не ограничено7 не ограничено2 unbounded unbounded
Максимальное количество исходящих подключений (на экземпляр) 600 активных (всего 1200) unbounded unbounded unbounded unbounded
Максимальный размер запроса (МБ)3 100 100 100 100 Зависит от кластера
Максимальная длина строки запроса3 4096 4096 4096 4096 Зависит от кластера
Максимальная длина URL-адреса запроса3 8192 8192 8192 8192 Зависит от кластера
ACU на экземпляр 100 210–840 100–840 210–2508 Цены на AKS
Максимальный объем памяти (ГБ на экземпляр) 1.5 3,5–14 1,75–14 3,5–14 Поддерживается любой узел
Максимальное число экземпляров (Windows/Linux) 200/100 100/20 зависит от SKU 9 1009 Зависит от кластера
Приложения-функции на план11 100 100 не ограничено4 unbounded unbounded
Планы службы приложений 100 на регион 100 шт. на одну группу ресурсов 100 шт. на одну группу ресурсов - -
Слоты развертывания на приложение10 2 3 1–209 20 Н/Д
Хранилище5 5 ГБ 250 ГБ 50–1000 ГБ 1 TБ Н/Д
Количество личных доменов на одно приложение 5006 500 500 500 Н/Д
личных доменов Поддержка SSL включено неограниченное количество SSL-соединений на основе SNI включено неограниченное количество SSL-соединений на основе SNI и 1 SSL-соединение на основе IP включено неограниченное количество SSL-соединений на основе SNI и 1 SSL-соединение на основе IP включено неограниченное количество SSL-соединений на основе SNI и 1 SSL-соединение на основе IP Н/Д

1 По умолчанию время ожидания для среды выполнения Функций версии 1.x в плане службы приложений не ограничено.
2 Требует, чтобы для плана службы приложений был задан параметр Всегда включено. Оплата по стандартным тарифам.
3 Такие ограничения заданы на уровне узла.
4 Фактическое количество приложений-функций, которые можно разместить, определяется интенсивностью работы приложений, размером экземпляров виртуальных машин и степенью использования соответствующих ресурсов.
5 Максимальный размер хранилища — это общий размер содержимого во временном хранилище для всех приложений в одном плане службы приложений. В плане потребления в качестве временного хранилище используется служба "Файлы Azure".
6 Если ваше приложение-функция размещается в плане потребления, поддерживается только параметр CNAME. Для приложений-функций в плане категории "Премиум" или в плане службы приложений вы можете сопоставить личный домен с помощью записи CNAME или A.
7 Гарантированное время до 60 мин.
8 Рабочие роли — это роли в которых размещаются приложения клиента. Они доступны в трех фиксированных размерах: один виртуальный ЦП/3,5 ГБ ОЗУ; два виртуальных ЦП/7 ГБ ОЗУ; четыре виртуальных ЦП/14 ГБ ОЗУ.
9 Дополнительные сведения см. в разделе Ограничения Службы приложений.
10 Включая рабочий слот.
11 В настоящее время в данной подписке существует ограничение в 5000 приложений-функций.

Ограничения на создание новых приложений-функций в существующей группе ресурсов

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

  • Ценовая категория не разрешена в этой группе ресурсов
  • Рабочие роли <SKU_name> недоступны в группе ресурсов <resource_group_name>

Это может произойти при соблюдении следующих условий:

  • Вы создаете приложение-функцию в существующей группе ресурсов, которая когда-либо содержала другое приложение-функцию или веб-приложение. Например, приложения потребления Linux не поддерживаются в той же группе ресурсов, что и выделенные планы Linux или Linux Premium.
  • Новое приложение-функция создается в том же регионе, что и предыдущее приложение.
  • Предыдущее приложение каким-то образом несовместимо с новым приложением. Это может произойти между разными SKU или операционными системами либо из-за других возможностей уровня платформы, таких как поддержка зоны доступности.

Причина, по которой это происходит, связана с тем, как планы приложений-функций и веб-приложений сопоставляются с разными пулами ресурсов при создании. Для различных номеров SKU требуется другой набор возможностей инфраструктуры. Когда вы создаете приложение в группе ресурсов, эта группа ресурсов сопоставляется и назначается определенному пулу ресурсов. Если вы попытаетесь создать другой план в этой группе ресурсов, а в сопоставленном пуле нет необходимых ресурсов, возникнет эта ошибка.

В таком случае создайте приложение-функцию и план размещения в новой группе ресурсов.

Функции сетей

Компонент План потребления План категории "Премиум" План ценовой категории "Выделенный" ASE
Ограничения для входящих IP-адресов ✅Да ✅Да ✅Да ✅Да
Частные конечные точки входящего трафика ❌Нет ✅Да ✅Да ✅Да
Интеграция с виртуальной сетью ❌Нет ✅Да (Региональный) ✅Да (Региональный и шлюз) ✅Да
Триггеры виртуальной сети (без HTTP) ❌Нет ✅Да ✅Да ✅Да
Гибридные подключения (только для Windows) ❌Нет ✅Да ✅Да ✅Да
Ограничения исходящих IP-адресов ❌Нет ✅Да ✅Да ✅Да

Выставление счетов

Планирование Сведения
План потребления Вы платите только за время выполнения функций. Плата начисляется на основе числа операций выполнения, времени выполнения и объема использованной памяти.
План категории "Премиум" План "Премиум" основан на количестве ядер в секунду и памяти, используемых в необходимых и предварительно занятых экземплярах. По крайней мере один экземпляр на план должен всегда оставаться в подготовленном состоянии. Этот план обеспечивает наиболее прогнозируемые цены.
План ценовой категории "Выделенный" Вы платите за приложения-функции в плане службы приложений так же, как и за другие ресурсы Службы приложений, такие как веб-приложения.
Среда службы приложений (ASE) Существует фиксированная месячная оплата для среды ASE, которая покрывает инфраструктуру и не меняется в зависимости от размера среды ASE. Кроме того, плата за план службы приложений виртуальных ЦП. Все приложения, размещенные в среде ASE, относятся к ценовой категории (SKU) Isolated.
Kubernetes Вы оплачиваете только расходы кластера Kubernetes; Дополнительная плата за Функции не взимается. Приложение-функция выполняется как рабочая нагрузка приложения в кластере, как и обычное приложение.

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