Функции Azure Webjobs vs Azure: как выбрать

Я создал Azure Webjobs это использование триггеров, и я только что узнал о Функции Azure.

из того, что я понимаю, функции Azure, похоже, перекрываются с функциями Azure Webjobs, и мне трудно понять, когда выбирать между функцией и Webjob:

  • В отличие от Webjobs, функции могут быть запущены только, он не был разработан для запуска непрерывного процесса (но вы можете написать код для создания непрерывная функция.)

  • вы можете писать Webjobs и функции, используя множество языков (C#, node.js, python ...) но вы можете написать свою функцию с портала Azure, чтобы было проще и быстрее разработать тест и развернуть функцию.

  • Webjobs выполняются как фоновые процессы в контексте веб - приложения Службы приложений, приложения API или мобильного приложения, тогда как функции выполняются с использованием классического/динамического плана службы приложений.

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

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

есть ли какие-либо другие соображения, чтобы иметь в виду, когда вам нужно выбрать ?

4 ответов


есть несколько вариантов здесь в App Service. Я не буду касаться логических приложений или автоматизации Azure, которые также касаются этого пространства.

Azure WebJobs

в этой статье честно говоря, лучшее объяснение, но я кратко изложу здесь.

по требованию WebJobs ака. Запланированные задания ака. Срабатывает Веб-Заданий

запускаемые WebJobs-это WebJobs, которые запускаются один раз, когда вызывается URL-адрес или когда свойство расписания присутствует в расписании.Иов. Запланированные веб-задания-это просто веб-задания, в которых было создано задание планировщика Azure для вызова URL-адреса по расписанию, но мы также поддерживаем свойство schedule, как упоминалось ранее.

резюме:

  • + исполняемый файл/скрипт по требованию
  • + плановые расстрелы
  • - должен вызвать via .конечная точка scm
  • - масштабирование ручное
  • - VM всегда требуется

непрерывные WebJobs (не SDK)

эти задания работают вечно, и мы разбудим их, когда они рухнут. Вы должны включить Always On для их работы, что означает их запуск на базовом уровне и выше.

резюме:

  • + исполняемый файл/скрипт всегда работает
  • - требуется всегда на базовом уровне и выше
  • - VM всегда требуется

непрерывные WebJobs с WebJobs SDK

это не что-то с точки зрения "WebJobs the feature". По сути, у нас есть этот сладкий SDK, который мы написали для таргетинга WebJobs, который позволяет выполнять код на основе простых триггеров. Поговорим об этом позже.

резюме:

  • + исполняемый файл/скрипт всегда работает
  • + богаче ведения журнала / приборной панели
  • + Триггеры поддерживаются вместе с длительными задачами
  • - требуется всегда на базовом уровне и выше
  • - масштабирование вручную настроить
  • - начало работы может быть немного утомительным
  • - VM всегда требуется

Azure WebJobs SDK

Azure WebJobs SDK является полностью отдельным SDK от WebJobs функция платформы. Он предназначен для запуска в WebJob, но может быть запущен везде. У нас есть клиенты, которые запускают их на рабочих ролях и даже на prem или других облаках, хотя поддержка-это только лучшее усилие.

SDK просто упрощает запуск некоторого кода в ответ на какое-то событие и делает привязку к services/etc. простой. Это честно лучше всего покрыто некоторыми docs, но суть в том, что" событие " + " код " природа. Мы также сделали некоторые интересные работы extensiblity, но это вторично по отношению к ядру цель.

резюме:

  • большинство из них упомянуты выше
  • + вы можете расширить и запустить все, что хотите. Полный контроль.
  • - HTTP-материал немного шаткий, но он работает

Функции Azure

функции Azure - это все о принятии этой основной цели SDK WebJobs, размещении его в качестве службы и упрощении начала работы с другими языками. Мы также вводим Концепция "без сервера" здесь, потому что это имело смысл сделать - мы знаем, как наш SDK масштабируется, поэтому мы можем делать интеллектуальные вещи для вас.

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

большая часть "рамки", которые мы сделали для улучшения функций, проходят через SDK WebJobs. Например, мы будем загружать новый NuGet для WebJobs, который действительно резко увеличивает скорость ведения журнала, что имеет огромные преимущества perf для пользователей WebJobs SDK. В функциях доставки как "WebJobs SDK как услуга" мы действительно улучшили много проблем с опытом.

  • + поддерживается множество языков
  • + полностью управляемый, динамичный масштабирование
  • + простой в использовании портал w / UX для управления подключениями / etc.
  • - хост не настраивается (пока)
  • ~ работает в отдельном "приложении", которое требует некоторой конфигурации в вашем РЕПО, но упрощает долгосрочное обслуживание.
  • ~ нет инструментов (пока) некоторые инструменты теперь в alpha или preview -https://www.npmjs.com/package/azurefunctions (обновление 2017 февраля : Визуальная Студия Инструменты для функций Azure теперь доступны в preview: https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/)

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

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


будучи функциями Azure на основе SDK WebJobs, они предоставляют большую часть функций, уже доступных в WebJobs,но с некоторыми новыми возможностями.

с точки зрения триггеры в дополнение к тем, которые уже доступны для веб-заданий (например, служебная Шина, очереди хранения, Blob-объекты хранения, расписания хрона, веб-книги, EventHub и поставщики облачных хранилищ файлов), функции Azure могут запускаться как API. И HTTP-вызовы не требуют учетных данных kudu, но могут быть проверку подлинности с помощью Azure AD и сторонних поставщиков.

в отношении выходы, единственная разница в том, что функции могут возвращать ответ при вызове через HTTP.

оба поддерживают широкий различные языки, в том числе: bash (.sh), партия (.летучая мышь. / cmd), C#, F#, узел.Js, PHP, PowerShell и Python.

будучи функций в настоящее время инструмент все еще не идеально. Но Microsoft работает над этим. Надеюсь, мы получим такую же гибкость разработки и тестирования функций локально, как в настоящее время для WebJobs с Visual Studio.

самые значительные и крутые преимущества принесенные функциями альтернатива иметь Динамический План Обслуживания С "Serverless" модель, в котором нам не нужно управлять экземплярами VM или масштабированием; все это управляется для нас. Кроме того, не имея выделенных экземпляров, мы платим только за ресурсы, которые мы фактически использовать.

более подробное сравнение между двумя здесь: https://blog.kloud.com.au/2016/09/14/azure-functions-or-webjobs/

HTH:)


по словам docs функции Azure имеют следующее, чего нет в WebJobs:

  • автоматическое масштабирование (процессор и память масштабируются в соответствии с потребностями, определенными во время выполнения)
  • Pay-per-use pricing (план потребления вместо плана обслуживания приложений)
  • больше событий триггера (например, WebHooks)
  • разработка в браузере (Visual Studio все еще возможна)
  • поддержка F#

проще говоря: функции Azure это новое животное. Если у вас еще нет плана обслуживания приложений, я бы пошел с функциями, потому что в долгосрочной перспективе я не вижу причин, почему лучше начинать с WebJobs (инструменты функций могут быть не такими стабильными).


Я хотел бы добавить еще два пункта выше длинный и немного старых постов. если вы выбрали план потребления в функциях azure, ниже приведены ограничения

Если вы хотите выполнить какие-либо задания более 10 минут, выберите webjobs. Функции Azure, работает только для 5 минут по умолчанию, если ваш процесс превышает 5 минут, функция azure выдает исключение тайм-аута. Ты можешь!--3-->увеличить время 10 минут хозяин.в JSON.

Примечание: нет проблемы тайм-аута, если вы используете функции Azure плана службы приложений.

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