Какая архитектура для «рабочего процесса функции» с Azure? - PullRequest
0 голосов
/ 23 апреля 2019

Вариант использования

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

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

Лучшее решение будет иметь одну общедоступную функцию и несколько «приватных» функций, недоступных публично (запускаемых только другими функциями Azure)

Вопрос

Сначала я подумал об использовании Durable Functions, но похоже, что он не адаптирован для моего варианта использования, поскольку вызывать функции Azure из оркестатора нелегко.

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

Заранее спасибо!

J.

1 Ответ

0 голосов
/ 23 апреля 2019

Мне кажется, что ваша ситуация очень хорошо подходит для Durable Functions , поскольку вы можете запрограммировать свой рабочий процесс в функции оркестратора и обрабатывать повторы и исключения по своему усмотрению. Обратите внимание, что функция orchestrator вызывает функции activity, которые находятся в том же приложении функций. Связь между приложениями-функциями в долговременных функциях отсутствует (если вы не выполняете какое-либо «творческое» кодирование для вызова новой оркестровки из действия).

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

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

есть еще несколько советов по группированию функций в приложении Function.

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

...