Організація та ідентифікація найвищої оркестрації в Azure Functions за допомогою .NET 6

Організація та ідентифікація найвищої оркестрації в Azure Functions за допомогою .NET 6

3 Березня 2024 в 01:48 28

У сучасному світі обчислювальних технологій і облачних сервісів роль серверного програмування набула великого значення. Одним із популярних сервісів для розгортання обчислювальних задач у хмарних середовищах є Azure Functions – рішення від Microsoft, яке дозволяє реалізувати функціональний підхід до програмування та розгортання функцій, які відповідають на події та виклики HTTP-запитів.

В рамках Azure Functions існує можливість створення оркестрацій – послідовності функцій, які можуть виконуватися паралельно або послідовно з використанням патерна “виклик-відповідь”. У такому контексті, одне з ключових завдань – це ідентифікація та отримання інформації про найвищу оркестрацію, яка стартує з HTTP-тригера, без явного передавання ідентифікатора через всі функції експліцитно.

Один з варіантів розв’язання цієї задачі полягає у використанні Azure Durable Functions, які дозволяють створювати стійкі та надійні послуги на основі Azure Functions. Зокрема, для вирішення описаної проблеми можна використовувати функцію Durable Functions GetInstanceViewAsync для отримання інформації про стан оркестрації за її ідентифікатором. Проте, при використанні цього методу, можливо зіткнутися з обмеженнями, пов’язаними з відображенням інформації тільки про вищі рівні оркестрації в ієрархії.

Давайте розглянемо конкретний сценарій, де ми маємо додаток Azure Functions версії 4.28.4.4, спрямований на .NET 6.0, який має HTTP-тригер для запуску оркестрації з багатьма підоркестраціями. Наша мета – отримати ID найвищої оркестрації, що стартує з цього HTTP-тригера, без явного передавання ID через всі функції.

Нижче наведено кодовий приклад, який ілюструє описаний сценарій:

У цьому прикладі ми бачимо, що найвищий рівень оркестрації, яка була створена тригером HTTP, передає свій ідентифікатор через всі підоркестрації. Проте, в контексті активної функції, яка є кінцевою точкою оркестрації, інформація про цей ідентифікатор не доступна.

Щоб отримати ідентифікатор найвищої оркестрації, можна використати специфічний підхід. Наприклад, можна створити спеціальний атрибут або клас-фасад для отримання ідентифікатора оркестрації та передавання його в контекст функції. Це дозволить отримати доступ до ідентифікатора найвищої оркестрації безпосередньо в контексті активної функції.

У заключенні, ідентифікація найвищої оркестрації в додатку Azure Functions може бути вирішена з використанням різних підходів, включаючи використання Azure Durable Functions та спеціальних атрибутів або класів-фасадів для передачі ідентифікатора між функціями. Вибір конкретного підходу залежить від специфіки задачі та вимог до системи.