Cloud-native Arbeitsablauf-Orchestrierung Workflow-Management mit AWS Step Functions

Ein Gastbeitrag von Pascal Vogel und Florian Mair *

Anbieter zum Thema

Komplexe Workflow-Management-Systeme bilden Prozesse und deren Logik nach, sind in einigen Fällen aber schlicht überdimensioniert. AWS Step Functions hilft in diesem Fall dabei, neue und einfache Arbeitsabläufe abzubilden.

Das AWS Step Functions Workflow Studio ist ein visueller Editor, der sich insbesondere für das Prototyping von Workflows eignet.
Das AWS Step Functions Workflow Studio ist ein visueller Editor, der sich insbesondere für das Prototyping von Workflows eignet.
(Bild: Amazon Web Services)

Mit Cloud-Plattformen lassen sich Funktionalitäten in Form von Services konsumieren und zur Realisierung eigener digitaler Produkte und Dienstleistungen kombinieren. Oftmals wird dabei eine Vielzahl von Cloud- und On-Premises-Services im Zusammenspiel genutzt, um einen bestimmten Geschäftsprozess abzubilden.

Im Falle einer ETL-Pipeline (Extrahieren, Transformieren, Laden) werden beispielsweise verschiedene Datenquellen abgerufen, Berechnungsschritte durchgeführt und Zielspeicher angesprochen. Für einen solchen Prozess müssen zudem Eigenschaften wie dessen Startzeitpunkt und -bedingungen, die Reihenfolge der Durchführung der enthaltenen Aufgaben oder bestimmte Erfolgs- und Fehlerkriterien überprüft werden.

Workflow-Management-Systeme stellen eine Möglichkeit dar, diese Prozesslogik in Form von Arbeitsabläufen abzubilden, diese auszuführen und zu überwachen. Open Source Workflow-Management-Systeme wie Apache Airflow, Dagster oder Prefect lassen sich auf virtuellen Servern oder in containerisierter Form auf Cloud-Plattformen bereitstellen. Über Plug-ins und Integrationen lassen sich die dort angelegten Workflows Cloud- und On-Premises-Services ansprechen.

Da die Bereitstellung und Verwaltung dieser Systeme in der Cloud manuell durchgeführt werden, müssen potenzielle Anforderungen wie eine automatische Skalierung basierend auf der Systemauslastung oder ein hochverfügbarer Betrieb mit Hilfe von Standardwerkzeugen der Cloud-Plattformen, wie beispielsweise Auto-Scaling Groups oder einem Load Balancing über mehrere Rechenzentren, selbstständig geplant, implementiert und überwacht werden.

Die Kosten für den Betrieb eines Open Source Workflow-Management-Systems in der Cloud werden in erster Linie von den stündlichen Kosten der virtuellen Server und deren Verwaltung bestimmt. Im Falle von selten ablaufenden Arbeitsabläufen, sowie Workflows mit stark schwankender Auslastung, kommt es häufig zu einer Überprovisionierung des Workflow-Management-Systems.

Mit Amazon Managed Workflows for Apache Airflow (MWAA) bietet Amazon Web Services (AWS) eine verwaltete Variante der Apache-Lösung an. MWAA eignet sich insbesondere für die Migration existierender Apache Airflow Workflows oder falls Anwender bereits mit den entsprechenden Konzepten vertraut sind. Für die Erstellung von neuen Workflows ist in vielen Fällen AWS Step Functions die einfachere und günstigere Lösung.

Cloud-native Workflow-Orchestrierung mit AWS Step Functions

AWS bietet mit Step Functions einen Cloud-nativen und vollständig verwalteten Service zur Orchestrierung von Arbeitsabläufen an. Typische Anwendungsfälle hierfür sind die Orchestrierung von Microservices-Architekturen, Daten- und Machine-Learning-Pipelines oder die Automatisierung von IT-Prozessen.

