Amazon Simple Workflow Service
Warum SWF?
Amazon Simple Workflow Service (Amazon SWF) unterstützt Entwickler beim Erstellen, Ausführen und Skalieren von Hintergrundaufträgen, die parallele oder sequenzielle Schritte aufweisen. Sie können sich Amazon SWF als vollständig verwalteten Status-Tracker und Aufgabenkoordinator in der Cloud vorstellen.
Wenn die Ausführung von Schritten in Ihrer App mehr als 500 ms erfordert, Sie den Verarbeitungsstatus nachverfolgen müssen und fehlgeschlagene Aufgaben wiederherstellen oder wiederholen müssen, kann Amazon SWF Ihnen helfen.
Wenn Sie nach einem Low-Code-Service zur Visualisierung von Prozessflüssen suchen, um AWS-Services zu orchestrieren, Geschäftsprozesse zu automatisieren oder serverlose Anwendungen zu erstellen, dann sollten Sie sich näher über AWS Step Functions informieren.
Vorteile
Amazon SWF fördert die Trennung zwischen dem Steuerungsablauf der schrittweisen Logik Ihrer Hintergrundaufträge und den eigentlichen Arbeitseinheiten, die Ihre eigene Geschäftslogik enthalten. Dies ermöglicht Ihnen, die "Statusmechanik" Ihrer Anwendung getrennt von der den Kern bildenden Geschäftslogik, die sie differenziert, zu verwalten, zu warten und zu skalieren. Wenn sich Ihre Geschäftserfordernisse ändern, können Sie auf einfache Weise die Anwendungslogik ändern, ohne sich um die zugrundeliegende Statusmechanik, Aufgabenverteilung und Flusssteuerung kümmern zu müssen.
Amazon SWF wird in den hoch verfügbaren Rechenzentren von Amazon ausgeführt, sodass das Modul zur Statusverfolgung und Aufgabenverarbeitung jederzeit verfügbar ist, wenn es von Anwendungen benötigt wird. Amazon SWF speichert auch redundant die Aufgaben, sendet sie zuverlässig an die Anwendungskomponenten, verfolgt ihren Fortschritt und speichert ihren jeweiligen Status.
Amazon SWF ersetzt komplexe individuell kodierte Prozessflusslösungen und Prozessautomatisierungssoftware durch einen vollständig verwalteten Web-Service für Cloud-Prozessflüsse. Dadurch entfällt für die Entwickler die Notwendigkeit, die Infrastrukturinstallationen der Prozessautomatisierung zu verwalten, und sie können ihre Energie in die einzigartige Funktionalität ihrer Anwendung investieren.
Amazon SWF lässt sich nahtlos skalieren und an die Nutzung Ihrer Anwendung anpassen. Es ist keine manuelle Verwaltung des Prozessfluss-Service erforderlich, wenn Sie der Anwendung weitere Cloud-Prozessflüsse hinzufügen oder deren Komplexität erhöhen.
Mit Amazon SWF können Sie die Anwendungskomponenten und Koordinierungslogik in jeder Programmiersprache erstellen und wahlweise in der Cloud oder lokal ausführen.
Amazon SWF – Produktdetails
Die Verwendung von Amazon SWF zum Verwalten von Workflows in Ihrer Anwendung ist einfach.
Amazon SWF – Funktionalität
Amazon SWF fungiert als Koordinierungszentrale für alle verschiedenen Komponenten Ihrer Anwendung:
- Verwalten des Anwendungsstatus
- Nachhalten von Workflow-Ausführungen und Protokollieren des jeweiligen Fortschritts
- Bereithalten und Senden von Tasks
- Steuern, welche Tasks den Anwendungs-Hosts zur Ausführung zugewiesen werden
So können Sie Amazon SWF nutzen:
- Mit der AWS Management Console oder den Amazon SWF-APIs legen Sie die Namen von Workflows fest.
- Mit den Amazon SWF-APIs "starten" Sie einen neuen Workflow, was dazu führt, dass eine bestimmte Folge von Workflow-Tasks, eine so genannte "Workflow-Ausführung", aktiviert wird.
- Sie verwenden die Amazon SWF-APIs von Ihren Worker-Computern aus (ein "Worker" ist eine Komponente Ihrer Anwendung, die bestimmte Tasks verarbeitet), um die Task-Reihenfolge festzulegen, bedingte Arbeitsabläufe zu verwalten und Schleifen für eine Workflow-Ausführung auszuführen.
- Sie nutzen die Amazon-SWF-APIs auf Ihren Worker-Computern, um Workflow-Tasks anzufordern und in der Cloud oder lokal auszuführen.
- Sie überwachen Status und Fortschritt der Workflow-Ausführungen und der zugehörigen Tasks in der AWS Management Console.
Der Beispielrundgang in der AWS-Managementkonsole führt Sie durch die Schritte zum Registrieren und Ausführen einer Beispielanwendung. In der Dokumentation finden Sie weitere Informationen.
Detaillierte Beschreibung
Amazon SWF ist ein vollständig verwalteter Workflow-Service zum Erstellen skalierbarer, ausfallsicherer Anwendungen. Amazon SWF stellt einfache API-Aufrufe bereit, die von Code ausgeführt werden können, der in einer beliebigen Sprache geschrieben sein und sich in Ihren EC2-Instanzen oder auf beliebigen Computern mit Internetzugang an jedem Ort der Welt befinden kann.
Amazon SWF dient als Koordinierungs-Hub mit dem Ihre Anwendungs-Hosts interagieren. Sie erstellen die gewünschten Workflows mit den zugehörigen Tasks und sämtlicher Bedingungslogik, die Sie anwenden möchten, und speichern sie in Amazon SWF. Jede einzelne Ausführung eines Workflows wird als eigene Workflow-Ausführung behandelt. Sie programmieren Ihre Anwendungskomponenten so, dass sie verschiedene Tasks anfordern, die in Ihrer Workflow-Ausführung ablaufen sollen, und Amazon SWF koordiniert die Erledigung dieser Tasks, und zwar in der angegebenen Reihenfolge und auf Ihren Hosts (ganz gleich, ob diese Hosts sich in der Cloud oder im Unternehmen befinden). Anwendungen kommunizieren mit Amazon SWF über APIs, um Erfolg oder Misserfolg der einzelnen Tasks zu erfassen. Amazon SWF setzt dann entweder die Folge der Tasks fort, indem es einem Anwendungs-Host die nächste Workflow-Task zuweist oder indem es eine fehlgeschlagene Task entsprechend Ihrer Geschäftslogik erneut ausführt.
Zum Starten einer Amazon SWF-Workflow-Ausführung melden Sie sich bei der AWS Management Console an. Alternativ dazu können Sie eine Workflow-Ausführung auch über Ihre Amazon SWF-APIs starten. Amazon SWF verwendet eine benutzerfreundliche und äußerst flexible Web-Service-Oberfläche:
- StartWorkflowExecution: startet eine Abfolge von Workflow-Aufgaben und stellt die erste Aufgabe einem Ihrer Anwendungshosts zur Verfügung.
- DescribeWorkflowExecution: Zeigt den Status Ihrer Workflow-Ausführungen und Aufgaben an.
- PollForActivityTask: Ihre Anwendungshosts (in der Cloud oder vor Ort) fordern Workflow-Aufgaben in einer kontinuierlichen Schleife an und führen sie aus.
- respondActivityTaskCompleted: Ein Anwendungshost teilt Amazon SWF mit, dass er eine Aufgabe erfolgreich abgeschlossen hat. Amazon SWF setzt die Workflow-Ausführung daraufhin fort, indem die nächste Task für einen Anwendungs-Host verfügbar gemacht wird.
- terminateWorkflowExecution: Beenden Sie das Vorantreiben einer bestimmten Workflow-Ausführung. Amazon SWF weist dem Anwendungs-Host keine Tasks dieser speziellen Workflow-Ausführung mehr zu.
Vorgesehene Verwendung und Einschränkungen
Die Nutzung dieses Service unterliegt der Amazon Web Services-Kundenvereinbarung.
Anwendungsfälle
Videokodierung mit Amazon S3 und Amazon EC2. In diesem Anwendungsfall werden große Videos in Einheiten nach Amazon S3 hochgeladen. Der Upload der Einheiten muss überwacht werden. Nachdem eine Einheit hochgeladen wurde, wird sie durch Herunterladen in eine Amazon EC2-Instanz kodiert. Die kodierte Einheit wird in einem anderen Amazon S3-Speicher gespeichert. Nachdem alle Einheiten auf diese Weise kodiert wurden, werden sie zu einer kompletten kodierten Datei kombiniert und vollständig wieder in Amazon S3 zurückgespeichert. Bei diesem Vorgang können aufgrund von Kodierungsfehlern bei einer oder mehreren Einheiten Fehler auftreten. Solche Fehler müssen über das Cloud-Prozessflussmanagement von Amazon SWF erkannt und behandelt werden.
Migrieren von Komponenten aus dem Rechenzentrum in die Cloud. Geschäftskritische Vorgänge werden in einem privaten Rechenzentrum gehostet, müssen aber komplett in die Cloud migriert werden, ohne dass es zu Unterbrechungen kommt. Amazon SWF-basierte Anwendungen können Worker, die im Rechenzentrum ausgeführte Komponenten packen, mit in der Cloud ausgeführten Workern kombinieren. Um einen Auftragnehmer aus einem Rechenzentrum nahtlos zu migrieren, werden zuerst neue Auftragnehmer desselben Typs in der Cloud bereitgestellt. Die Auftragnehmer im Rechenzentrum werden wie gewohnt weiter ausgeführt, zusammen mit den neuen Cloud-basierten Auftragnehmern. Zum Testen und Validieren der Cloud-basierten Auftragnehmer wird ein Teil des Verkehrs über sie geleitet. Während dieser Tests kommt es nicht zu Unterbrechungen der Anwendung, weil die Auftragnehmer im Rechenzentrum weiterhin ausgeführt werden. Nach erfolgreichen Tests werden die Worker im Rechenzentrum schrittweise außer Betrieb genommen und die Worker in der Cloud hochskaliert, bis sie vollständig in eine Anwendung für das Cloud-Prozessflussmanagement verschoben sind. Dieser Vorgang für den Cloud-Prozessfluss kann für alle anderen Worker im Rechenzentrum wiederholt werden, sodass die Anwendung komplett in die Cloud verschoben wird. Wenn aus irgendwelchen geschäftlichen Gründen bestimmte Verarbeitungsschritte weiterhin im privaten Rechenzentrum ausgeführt werden müssen, so ist dies ohne Probleme möglich und die entsprechenden Auftragnehmer können dennoch Teil der Anwendung sein.
Verarbeitung großer Produktkataloge mithilfe von Amazon Mechanical Turk. Bei der Validierung von Daten in großen Katalogen werden die Produkte im Katalog stapelweise verarbeitet. Unterschiedliche Stapel können gleichzeitig verarbeitet werden. Für jeden Stapel werden die Produktdaten aus den Servern im Rechenzentrum extrahiert und in die von der Amazon Mechanical Turk-RUI (Requester User Interface) benötigten CSV-Dateien (Comma Separated Values) umgewandelt. Die CSV wird hochgeladen, um die HITs (Human Intelligence Tasks) aufzufüllen und auszuführen. Wenn die HITs abgeschlossen sind, wird die resultierende CSV-Datei zurückgewandelt, um die Daten wieder in das Originalformat zu bringen. Die Ergebnisse werden dann bewertet und die Amazon Mechanical Turk-Mitarbeiter werden für fehlerfreie Ergebnisse bezahlt. Fehler werden aussortiert und erneut verarbeitet, während die fehlerfreien HIT-Ergebnisse zur Aktualisierung des Katalogs verwendet werden. Während der Verarbeitung der Stapel muss das System die Qualität der Amazon Mechanical Turk-Mitarbeiter nachhalten und die Zahlungen entsprechend anpassen. Fehlerhafte HITs werden erneut verarbeitet und wieder über die Pipeline gesendet.
AWS Flow Framework
Das AWS Flow Framework ist eine Sammlung von Convenience-Bibliotheken, die die Entwicklung von Anwendungen mit Amazon Simple Workflow beschleunigen und erleichtern.
Funktionsweise
Das AWS Flow Framework verfügt über ein unkompliziertes Programmiermodell, das die Erstellung von Anwendungen vereinfacht, deren Arbeit auf mehrere Rechner verteilt ist. Mit dem Framework können Sie im Handumdrehen Aufgaben erstellen, koordinieren und festlegen, wie diese Aufgaben voneinander abhängen – genauso, wie Sie dies auch in einem herkömmlichen Programm tun würden. So können Sie beispielsweise eine Methode in einer Anwendung auf einem Remote-Computer ausführen, indem Sie einfach eine Methode in Ihrer Anwendungslogik aufrufen, die auf einem separaten "lokalen" Computer gehosted ist. Das AWS Flow Framework übernimmt das komplexe Hin und Her, das für die Ausführung der Remote-Methode notwendig ist, und gibt deren Ergebnisse an die lokale Anwendung zurück, wobei es Informationen nutzt, die von Amazon Simple Workflow Service gespeichert werden. Mit dem Ergebnis jeder ausgeführten Methode können Sie separate Teile Ihrer Logik verbinden, die voneinander abhängen. Das Framework ermöglicht Ihnen die Verwendung einfacher Syntax, um Abhängigkeiten zwischen Methoden mit dem einfachen Konzept "Blockieren und auf Callback warten" auszudrücken. Das Framework ermöglicht auch, dass Sie einen Fehler auf einem Remote-Rechner so bearbeiten, als wäre es ein lokaler Fehler. Sie können ganz einfach festlegen, wie Sie wichtige Methoden in Ihrer Anwendung noch einmal ausführen möchten, wenn sie fehlgeschlagen sind.
- Holen Sie es sich im AWS SDK für Java.
- Sehen Sie sich das Webinar für die Java-Version an
- Lesen Sie das Entwicklerhandbuch.
- Sehen Sie sich die API-Referenz an.
Hinweis
Das AWS Flow Framework für Ruby wird nicht mehr aktiv weiterentwickelt. Der vorhandene Code wird zwar auf unbestimmte Zeit weiter funktionieren, es werden jedoch keine neuen Features oder Versionen herausgebracht. Der Quellcode des Flow Frameworks für Ruby ist weiterhin im GitHub-Archiv von AWS SWF verfügbar. Wenn sich Ihre Ruby-basierte Simple-Workflow-Anwendung weiterentwickelt und verändert, können Sie verschiedene Optionen in Erwägung ziehen, darunter die Migration zu AWS Step Functions oder die Nutzung der nativen Simple-Workflow-API. Details finden Sie im Entwicklerhandbuch zu AWS Simple Workflow.
Mit AWS Flow Framework schreiben Sie einfachen Code und überlassen die Details der Amazon Simple Workflow APIs den vordefinierten Objekten und Klassen des Frameworks. Das AWS Flow Framework übernimmt die Erstellung und Ausführung der Arbeitsschritte ihrer Anwendung, verfolgt ihren Fortschritt, lässt Sie Regeln für die Wiederholung festlegen, wenn Schritte fehlschlagen und vieles mehr. In der Zwischenzeit verwaltet Amazon Simple Workflow Service den Ausführungszustand Ihrer Anwendung, übergibt Aufgaben an verfügbare Worker und macht Aufzeichnungen über den Prüfverlauf all Ihrer Aufgaben.
Das AWS Flow Framework ist Java-Open-Source und wird von AWS entwickelt und verwaltet. Über die Links unten gelangen Sie zu Bibliotheken, Quellcode, Dokumentationen, Beispielen usw.