Cloud-Integration

Enterprise Application Integration mit Microsoft Azure Logic Apps

Manuel Meyer arbeitet als Senior Consultant und Trainer für .NET bei der Trivadis AG in Zürich. Er beschäftigt sich unter anderem mit dem Microsoft .NET-Stack - vom Client über den Server bis zur Cloud - sowie mit interdisziplinären Themen wie Performance und Security. Er bloggt regelmäßig unter http://www.manuelmeyer.net.
Die Systemlandschaften in vielen Unternehmen gleichen einem Sammelsurium aus On-Premise- und SaaS-Angeboten sowie selbst entwickelten Cloud-Services. Entwicklern soll das Verknüpfen dieser Systeme mit den Azure Logic Apps von Microsoft erleichtert werden.

Vor wenigen Jahren noch als Zukunftsmusik bezeichnet, ist Cloud Computing inzwischen in den Unternehmen angekommen. Eigenschaften wie Skalierbarkeit, Elastizität und Pay-as-you-go überzeugen immer mehr Entscheider. Neben Line-of-Business-Anwendungen, die ganz oder teilweise in die Cloud verschoben werden, erleben auch Angebote für Software as a Service (SaaS) einen enormen Aufschwung. Immer mehr Unternehmen weltweit setzen für Aufgaben wie E-Mail, Dokumenten-Management oder Office sogar vollständig auf Anbieter wie Google oder Microsoft und beziehen diese Funktionalitäten als Services direkt aus der Cloud.

EAI erlebt einen zweiten Frühling

Das klassische Thema Enterprise Application Integration (EAI), also die Integration von Daten und Prozessen aus unterschiedlichen IT-Systemen, erlebt mit der Cloud-Revolution wieder einen Aufschwung. Die Systemlandschaften in den Unternehmen gleichen einem Baukasten aus On-premise-Systemen, SaaS-Angeboten und selbst entwickelten Cloud-Services. Dieser "Flickenteppich" verlangt nach Lösungen, die Entwicklern das Verknüpfen unterschiedlichster Systeme erleichtern.

Mit den "Azure Logic Apps" bietet Microsoft ein Produkt an, das genau an diesem Punkt ansetzt. Logic Apps ist einer von vier Services, die auf dem Microsoft Azure AppService aufbauen.

Der Azure AppService
Der Azure AppService

Der Azure AppService ist ein Teil der Web & Mobile Services von Microsoft Azure. Er stellt die Basis dar, auf der Cloud-Lösungen entwickelt werden können, und regelt grundlegende Eigenschaften - beispielsweise die zur Verfügung stehende Hardwarekapazität oder die Abrechnung.

Basierend auf dem AppService können mit Unterstützung von Frameworks Anwendungen erstellt werden. Momentan sind folgende Anwendungstypen verfügbar:

  • Web Apps: Hosting für Websites

  • Mobile Apps: Backends für mobile Cross-Platform-Anwendungen

  • API Apps: REST Web Service basierende Services

  • Logic Apps: Integrationslösungen

Der AppService vereint Aspekte wie Bereitstellung, Konfiguration, Monitoring, Skalierung und Abrechnungsmodell in einem einheitlichen Konzept. Das vereinfacht das Handling dieser Services und ermöglicht deren gemeinsame Verwaltung. Weitere Infos zum AppService finden sich auf der offiziellen Webseite der Azure AppServices.

Logic Apps

Logic Apps bauen auf dem Azure AppService auf. Sie ermöglichen quasi das "Zusammenstecken" einer kompletten Integrationslösung. Einzelne funktionale Blöcke, kurz auch Actions genannt, können in einer Logic App zu einem Workflow-artigen Ablauf verbunden werden. Diese funktionalen Blöcke sind als Azure API Apps implementiert und werden ebenfalls auf dem AppService gehostet. Es handelt sich dabei um Anwendungen, die klar definierte Schnittstellen für Input und Output besitzen. In der Logic App kann der Output einer Action als Input der folgenden Action definiert und dort weiterverarbeitet werden.

Azure bietet eine große Liste an bestehenden Actions, die sofort und Out-of-the-Box einsetzbar sind. Viele davon sind Konnektoren, welche über Standardprotokolle - wie beispielsweise HTTP, FTP oder SMTP - mit zu vernetzenden Systemen kommunizieren können. Die folgende Liste zeigt eine Auswahl von Konnektoren, die im Azure Marketplace verfügbar sind:

  • SQL Server Connector

  • Oracle Database Connector

  • Facebook Connector

  • Twitter Connector

  • DropBox Connector

  • Office 365 Connector

  • Salesforce Connector

  • Sharepoint Connector

  • SAP Connector

Zusätzlich zu diesen Konnektoren gibt es im Marketplace Actions, welche über die gängigen Protokolle HTTP, FTP, SMTP, POP3 oder den Azure Service Bus kommunizieren. Die vollständige Liste aller verfügbaren Konnektoren ist hier zu finden. Falls die bestehenden Konnektoren nicht ausreichen, besteht die Möglichkeit eigene API Apps mit Visual Studio zu erstellen. Visual Studio bietet dazu eine Projektvorlage, die das benötigte Gerüst bereitstellt und mit eigenem Code erweitert werden kann.

Auch auf GitHub gibt es ein Repository für Logic Apps. Es enthält Community Actions und neue Actions, die im bisherigen Standardkatalog von Microsoft noch nicht verfügbar sind. Dazu gehören unter anderem Actions für die Ausführung von custom C# oder JavaScript Code, für die Verbindung mit PowerBI oder einem Azure Event Hub.