Als serverloser und damit vollständig verwalteter Service lässt sich Step Functions verwenden, ohne dass Entwickler eigens Infrastruktur bereitstellen und betreiben müssten. Der Dienst skaliert vollautomatisch und ermöglicht die parallele Durchführung von tausenden Workflows pro Sekunde.

Diese Workflows werden von Step Functions automatisch hochverfügbar in mehreren Verfügbarkeitszonen bereitgestellt, sodass deren zuverlässige Durchführung auch bei Ereignissen wie dem Ausfall eines Rechenzentrums oder einzelner Hardwarekomponenten sichergestellt ist. Die Kosten für Standard-Workflows werden rein nutzungsbasiert berechnet und orientieren sich präzise an den tatsächlich durchgeführten Zustandsübergängen innerhalb eines Workflows.

Step-Functions-Workflows können verschiedenartig angestoßen werden, als Teil einer ereignisgesteuerten Architektur beispielsweise durch das Hochladen einer Datei, die Veränderung eines Wertes in einer Datenbank oder das Auftreten eines Sicherheitsereignisses. Ebenso lässt sich ihre Ausführung zeitlich terminieren, um beispielsweise regelmäßig durchzuführende ETL-Aufgaben, Datensynchronisierungen oder Sicherheits-Checks zu automatisieren. Einmal angestoßen, kann ein Standard-Workflow bis zu ein Jahr aktiv sein und damit auch langlaufende IT- und Geschäftsprozesse abbilden.

Mit Step Functions lassen sich individuelle Aufgaben (Tasks) zu einem zusammenhängenden Workflow orchestrieren. Die erstellten Workflows sind Zustandsautomaten und jeder Schritt innerhalb des Workflows stellt einen Zustand dar. Aufgaben sind Zustände, die Arbeit verrichten, indem sie entweder Services in der AWS Cloud koordinieren oder beliebige anderweitig bereitgestellte Services ansprechen, beispielsweise On-Premises oder auf einer anderen Cloud-Plattform, ansprechen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

So lassen sich beispielsweise virtuelle Server in Amazon Elastic Compute Cloud (EC2) starten, Daten in Amazon DynamoDB schreiben oder Benachrichtigungen mit dem Amazon Simple Notification Service (SNS) verschicken. Für Aufgaben, die nicht mit nativen Integrationen abgedeckt werden können, lässt sich mit AWS Lambda eigener Programmcode in den Workflow einbinden.

Zur Abbildung der Geschäftslogik als Teil des Workflows stellt Step Functions zudem vorgefertigte Zustände bereit, die beispielsweise zum Treffen von Entscheidungen basierend auf Kriterien, zur Handhabung von Fehlern, zur Parallelisierung von Aufgaben oder zum Hinzufügen von Wartezeiten genutzt werden können, ohne dass dafür Programmcode geschrieben werden muss. Auch menschlicher Input, wie beispielsweise eine manuelle Freigabe im Rahmen einer Deployment-Pipeline, lässt sich in einen solchen Workflow integrieren.

Das AWS Step Functions Workflow Studio ist ein visueller Editor, der sich insbesondere für das Prototyping von Workflows eignet.
Das AWS Step Functions Workflow Studio ist ein visueller Editor, der sich insbesondere für das Prototyping von Workflows eignet.
(Bild: Amazon Web Services)

Step Functions Workflows werden in der JSON-basierten Amazon States Language (ASL) definiert. Mit Hilfe des in die AWS Management Konsole integrierten Workflow Studios lassen sich zudem Workflows mit einem visuellen Editor aus Serviceintegrationen und Logikbausteinen per Drag-and-Drop zusammenstellen.

Das Workflow Studio eignet sich insbesondere für Prototyping und bietet in der Manier eines Low-Code-Tools einen niedrigschwelligen Zugang auch für Fachanwender. Step Functions ist zudem mit Infrastructure as Code Werkzeugen wie AWS CloudFormation, AWS Serverless Application Model (SAM) und dem AWS Cloud Development Kit (CDK) integriert.

