Microsofts PaaS-Welt

Komponenten in der Cloud schnell entwickeln

20.09.2017
Von 


Holger Fleck ist Principal SharePoint Consultant bei Axians IT Solutions. In den 20 Jahren IT-Berufserfahrung hat er verschiedene Projekten in den Bereichen Entwicklung, Collaboration- und Prozessautomatisierung realisiert und begleitet. Als aktuelle Schwerpunkte beschäftigt sich Holger Fleck mit den Themen Daten-Governance und PaaS-Systeme.

Azure Functions

Mit Hilfe von Azure Functions wird eine programmierte Methode im Internet bereitgestellt. Im Gegensatz zu dem Workflow-System von Flow beziehungsweise Logic Apps stehen hierbei verschiedene Technologien zur Verfügung: als Skript (Bash, Batch, Powershell) oder als echte Programmiersprache (C#, F#, Javascript, Typescript, PHP, Python). Die Einsatzvielfalt ergibt sich aber vor allem daraus, dass eine Azure Function unterschiedliche Auslöser benutzen kann.

Neben HTTP-Request-Triggern, optional auch als Webhook, bietet Azure eine zeitgesteuerte Ausführung für regelmäßige Jobs an. So lassen sich beispielsweise nächtliche Prüfroutinen realisieren. Sehr häufig sollen jedoch Aufrufe aufgrund von Änderungen in Datensystemen erfolgen. Um neue Einträge in Datenströmen (zum Beispiel Event Hub, Queue Storage und Blob Storage, Service-Bus) oder Online-Dateisystemen (OneDrive, Azure File Storage, Dropbox, FTP etc.) zu verarbeiten, stehen den Azure Functions spezielle Trigger zur Verfügung. Somit erübrigt sich der Umweg über einen HTTP-Request.

Je nach Art des Auslösers wird ein anderer Methodenkopf benötigt: ein C# HttpRequest Trigger ist eine "async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)"-Methode, während ein TypeScript Timer Trigger mit folgendem Methodenkopf arbeitet: "function run (context: any, myTimer: any): any".

Zum schnellen Einstieg stehen wie für Flow und Logic Apps Vorlagen bereit. Diese sind fertig konfiguriert und enthalten einen ausführbaren Methodenrumpf. So wird mit wenigen Klicks ebenfalls eine lauffähige Web-Service-Methode bereitgestellt.

Früher mussten Themen wie Sicherheit und Logging programmiert oder umständlich konfiguriert werden. Damit sind Änderungen wie ein Staging fehleranfällig und aufwendig. Um dies zu vermeiden, sind Azure Functions weitreichend konfigurierbar. Nachfolgend eine Übersicht der wesentlichen Punkte.

Der wichtigste Aspekt einer Lösung ist ein kontrolliertes Deployment. Neben der Anbindung an größere Standardwerkzeuge wie Visual Studio Teams Services oder GitHub und einfachen Dateiablagen wie OneDrive oder Dropbox hat Microsoft Kudu entwickelt. Hierbei handelt es sich um eine Oberfläche, mit der die Umgebung aller Azure-Web-Apps (einschließlich Azure Functions) kontrolliert werden kann. Über eine Debug-Konsole (CMD oder Powershell) hat man direkten Zugriff auf das Dateisystem und damit auf alle Konfigurationsdateien (JSON) der Umgebung, in der die Azure Function ausgeführt wird. Des Weiteren lassen sich Diagnose-Dumps und eine REST API herunterladen sowie Logs konfigurieren. Somit können Azure Functions in jeden Deployment-Prozess integriert werden.

In der Regel verarbeiten Dienste nicht nur Übergabeparameter, sondern greifen auch auf andere Ein- oder Ausgabesysteme zu. Dabei müssen die richtigen Quellen angesprochen und Authentifizierungs- sowie andere Parameter gesetzt werden. Da sich diese Werte zum Beispiel bei einem Staging oder bei einer Migration ändern, wird zur Sicherung der Qualität häufig eine Abstraktionsschicht implementiert. Azure Functions bietet hierfür ein Binding als Trennung zwischen Funktionalität und Definition der Ein- und Ausgabesysteme an. So lassen sich ohne Änderung des Quelltexts oder eine eigene Schicht die angebundenen Systeme austauschen. Leider ist dieses Binding derzeit nur für Azure-Dienste (Azure Event Hub, Azure Queue Storage etc.) und OneDrive realisiert.

Fazit

Durch die umfangreichen Einstellungen und das Exception Handling ist Microsoft Flow mehr als nur ein buntes Spielzeug und kann auch im Enterprise-Umfeld produktiv eingesetzt werden. Flow ist so intuitiv zu bedienen, dass tatsächlich auch computeraffine Power-User ohne Programmierkenntnisse nach ein paar Stunden Einarbeitung zurechtkommen. Besondere Bedeutung hat hier das leichte Zusammenspiel mit den anderen Office-Produkten, insbesondere mit Sharepoint, Forms, aber auch PowerApps. In der Praxis können Unternehmen so auf Unterstützung durch die eigene IT-Abteilung oder externe Dienstleister verzichten und Kosten reduzieren, indem sie einzelne Komponenten wie zum Beispiel Genehmigungsprozesse selbst umsetzen. Allerdings ist Flow nur bei kleineren Prozessen mit wenigen Schritten sinnvoll. Für größere und komplexere Workflows mit mehr als 30 Schritten ist der Editor ungeeignet. Hier bietet sich Logic Apps oder Azure Functions an.

Durch die Strukturierung in der Javascript Object Notation (JSON) lassen sich mit Logic Apps etwas komplexere Prozesse umsetzen als in Flow. Sobald Daten konvertiert werden müssen, sind vor allem Inline-Funktionen nötig. Daher wenden sich die Logic Apps auch an Programmierer. Flow ist für kleine Helfer-Workflows in Fachabteilungen geeignet, während Logic Apps für einfache Komponenten in komplexeren Systemen Anwendung findet.

Azure Functions umfasst eine größere Spanne: Es lassen sich zwar kleine Batch-Skripte realisieren. Doch durch die flexible Konfiguration aller Themen, die Skalierung der Infrastruktur, die Implementierung in Entwicklungsplattformen wie Visual Studio und die Unterstützung beim Deployment sind der Komplexität der Web-Services keine Grenzen gesetzt.