CONNECTED Conference 2023 - Aufzeichnungen jetzt hier verfügbar +++                     

Suche

über alle News und Events

 

Alle News

 

Vom 5. bis 7. Juni findet in London wieder die...

Weiterlesen

Live Coding on stage in Hamburg - exklusiv für...

Weiterlesen

Um Azure Ressourcen von DevOps aus zu deployen,...

Weiterlesen

In diesem Artikel wird ein beispielhafter Aufbau...

Weiterlesen

Die QUIBIQ Gruppe wurde am 9. März 2023 von dem...

Weiterlesen

Der Schnelleinstieg in die Welt der Tests für den...

Weiterlesen

Wenn man eine, im Azure Portal, entwickelte Logic...

Weiterlesen

WinSCP für BizTalk wird für den SFTP-Adapter...

Weiterlesen

Mit diesem Artikel wird ein klares Verständnis von...

Weiterlesen

In einer Logic App werden häufig Variablen...

Weiterlesen

How-to: Azure Durable Function und was sie von den normalen Functions unterscheidet

Durable Function ist eine Erweiterung der bestehenden Azure Function. Für sie gibt es eine Vielzahl von Anwendungsmöglichkeiten.

Verkettung von Functions

In erster Linie lassen sich damit die Möglichkeiten der Function erweitern, um etwa mehrere Functions zu verketten, die nacheinander aufgerufen werden (F1 -> F2 -> F3 -> F4). Unter normalen Umständen kann so etwas nur sehr unübersichtlich und umständlich umgesetzt werden. Functions, die aufeinander aufbauen, weil das Ergebnis von F1 für den Aufruf von F2 benötigt wird usw., können dagegen mit der Durable-Function einfach und übersichtlich gestaltet werden. Auch die Reihenfolge lässt sich einfach und auf einen Blick sehen.

Es lassen sich darüber hinaus mehrere Functions asynchron ausführen, um ein Gesamtergebnis zu bekommen (F1 -> F2, F3, F4 -> F5). Hat man mehrere Functions, die unterschiedlichen Aufgaben erledigen, unabhängig voneinander und/ oder auch parallel, muss am Ende nur das Gesamtergebnis abgewartet werden. Man kann also alle Functions asynchron/ parallel starten und das Ergebnis abwarten, was entsprechend der Function-Runtime auch im Vergleich zur sequenziellen Ausführung viel Zeit sparen kann.

Damit lässt sich z.B. aber auch ein HTTP-Call asynchron ausführen. Mithilfe der Durable-Funktion kann man dann zur Laufzeit den Status abfragen, wenn man auf eine Fremd-API zugreift oder selbst eine HTTP-Function zur Verfügung stellt, die für die Datenbeschaffung oder Konvertierung mehr Zeit benötigt. Wenn ein Ergebnis länger braucht, bis es zur Verfügung steht, lässt sich die Function per Durable-Function antriggern. Während der Laufzeit kann man den Status abfragen (z.B. Running, Finish …). Ist die Function dann fertig, bekommt man über dieselbe URL die Info Finish und das Ergebnis. Die Antwort kommt allerdings nicht automatisch. Man muss sie manuell per Status-URL abfragen.
 

Timeout frei einstellbar

Wichtigster Pluspunkt für die Durable-Function ist jedoch, dass es ein Timeout für die Ausführung gibt, der nicht wie bei der Standard Function bei 10-30 Minuten liegt. Für die Durable-Function lässt sich das Timeout variabel gestalten. Es sind sowohl fünf Minuten möglich, als auch, je nach Anwendungsfall, mehrere Stunden oder Tage, sogar bis hin zu „keinem“ Timeout. Dafür wird im Durable-Function-Projekt, in der Datei "Host.json" die Zeile „"functionTimeout": "06:00:00"“ eingefügt. In diesem Fall bedeutet diese Zeile ein Timeout von sechs Stunden.

Das kann notwendig sein, wenn man eine Function hat, die bei der Ausführung den Timeout-Rahmen für eine normale Function sprengt, weil die Ausführung eine Stunde dauert. Dieses Timeout bezieht sich auf den Aufruf der gesamten Durable-Function. Hier kann zum Beispiel ein Aufruf von fünf einzelnen Functions erfolgen, wobei F1-F4 dann 40 Minuten Runtime haben, aber F5 benötigt nochmal für Berechnungen oder ähnliches fünf Stunden. Bei einer Standard-Function wäre die Ausführung so nicht möglich, da sich hier ein Timeout von maximal 30 Minuten einstellen lässt. Entsprechend würde sich die Function nie testen lassen, da vor der Beendigung immer das Timeout eingreift und die Function mit Timeout beendet wird.

Fazit

Es gibt mehrere Anwendungsmöglichkeiten für eine Durable-Function, dennoch ist ihr Einsatz nicht immer sinnvoll und sollte auf den Anwendungsfall abgestimmt werden. Eine Durable-Function bringt viel zusätzlichen Code mit, der sonst nicht benötigt wird. Das kann die Übersichtlichkeit beeinträchtigen. Hinzu kommen mehrere zusätzliche Functions in der Liste, wovon nur eine aufgerufen wird, um die Durable-Function zu starten. Auch das Überwachen einer Durable-Function eine sehr aufwendige und komplexe Angelegenheit, weil man die Durable-Function und jede einzelne Function zusätzlich im Auge behalten muss.

Eine Durable-Function ist dann sinnvoll, wenn man an die Timeout-Grenze kommt oder eine Function durch verschiedene Aufgaben an Komplexität immer weiter zunimmt, weil man immer mehr Abhängigkeiten und asynchrone Aufgaben beachten und abwarten muss. Deshalb sollte bei der Entscheidung über die Verwendung einer Durable-Function immer Aufwand und Nutzen abgewogen werden.

Dieser quiTeq-Tipp kommt von Florian, QUIBIQ Stuttgart

Ihre Kontaktmöglichkeiten

Sie haben eine konkrete Frage an uns


 

Bleiben Sie immer auf dem Laufenden


 

Mit meinem "Ja" erkläre ich mich mit der Verarbeitung meiner Daten zur Zusendung von Informationen einverstanden. Ich weiß, dass ich diese Erklärung jederzeit durch einfache Mitteilung widerrufen kann. Bei einem Nein an dieser Stelle erhalte ich zukünftig keine Informationen mehr.

© QUIBIQ GmbH · Impressum · Datenschutz