{
   "Comment": "A simple minimal example of the States language",
   "StartAt": "Hello World",
   "States": {
      "Hello World": {
         "Type": "Task",
         "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloWorld",
         "End": true
      }
   }
}

Nutzergenerierte Inhalte automatisch filtern: ein Beispiel-Workflow

Im Folgenden wird die Funktionsweise von AWS Step Functions anhand eines typischen Beispielprozesses verdeutlicht. Über das bereitgestellte Code-Beispiel lässt sich der Beispiel-Workflow auch innerhalb weniger Minuten im eigenen AWS Account bereitstellen und testen.

Eine typische Problemstellung, mit der sich viele Internetplattformen konfrontiert sehen, ist die Moderation von nutzergenerierten Inhalten wie Bildern, Videos oder Kommentaren. Eine manuelle Moderation der hochgeladenen Inhalte bietet hohe Sicherheit, ist allerdings auch zeit- und kostenintensiv.

Step Functions eignet sich zur Teil- oder Vollautomatisierung repetitiver Prozesse wie einer Inhaltsmoderation, da sich unter anderem auch vollverwalteten Machine-Learning-Services der AWS Cloud in einen Workflow einbinden lassen. Das folgende Beispiel demonstriert, wie Step Functions und weitere AWS Services zur automatisierten Überprüfung hochgeladener Bilder auf anstößige Inhalte und zur Automatisierter Erkennung von Bildinhalten genutzt werden kann.

Lösungsüberblick

Der Beispielworkflow für das Erkennen unangemessener Inhalte.
Der Beispielworkflow für das Erkennen unangemessener Inhalte.
(Bild: Amazon Web Services)

Der Beispiel-Workflow enthält die folgenden Schritte:

1. Das Hochladen eines Bildes in Amazon S3 stößt den Workflow an. Das Bild wird im ersten Schritt mit Hilfe von Amazon Rekognition auf anstößige Inhalte kontrolliert.

2. Basierend auf dem Ergebnis von (1) werden zulässige Bilder weiterverarbeitet während anstößige Bilder eine E-Mail-Benachrichtigung an einen Moderator auslösen.

3. Ein zulässiges Bild wird in zwei parallelen Schritten weiterverarbeitet: der Erkennung von Objekten sowie der Erkennung von Text auf dem Bild mit Hilfe von Amazon Rekognition. In beiden Fällen werden die Ergebnisse in einer DynamoDB-Tabelle abgespeichert, um beispielsweise als Tags für eine Suchfunktion zu dienen.

4. Ein von Amazon Rekognition als anstößig erkanntes Bild löst eine Benachrichtigung via E-Mail an einen zuvor festgelegten Moderationskontakt aus, die via Amazon Simple Notification Service (SNS) verschickt wird.

Dieser Workflow wird vollständig mit nativen Integrationen zu AWS Services sowie von Step Functions bereitgestellten Logikbausteinen realisiert. Er beinhaltet also keinerlei prozessspezifischen Programmcode, der in Zukunft gepflegt werden müsste.

Bereitstellung im eigenen AWS Account

Um unseren Beispielworkflow auszuprobieren, lässt sich dieser mit dem „Infrastructure as Code“-, kurz IaC-Werkzeug AWS CloudFormation in wenigen Minuten bereitstellen. Voraussetzung hierfür ist lediglich das Vorhandensein eines AWS Accounts und eines Nutzers mit Berechtigungen für AWS Step Functions. Der Code für den Beispiel-Workflow findet sich bei GitHub und kann in der CloudFormation-Konsole hochgeladen werden.

Im Rahmen der Bereitstellung wird eine E-Mail-Adresse benötigt, an die Amazon SNS während der Ausführung des Workflows eine Benachrichtigung sendet, falls anstößige Inhalte erkannt werden. Die Korrektheit der Empfängeradresse wird über das Zusenden einer Bestätigungsemail geprüft.

