
Im November hielt ich einen Vortrag bei Live! 360 darüber, wie man einen grundlegenden Webhook-Client mit Azure Functions erstellt. Dieser Blogbeitrag wird diesen Vortrag zusammenfassen und die Dinge so aufbereiten, dass Sie die Grundlagen von Azure Functions verstehen.
Azure Functions Webhook Schnittstelle
Im November hielt ich einen Vortrag bei Live! 360 darüber, wie man einen einfachen Webhook-Consumer mit Azure Functions erstellt. Dieser Blogbeitrag wird diesen Vortrag rekapitulieren und die Dinge vereinfachen, damit Sie die Grundlagen von Azure Function verstehen und die Framework-Lösung auf Github erweitern.
Was sind Webhooks?
Warum serverlose Funktionen?
Serverlose Funktionen sind eine großartige Innovation, um Lösungen schnell bereitzustellen und gleichzeitig den Aufwand für Organisationen zu reduzieren. Das Fehlen von Hardware zur Wartung ist ein großer Vorteil, und die serverlosen Funktionen können unvorhersehbare Verkehrsflüsse bewältigen. Sie sind einfach zu implementieren und zu aktualisieren, sodass Sie schnell einsatzbereit sind.
Synergie!
Die Kombination von Webhooks und serverlosen Funktionen macht es sehr einfach, reiche Ökosysteme für Automatisierung oder Benutzerinteraktion zu schaffen. Die Möglichkeit, auf die Ereignisse und Daten zu reagieren, die von all diesen unterschiedlichen Systemen erzeugt werden, beseitigt die Notwendigkeit für komplizierte Middleware und erleichtert die Integration von benutzerdefiniertem Code und Ereignissen erheblich.
Azure Functions Grundlagen
Azure Functions können über die Azure-Konsole oder Visual Studio erstellt werden. Ich empfehle Ihnen, beides auszuprobieren, damit Sie mit den jeweiligen Erfahrungen vertraut sind. Eines der schönen Dinge bei der Erstellung in der Azure-Konsole ist, dass Sie die resultierende Azure Function als Visual Studio-Lösungsdatei herunterladen können. Visual Studio ist die gleiche vertraute starke IDE-Erfahrung, die Sie kennen und lieben.
Es gibt Vorteile für beide Methoden. Die Azure Function-Konsole gibt Ihnen direkten Zugriff, um die Parameter des Funktionsbetriebs zu steuern, von verfügbaren Ressourcen bis zu monatlichen Nutzungslimits zur Kostenkontrolle. Alle diese Optionen können über die host.json-Datei und Umgebungsvariablen von Visual Studio aus eingestellt und manipuliert werden.
Erstellen eines Basic Webhook Consumers
Schritt 1
Erstellen Sie eine neue Visual Studio-Lösung und fügen Sie dieser Lösung ein neues Projekt hinzu.

Schritt 2
Klicken Sie mit der rechten Maustaste auf den Projektknoten und fügen Sie ein neues Element hinzu. Wählen Sie Azure Function.

Schritt 3
Jetzt haben Sie ein Ihnen sehr vertrautes Visual Studio-Projekt. Sie sollten eine Vorlage für eine grundlegende C# Azure Function haben. Zeit, etwas Code zu erstellen, um Ihren Webhook zu nutzen.

Schritt 4
Lokal debuggen. Das stimmt, Sie können das Ganze lokal mit allen vertrauten Visual Studio-Debugging- und Introspektionswerkzeugen debuggen. Achten Sie auf die Debugging-Konsole, da sie viele wertvolle Informationen über jeden Anruf enthält, den Sie während der lokalen Tests an Ihre Funktion machen.

Schritt 5
Veröffentlichen Sie die Azure Function. Klicken Sie mit der rechten Maustaste auf den Projektknoten und wählen Sie Veröffentlichen. Wählen Sie Azure Function und Neue erstellen. Beachten Sie, dass Sie auch eine vorhandene Funktion aktualisieren könnten. Die Funktion wird jetzt in Ihrer Azure-Konsole angezeigt.

Potenzielle Gefahren
Die häufigste Falle, in die Menschen beim Arbeiten mit Webhook-Verbrauch und serverlosen Funktionen geraten, ist, dass die Funktion zu lange läuft. Dies führt entweder dazu, dass die Funktion sehr kostspielig wird oder vollständig fehlschlägt, weil das Webhook-POST abläuft. Es gibt einige Dinge, die Sie tun können, um diese Probleme zu mildern.
Webhook-Verbraucher sollten asynchron laufen. Die Daten sollten so schnell wie möglich aufgenommen und dann verarbeitet werden. Der häufige Designfehler besteht darin, zu versuchen, die Daten in Echtzeit zu verarbeiten, während sie eingehen. Das funktioniert, solange die Daten eine konsistente und kleine Größe haben, aber wenn die Datengröße zunehmen oder inkonsistent sein kann, ist es am besten sicherzustellen, dass die Daten empfangen werden und die HTTP-Anfrage beantwortet wird, damit keine Zeitüberschreitungen auftreten.
Eine weitere Sache, die helfen kann, langwierige Prozesse zu mindern, ist, die geposteten Daten zu speichern und die serverlose Funktion zu verwenden, um einen Containerprozess mit etwas wie Azure Container Services (AKS) zu starten, um die langlaufenden Teile zu handhaben. Bei diesem Design sollte die serverlose Funktion den Container 'feuern und vergessen', sodass der Container seine Ergebnisse entweder in ein Protokoll oder einen anderen Benachrichtigungsdienst Ihrer Wahl postet. Dies hält die serverlose Funktion so kurz wie möglich und ermöglicht dennoch komplexe Verarbeitungen.
Lassen Sie uns diese Kerze anzünden
Da haben Sie es. Nun können Sie losziehen und Ihr eigenes reiches Ökosystem mit serverlosen Funktionen und Webhooks erstellen. Unten finden Sie eine Liste weiterer Ressourcen, die Ihnen helfen, tiefer in Azure Functions einzutauchen.
-Nick Zimmerman
PS – unten sind einige zusätzliche Ressourcen zu Azure Functions, die Sie interessant finden könnten – viel Spaß!