Was ist Durable Functions?
- 7 Minuten
Mithilfe von Durable Functions können Sie komplexe zustandsbehaftete Funktionen in einer serverlosen Umgebung implementieren.
Im Beispielszenario wendet Ihr Unternehmen bei Projektentwurfsvorschlägen momentan einen manuellen Genehmigungsprozess an. Der Prozess besteht aus mehreren Schritten, und jeder Schritt in diesem Prozesses kann in der Dauer variieren. Die interne Implementierung eines automatisierten Prozesses ist komplex und teuer. Das Koordinieren jedes Schritts ist mühsam. Außerdem müssen Sie eine benutzerdefinierte Logik in den Workflow einbinden können.
In dieser Lerneinheit erfahren Sie, was die Vorteile von Durable Functions sind. Sie lernen die verschiedenen Funktionstypen und die wichtigsten Konzepte im Zusammenhang mit Durable Functions kennen.
Durable Functions
Durable Functions ist eine Erweiterung von Azure Functions. Während Azure Functions in zustandslosen Umgebungen zum Einsatz kommt, können Zustände zwischen Funktionsaufrufen mithilfe von Durable Functions beibehalten werden. Mithilfe dieses Ansatzes können Sie komplexe zustandsbehaftete Ausführungen in einer serverlosen Umgebung vereinfachen.
Durable Functions kann entsprechend Ihren Bedürfnissen skaliert werden und stellt ein kostengünstiges Mittel dar, komplexe Workflows in der Cloud zu implementieren. Zu den Vorteilen der Verwendung von Durable Functions gehört Folgendes:
Mithilfe dieser Erweiterung können Sie ereignisgesteuerten Code schreiben. Eine langlebige Funktion kann asynchron auf eines oder mehrere externe Ereignisse warten und dann mehrere Aufgaben als Reaktion auf diese Ereignisse ausführen.
Sie können Funktionen miteinander verketten. Sie können häufige Muster implementieren, z. B. Auffächern/Auffächern nach innen. Hierbei wird eine Funktion verwendet, um parallel andere aufzurufen und dann die Ergebnisse zusammenzufassen.
Sie können Funktionen orchestrieren und koordinieren und die Reihenfolge bestimmen, in der die Funktionen ausgeführt werden sollen.
Der Zustand wird für Sie verwaltet. Sie müssen keinen eigenen Code schreiben, um Zustandsinformationen für eine zeitintensive Funktion zu speichern.
Mit dauerhaften Funktionen können Sie zustandsbehaftete Workflows mithilfe einer Orchestrierungsfunktion definieren. Eine Orchestrierungsfunktion bietet diese zusätzlichen Vorteile:
Sie können die Workflows in Code definieren. Sie müssen keine JSON-Beschreibung schreiben oder ein Tool für die Erstellung eines Workflows verwenden.
Funktionen können sowohl synchron als auch asynchron aufgerufen werden. Die Ausgabe der aufgerufenen Funktionen wird lokal in Variablen gespeichert und in anschließenden Funktionsaufrufen verwendet.
Azure überprüft den Fortschritt einer Funktion automatisch, wenn die Funktion abwartet. Azure entscheidet sich möglicherweise dafür, die Funktion zu pausieren und ihren Zustand zu speichern, während die Funktion wartet, um Ressourcen zu schonen und Kosten zu reduzieren. Wenn die Funktion dann wieder ausgeführt wird, hebt Azure das Pausieren der Funktion auf und stellt ihren Zustand wieder her.
Funktionstypen
Sie können drei dauerhafte Funktionstypen verwenden: Client, Orchestrator und Aktivität.
Clientfunktionen sind der Einstiegspunkt, um eine Instanz einer Durable Functions-Orchestrierung zu erstellen. Sie können als Reaktion auf viele verschiedene Ereignisse ausgeführt werden, z. B. wenn eine neue HTTP-Anforderung eintrifft, eine Nachricht in eine Nachrichtenwarteschlange verschoben wird oder ein Ereignis in einem Ereignisdatenstrom ankommt. Sie können in jeder der unterstützten Programmiersprachen geschrieben werden.
Orchestrator-Funktionen beschreiben, wie Aktionen ausgeführt werden, und die Reihenfolge, in der sie ausgeführt werden. Sie schreiben die Orchestrierungslogik in Code (C# oder JavaScript).
Aktivitätsfunktionen sind die grundlegenden Arbeitseinheiten in einer Durable Functions-Orchestrierung. Eine Aktivitätsfunktion enthält die tatsächlichen Tätigkeiten, die von den Aufgaben ausgeführt werden, die orchestriert werden.
Anwendungsmuster
Mithilfe von Durable Functions können Sie viele gängige Workflowmuster implementieren. Zu diesen Mustern gehören die folgenden:
Funktionskette: In diesem Muster führt der Workflow eine Abfolge von Funktionen in einer angegebenen Reihenfolge aus. Die Ausgabe einer Funktion wird dabei als Eingabe für die nächste Funktion der Folge verwendet. Die Ausgabe der letzten Funktion wird verwendet, um ein Ergebnis zu generieren.
Auffächern/Auffächern nach innen: Bei diesem Muster werden mehrere Funktionen parallel ausgeführt, und es wird auf den Abschluss aller Funktionen gewartet. Sie können die Ergebnisse der parallelen Ausführungen aggregieren oder sie zum Berechnen eines Endergebnisses verwenden.
Asynchrone HTTP-APIs: Dieses Muster behebt das Problem der Koordinierung des Zustands langer Vorgänge mit externen Clients. Ein HTTP-Aufruf kann die zeitintensive Aktion auslösen und dann den Client an einen Statusendpunkt umleiten. Der Client kann nachsehen, wann der Vorgang abgeschlossen ist, indem er diesen Endpunkt abruft.
Monitor: Dieses Muster implementiert einen wiederkehrenden Prozess in einem Workflow, der möglicherweise nach einer Änderung des Zustands sucht. Sie könnten dieses Muster beispielsweise für Abfragen verwenden, die so lange ausgeführt werden, bis bestimmte Bedingungen erfüllt sind.
Menschliche Interaktion: Dieses Muster kombiniert automatisierte Prozesse, die auch eine menschliche Interaktion beinhalten. Ein manueller Prozess innerhalb eines automatisierten Prozesses ist schwierig, da Personen nicht im gleichen hohen Maß verfügbar und reaktionsfähig sind wie die meisten Computer. Sie können Benutzerinteraktion mithilfe von Zeitlimits und einer Kompensierungslogik integrieren, die ausgeführt wird, wenn die ordnungsgemäße Interaktion des Menschen nicht innerhalb einer festgelegten Antwortzeit erfolgt. Ein Genehmigungsprozess ist ein Beispiel für einen Prozess, der Benutzerinteraktion erfordert.
Vergleich mit Logic Apps
Durable Functions und Logic Apps sind beides Azure-Dienste, die die Verwendung serverloser Workloads ermöglichen. Durable Functions von Azure ist als leistungsstarke serverlose Computefunktion zur Ausführung benutzerdefinierter Logiken ausgelegt. Logic Apps von Azure eignet sich besser für die Integration von Azure-Diensten und -Komponenten. Sie können beide Technologien verwenden, um komplexe Orchestrierungen zu erstellen. Mit Azure Durable Functions entwickeln Sie Orchestrierungen, indem Sie Code schreiben und die Erweiterung „Durable Functions“ verwenden. Mit Logic Apps erstellen Sie Orchestrierungen über die Designoberfläche oder durch Bearbeiten von Konfigurationsdateien.
In der folgenden Tabelle sind einige der wichtigsten Unterschiede zwischen Azure Durable Functions und Azure Logic Apps aufgeführt.
| Aufgabe | Dauerhafte Azure-Funktionen | Azure Logic Apps |
|---|---|---|
| Entwicklung | Code First (imperativ) | Design First (deklarativ) |
| Konnektivität | Etwa ein Dutzend Bindungstypen sind integriert. Sie können Code für benutzerdefinierte Bindungen schreiben. | Große Sammlung an Connectors. Enterprise Integration Pack für B2B. Sie können auch benutzerdefinierte Connectors erstellen. |
| Aktionen | Jede Aktivität ist eine Azure-Funktion. Sie schreiben den Code für Aktivitätsfunktionen. | Umfangreiche Sammlung vorgefertigter Aktionen. Sie integrieren benutzerdefinierte Logiken über benutzerdefinierte Connectors. |
| Überwachung | Azure Application Insights | Azure-Portal, Azure Monitor-Protokolle |
| Verwaltung | REST-API, PowerShell, Visual Studio | Azure-Portal, REST-API, PowerShell, Visual Studio, Visual Studio Code-Erweiterung |