Azure Functions против WebJobs: что выбрать
Сравните Azure Functions и WebJobs: ключевые различия в масштабировании, ценообразовании, триггерах и в том, когда выбирать одно вместо другого.
Обе технологии относятся к категории code-first и ориентированы на разработчиков (в отличие от design-first сервисов рабочих процессов). Они позволяют оркестрировать и интегрировать различные бизнес-приложения в единый рабочий процесс и предоставляют больше контроля над производительностью вашего workflow, а также возможность писать собственный код в составе бизнес-процесса.
Azure WebJobs
WebJobs - это часть Azure App Service, которую можно использовать для автоматического запуска программы или скрипта. Существует два типа WebJob:
- Continuous. Выполняются в непрерывном цикле. Например, можно использовать непрерывный WebJob для проверки появления новой фотографии в общей папке.
- Triggered. Могут запускаться вручную или по расписанию.
Для определения действий вашего WebJob можно писать код на нескольких разных языках. Например, можно скриптить WebJob с помощью Shell Script (Windows, PowerShell, Bash). Либо написать программу на PHP, Python, Node.js, JavaScript или .NET, а также на любом языке, поддерживаемом фреймворком.
Azure Functions
Azure Function во многом похожа на WebJob; основное различие в том, что вам совсем не нужно беспокоиться об инфраструктуре.
Это идеальный вариант для запуска небольших фрагментов кода в облаке. Azure будет автоматически масштабировать вашу функцию в ответ на нагрузку, а в consumption plan вы платите только за время, в течение которого ваш код выполняется.
Они могут запускаться по различным триггерам, например:
- HTTPTrigger. Выполняется в ответ на запрос, отправленный по протоколу HTTP.
- TimerTrigger. Запуск по расписанию.
- BlobTrigger. При добавлении нового blob в учётную запись Azure Storage.
- CosmosDBTrigger. В ответ на новые или обновлённые документы в NoSQL-базе данных.
Различия
| Возможность | Azure WebJobs | Azure Functions |
|---|---|---|
| Автоматическое масштабирование | Нет | Да |
| Разработка и тестирование в браузере | Нет | Да |
| Оплата pay-per-use | Нет | Да |
| Интеграция с Logic Apps | Нет | Да |
| Пакетные менеджеры | NuGet при использовании WebJobs SDK | NuGet и NPM |
| Может быть частью приложения App Service | Да | Нет |
Обеспечивает плотный контроль над JobHost | Да | Нет |
Выводы
В целом Azure Functions гибче и проще в администрировании. Однако WebJobs - лучший выбор, когда:
- Вы хотите, чтобы код был частью существующего приложения App Service и управлялся как часть этого приложения, например в той же среде Azure DevOps.
- Вам нужен плотный контроль над объектом, прослушивающим события, которые запускают код.
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.