Verweis auf den S3-Bucket, in den die zu prüfenden Bilder hochgeladen werden müssen.
Verweis auf den S3-Bucket, in den die zu prüfenden Bilder hochgeladen werden müssen.
(Bild: Amazon Web Services)

Der Beispiel-Workflow erreicht den Status „CREATE_COMPLETE“, sobald dessen Bereitstellung abgeschlossen ist. Anschließend kann im Tab „Ausgaben“ unter dem Schlüssel „IngestionBucket“ der Amazon S3 Bucket eingesehen werden, in den Bilder hochgeladen werden müssen, um eine Überprüfung durch den Workflow anzustoßen.

Testen des Beispiel-Workflows

Ein Test des Workflows lässt sich jetzt durch das Hochladen eines beliebigen Bildes im JPEG- oder PNG-Format im genannten Amazon S3 Bucket in der Konsole starten. Nach dem Hochladen des Bildes und einem Wechsel in die Step-Functions-Konsole, lassen sich alle bisherigen Durchläufe des Workflows einsehen.

Durch Auswahl der aktuellsten Durchführung kann der durch das Hochladen des Bildes angestoßene Ablauf des Workflows live verfolgt, sowie Inputs, Outputs und Zwischenergebnisse eingesehen werden. Im unten abgebildeten Beispiel wird nach Hochladen eines Bildes einer Katze kein anstößiger Inhalt erkannt und die Katze entsprechend als Objekt von Amazon Rekognition erkannt.

Test des Beispiel-Workflows.
Test des Beispiel-Workflows.
(Bild: Amazon Web Services)

Durch das Hochladen eines Bildes, das die Kriterien für anstößige Inhalte erfüllt, lässt sich auch der alternative Arm des Workflows testen und eine E-Mail-Benachrichtigung auslösen.

Freigabe nicht mehr benötigter Ressourcen

Um zusätzliche Kosten zu vermeiden, kann der Stack nach Beendigung dieser Demonstration gelöscht werden. Hierfür wird nach einem Wechseln in die CloudFormation-Konsole der Stack „Beispielworkflow“ ausgewählt und mit einem Klick auf „Löschen“ die Löschung aller darin enthaltener Ressourcen angestoßen.

Fazit

Eine Workflow-Orchestrierung ist für die zuverlässige Durchführung komplexer IT- und Geschäftsprozesse in der Cloud unabdinglich. In diesem Beitrag haben wir die Vor- und Nachteile verschiedener Optionen für die Orchestrierung von Workflows in der Cloud diskutiert. Cloud-native Orchestrierungslösungen wie AWS Step Functions bieten mit geringem Verwaltungsaufwand, hoher Skalierbarkeit sowie Verfügbarkeit und nutzungsbasierten Abrechnungsmodellen eine Reihe von Vorteilen gegenüber selbstentwickelten und selbstverwalteten Workflowsystemen.

Pascal Vogel
Pascal Vogel
(Bild: Amazon Web Services)

Das vorgestellte Beispiel zur automatisierten Inhaltsmoderation demonstriert zudem die Flexibilität und Geschwindigkeit, mit der sich Workflows mit AWS Step Functions umsetzen lassen. Einen tieferen, praxisorientierten Einstieg in AWS Step Functions gibt ein kostenloser Online-Workshop.

* Pascal Vogel ist Associate Solutions Architect bei Amazon Web Services (AWS) in Hamburg. Er berät Startups und Mittelständler aus ganz Europa bei der Cloud-Migration und der Umsetzung cloud-nativer Lösungen.

Florian Mair
Florian Mair
(Bild: Amazon Web Services)

* Florian Mair arbeitet als Solutions Architect bei Amazon Web Services. Dabei begleitet er Software-Unternehmen auf dem Weg in die Cloud und unterstützt sie dabei, ihre Applikationen zu SaaS-, sprich Software-as-a-Service-Produkten zu modernisieren.

(ID:48484647)