Logic App Templates

Beim Erstellen einer Logic App kann aus einer Liste von Vorlagen ausgewählt werden. Zwei dieser Templates werden in diesem Abschnitt vorgestellt. Der erste Anwendungsfall befasst sich mit dem Backup von Dateien auf einem FTP Server ins Blob Storage der Azure Cloud, der zweite zeigt eine Implementierung für Content-Based Routing.

Vorlage FTP Backup to Azure Blob Storage
Vorlage FTP Backup to Azure Blob Storage

Die Vorlage "FTP Backup to Blob Storage" (siehe Abbildung) erstellt eine Logic App, die Dateien von einem FTP-Server in regelmäßigen Zeitintervallen lädt und im Azure Blob Storage ablegt. Diese Speicherlösung von Microsoft Azure kann Daten als Blobs (Binary Large Objects), also als Dateien speichern. Die zugehörige Vorlage besteht aus vier einzelnen Actions, die sequenziell ausgeführt werden: Action 1 startet die Logic App nach einem vom Entwickler definierten Intervall. Action 2 ist dafür zuständig, auf den FTP-Server zu verbinden und die Liste der Dateien abzufragen. Die geladene Liste wird von Action 2 an Action 3 weitergegeben, die die Dateien einzeln per FTP-Protokoll vom Server bezieht. Action 4 schließlich speichert die von Action 3 geladene Datei im Azure Blob Storage ab.

Vorlage Content-Based Routing
Vorlage Content-Based Routing

Die Vorlage "Content-Based Routing" (siehe Abbildung) löst ein typisches Integrationsszenario: die Weiterleitung eines XML-Dokuments an verschiedene Empfänger. Welcher Adressat das jeweilige Dokument bekommt, wird automatisch anhand des Inhalts entschieden. Die erste Action bezieht via Polling von einem FTP-Server Dateien im XML-Format. Die jeweils empfangene Datei wird ausgelesen und deren Inhalt an die BizTalk XML Validator Action weitergereicht. Diese prüft den Inhalt auf XML-Konformität und validiert diesen gegebenenfalls gegen ein XML-Schema.

Dann kommt der BizTalk Xpath Extractor zum Zug, der anhand eines XPath-Statements einen Knoten aus dem XML-Dokument ausliest. Anhand des Inhalts dieses Knotens wird der passende Empfänger ermittelt. Falls die konfigurierte Bedingung zutrifft, wird die Datei vom BizTalk Transform Service transformiert und über den Microsoft SQL Connector in eine SQL Server Datenbank gespeichert. Trifft die Bedingung nicht zu, wird das XML-Dokument über den Azure Blob Storage Connector lediglich im Azure Blob Storage abgespeichert.

Erstellen einer Logic App

Logic Apps können manuell aus dem Portal, zeitgesteuert oder durch Eintreffen einer Nachricht gestartet werden. Nach dem Erstellen einer neuen Logic App muss als erstes definiert werden, wie diese gestartet werden soll. In einem zweiten Schritt werden die gewünschten Actions aus dem Marketplace der Reihe nach per Drag-and-Drop auf die Designeroberfläche gezogen. Die Actions werden direkt im Designer konfiguriert, fehlende Konfigurationen durch eine rote Markierung angezeigt. Wenn keine Validierungsfehler mehr vorhanden sind, kann die Logic App gespeichert und ausgeführt werden.

Im Azure Portal sind die einzelnen Ausführungen und Resultate unter Operations zu sehen (siehe Abbildung Azure Operations).

Azure Operations
Azure Operations

Für jede Ausführung einer Logic App gibt es eine Detailansicht, in der die Resultate der einzelnen Schritte untersucht werden können. Die Abbildung "Events" zeigt ein Monitoring-Dashboard, das Auskunft über Start und Resultate gibt.

Azure-Anzeige Events
Azure-Anzeige Events

Fazit und Ausblick

Mit den Logic Apps bietet Microsoft Azure die Möglichkeit, On-Premise-Systeme, Cloud-Anwendungen und SaaS-Angebote miteinander zu verbinden und solche Integrationsszenarien mit wenig Aufwand umzusetzen. Dabei kann eine Logic App vollständig über den Designer im Azure Portal erstellt werden. Die große Auswahl verfügbarer Konnektoren vereinfacht den Zugriff auf Enterprise-Systeme, die erfahrungsgemäß oft schwierig zu integrieren sind.

Logic Apps sind momentan erst als Preview verfügbar und sollten noch nicht für produktive Prozesse eingesetzt werden. Bei der Arbeit mit dem Portal sind tatsächlich noch einige Ungereimtheiten spürbar. Microsoft setzt bei den Logic Apps auf ein Community-getriebenes Vorgehen. Das bedeutet, dass über die feedback.azure.com-Seite Rückmeldungen gegeben und Vorschläge für neue Features unterbreitet werden können. Die Community hat die Möglichkeit, sich für Features auszusprechen und so rasches Feedback an die Produktgruppe zu geben.

Weitere Infos zu den Azure Logic Apps gibt auf der offiziellen Logic Apps Startseite , auf dem Logic Apps Blog oder auf Twitter. Das Logic Apps Team bietet auch die Möglichkeit, an Live-Meetings auf Youtube teilzunehmen. In diesen Live-Meetings präsentiert das Team den aktuellen Stand und beantwortet Fragen aus der Community.