F: Was ist Amazon SWF?
Simple Workflow Service (Amazon SWF) ist ein Web-Service, der die Koordinierung von Arbeit über verteilte Anwendungskomponenten hinweg erleichtert. Mit Amazon SWF können Sie Anwendungen für eine Vielzahl von Anwendungsfällen, beispielsweise Medienverarbeitung, Webanwendungs-Back-Ends, Geschäftsprozess-Workflows und Analyse-Pipelines, als Zusammenstellung koordinierter Tasks entwerfen. Tasks sind Aufrufe verschiedener Verarbeitungsschritte in einer Anwendung, die von ausführbarem Code, Web-Service-Aufrufen, Benutzeraktionen und Skripts ausgeführt werden können.
Die Koordinierung von Tasks erfordert die Verwaltung von Ausführungsabhängigkeiten, Zeitplanung und Gleichzeitigkeit entsprechend dem logischen Ablauf der Anwendung. Mit Amazon SWF erhalten die Entwickler die vollständige Kontrolle über die Implementierung der Verarbeitungsschritte und die Koordinierung der Tasks, die diese Schritte steuern, ohne sich um die zugrunde liegenden Komplexitäten kümmern zu müssen, wie z. B. den Erfolg der einzelnen Schritte nachhalten und ihren Status verwalten zu müssen. Amazon SWF stellt außerdem das AWS Flow Framework bereit, mit dessen Hilfe Entwickler bei der Entwicklung ihrer Anwendungen asynchrone Programmierung verwenden können. Mithilfe von Amazon SWF profitieren Entwickler von Funktionen, die das Programmieren erleichtern, und können Ressourcenverwendung, Latenzen und Durchsätze ihrer Anwendungen verbessern.
Kostenlos bei AWS einsteigen
Kostenloses Konto erstellenOder bei der Konsole anmelden
Das kostenlose Kontingent für AWS umfasst eine Nutzung von Cache-Knoten vom Typ "Micro" von 750 Stunden in Amazon ElastiCache.
F: Worin liegen die Vorteile, wenn ich meine Anwendung als Zusammenstellung koordinierter Tasks entwerfe? Wie unterstützt mich Amazon SWF dabei?
In Amazon SWF sind Tasks Aufrufe logischer Schritte in Anwendungen. Tasks werden von Auftragnehmern verarbeitet. Auftragnehmer sind Programme, die mit Amazon SWF interagieren und Tasks empfangen, diese verarbeiten und ihre Ergebnisse zurückgeben. Ein Auftragnehmer implementiert einen Verarbeitungsschritt einer Anwendung. Sie können Auftragnehmer in unterschiedlichen Programmiersprachen erstellen und zur schnellen Erstellung des Auftragnehmers sogar vorhandene Komponenten wiederverwenden. Sie können z. B. Cloud-Services, Unternehmensanwendungen, Legacy-Systeme und sogar einfache Skripts verwenden, um Auftragnehmer zu implementieren. Da Sie die Anzahl der Auftragnehmer für die Verarbeitung jedes einzelnen Task-Typs unabhängig voneinander steuern können, ist eine effiziente Steuerung des Durchsatzes Ihrer Anwendung möglich.
Um die Anwendungsausführung durch die einzelnen Auftragnehmer zu koordinieren, erstellen Sie in der Programmiersprache Ihrer Wahl ein Programm, das als Entscheider bezeichnet wird. Die Trennung der Verarbeitungsschritte und deren Koordinierung ermöglicht die kontrollierte Verwaltung Ihrer Anwendung und gibt Ihnen die Flexibilität, die einzelnen Verarbeitungsschritte unabhängig voneinander bereitzustellen, auszuführen, zu skalieren und zu aktualisieren. Sie können Auftragnehmer und Entscheider entweder in der Cloud (z. B. Amazon EC2 oder Lambda) oder auf Computern hinter Unternehmens-Firewalls bereitstellen. Durch die Entkopplung von Auftragnehmern und Entscheidern kann Ihre Unternehmenslogik dynamisch gesteuert und Ihre Anwendung schnell aktualisiert und an neue Anforderungen angepasst werden. Beispielsweise können Sie Tasks entfernen, auslassen oder erneut ausführen und durch das simple Ändern der Entscheider neue Anwendungsabläufe erstellen.
Durch die Implementierung von Auftragnehmern und Entscheidern können Sie sich auf Ihre differenzierte Anwendungslogik konzentrieren, soweit sie die Ausführung der tatsächlichen Verarbeitungsschritte und deren Koordinierung betrifft. Amazon SWF verarbeitet die zugrunde liegenden Details wie z. B. das Speichern der Tasks bis zu deren Zuweisung, das Überwachen der zugewiesenen Tasks und das Bereitstellen konsistenter Informationen zu deren Abschluss. Amazon SWF bietet zudem fortlaufende Sichtbarkeit auf der Ebene jeder Task durch APIs und eine Konsole.
F: Was kann ich mit Amazon SWF tun?
Mit Amazon SWF können Sie viele Herausforderungen bei der Erstellung von Anwendungen mit verteilten Komponenten meistern. Sie können Amazon SWF und das zugehörige AWS Flow Framework beispielsweise verwenden, um:
- Ihre Anwendungen als asynchrone Programme zu erstellen, und zwar unter Verwendung einfacher Programmierungskonstrukte zum Abstrahieren von Details, wie z. B. Initiieren von Tasks, die remote ausgeführt werden, und Nachhalten des Laufzeitstatus des Programms.
- Den Ausführungsstatus Ihrer Anwendung zu verwalten (z. B., welche Schritte abgeschlossen wurden, welche gerade ausgeführt werden, etc.). Sie brauchen keine Datenbanken, benutzerdefinierten Systeme oder Ad-hoc-Lösungen zu verwenden, um den Ausführungsstatus zu speichern.
- Den Arbeitsablauf zwischen Ihren Anwendungskomponenten zu kommunizieren und zu verwalten. Mit Amazon SWF brauchen Sie kein Messaging-Protokoll zu entwerfen und sich keine Gedanken über fehlender oder doppelt ausgeführte Tasks zu machen.
- Die Koordinierung der Schritte in Ihrer Anwendung zu zentralisieren. Ihre Koordinierungslogik muss nicht über verschiedene Komponenten verteilt werden, sondern kann in einem einzigen Programm realisiert werden.
- Eine Reihe von Programmen und Komponenten, einschließlich Legacy-Systeme und Cloud-Services von Drittanbietern, in Ihre Anwendungen zu integrieren. Da Sie für Ihre Anwendung flexibel entscheiden können, wo und in welcher Kombination die Anwendungskomponenten bereitgestellt werden, unterstützt Amazon SWF Sie bei der schrittweisen Migration der Anwendungskomponenten aus privaten Rechenzentren in die öffentliche Cloud-Infrastruktur, ohne die Verfügbarkeit der Anwendung zu unterbrechen oder deren Leistung zu beeinträchtigen.
- Workflows zu automatisieren, die zeitintensive, vom Benutzer ausgeführte Tasks (z. B. Genehmigungen, Überprüfungen, Untersuchungen, etc.) umfassen Amazon SWF hält den Status der Verarbeitungsschritte, die über mehrere Tage oder Monate andauern können, zuverlässig nach.
- Eine Anwendungsebene oberhalb von Amazon SWF zu erstellen, um domänenspezifische Sprachen für die Endbenutzer zu unterstützen. Da Amazon SWF Ihnen vollständige Flexibilität in der Wahl Ihrer Programmiersprache lässt, können Sie bequem Interpreter für spezialisierte Sprachen (z. B. XPDL) und angepasste Benutzeroberflächen, einschließlich Modellierungstools, erstellen.
- Detaillierte Buchungskontrolle und Sichtbarkeit in alle ausgeführten Instanzen Ihrer Anwendung zu integrieren. Sie können auch die von Amazon SWF bereitgestellten Sichtbarkeitsfunktionen unter Verwendung der Amazon SWF-APIs in Ihre eigenen Benutzeroberflächen einbinden.
Kunden haben Amazon SWF verwendet, um Anwendungen für Videokodierung, Social Commerce, Bereitstellung von Infrastrukturen, MapReduce-Pipelines, Business Process Management (BPM) und verschiedene andere Anwendungsfälle zu erstellen. Weitere Informationen zu Anwendungsfällen finden Sie unter "Können Sie einige Anwendungsfälle nennen, die sich mit Amazon SWF lösen lassen?". Informationen dazu, wie Amazon SWF heute von Kunden eingesetzt wird, finden Sie in unseren Fallstudien.
F: Worin liegen die Vorteile von Amazon SWF gegenüber eigenen Lösungen und vorhandenen Workflow-Produkten?
Beim Erstellen von Lösungen zum Koordinieren von Tasks in einer verteilten Umgebung müssen Entwickler verschiedene Variablen berücksichtigen. Tasks, die Verarbeitungsschritte steuern, können lange andauern und zu Fehlern oder Zeitüberschreitungen führen oder Neustarts erforderlich machen. Sie werden oft mit unterschiedlichen Durchsätzen und Latenzen abgeschlossen. Das Nachhalten und Visualisieren von Tasks in all diesen Fällen ist nicht nur eine Herausforderung, sondern auch undifferenzierte Arbeit. Wenn Anwendungen und Tasks größer werden, stehen Entwickler bei verteilten Systemen oft vor schwierigen Problemen. Sie müssen z. B. sicherstellen, dass eine Task nur einmal zugewiesen und dass ihr Ergebnis auch bei unerwarteten Fehlern und Ausfällen zuverlässig nachgehalten wird. Entwickler können sich bei der Verwendung von Amazon SWF auf die differenzierte Anwendungslogik konzentrieren, d. h. darauf, wie die Tasks verarbeitet und koordiniert werden.
Bei vorhandenen Workflow-Produkten sind Entwickler häufig gezwungen, spezialisierte Sprachen zu erlernen, teure Datenbanken zu hosten und die Kontrolle über die Task-Ausführung abzugeben. Die spezialisierten Sprachen erschweren die Erstellung komplexer Anwendungen und sind nicht flexibel genug, um schnell und effizient Änderungen auszuführen. Amazon SWF hingegen ist ein Cloud-basierter Service, der die Verwendung der gängigen Programmiersprachen erlaubt und Entwicklern die Kontrolle überlässt, wo die Tasks verarbeitet werden. Durch die Übernahme eines lose gekoppelten Modells für verteilte Anwendungen ist es in Amazon SWF schnell und einfach möglich, Änderungen vorzunehmen.
F: Was sind Auftragnehmer und Entscheider?
In Amazon SWF wird eine Anwendung durch die Erstellung mehrerer Auftragnehmer und eines Entscheiders implementiert. Diese kommunizieren unmittelbar mit dem Service. Auftragnehmer sind Programme, die mit Amazon SWF interagieren, um Tasks zu erhalten, empfangene Tasks zu verarbeiten und die Ergebnisse zurückzugeben. Der Entscheider ist ein Programm, das die Koordinierung der Tasks steuert, d. h. deren Reihenfolge, Gleichzeitigkeit und Zeitplanung entsprechend der Anwendungslogik. Die Auftragnehmer und der Entscheider können in Cloud-Infrastruktur, z. B. Amazon EC2, oder auf Computern hinter Firewalls ausgeführt werden. Amazon SWF vermittelt die Interaktionen zwischen den Auftragnehmern und dem Entscheider. Es ermöglicht dem Entscheider, konsistente Einsichten in den Fortschritt der Tasks zu erhalten und fortlaufend neue Tasks zu initiieren. Gleichzeitig speichert Amazon SWF Tasks, weist sie den Auftragnehmern zu, wenn sie bereit sind, und überwacht ihren Fortschritt. Es stellt sicher, dass eine Task nur einmal zugewiesen und niemals dupliziert wird. Da Amazon SWF den Status der Anwendung kontinuierlich verwaltet, brauchen die Auftragnehmer und Entscheider den Ausführungsstatus nicht nachzuhalten. Sie können unabhängig ausgeführt und schnell skaliert werden. Auf der Detailseite zu Amazon SWF finden Sie im Abschnitt Funktionalität weitere Informationen zu den Schritten zum Erstellen von Anwendungen mit Amazon SWF.
Sie können einen Workflow in Amazon SWF gleichzeitig mehrmals ausführen. Jede Ausführung wird als eine "Workflow-Ausführung" oder "Ausführung" bezeichnet. Ausführungen werden durch eindeutige Namen identifiziert. Mit der Amazon SWF Management Console (oder den Sichtbarkeits-APIs) können Sie Ihre Ausführungen als Ganzes oder Detailinformationen zu einer bestimmten Ausführung auf Task-Ebene anzeigen.
F: Mit welchen Funktionen erleichtert Amazon SWF das Programmieren von Anwendungen?
Genau wie andere AWS-Services bietet Amazon SWF ein Kern-SDK für die Web-Service-APIs. Zusätzlich stellt Amazon SWF ein SDK, das so genante AWS Flow Framework, bereit, mit dem Sie schnell und einfach Amazon SWF-basierte Anwendungen erstellen können. Das AWS Flow Framework abstrahiert die Details der Koordinierung auf Task-Ebene durch vertraute Programmierungskonstrukte. Während der Ausführung Ihres Programms sendet das Framework Aufrufe an Amazon SWF, hält den Ausführungsstatus Ihrer Anwendung mithilfe des von Amazon SWF gespeicherten Ausführungsverlaufs nach und ruft jeweils zum richtigen Zeitpunkt die relevanten Teile Ihres Codes auf. Das AWS Flow Framework stellt eine intuitive Programmierumgebung für den Zugriff auf Amazon SWF bereit und ermöglicht Entwicklern auf diese Weise, ganze Anwendungen als asynchrone, in einem Workflow strukturierte Interaktionen zu programmieren. Weitere Details finden Sie unter Was ist das AWS Flow Framework?
F: Wann sollte ich Amazon SWF verwenden, wann AWS Step Functions?
AWS Step Functions ist ein vollständig verwalteter Service, der die Koordination der einzelnen Komponenten verteilter Anwendungen und Microservices durch visuelle Workflows vereinfacht. Anstatt ein Entscheiderprogramm zu schreiben, definieren Sie in JSON Statusmaschinen. Für neue AWS-Anwendungen empfiehlt es sich durchaus, Step Functions zu testen. Wenn Sie feststellen, dass Step Functions nicht Ihren Anforderungen gerecht wird, wechseln Sie einfach zurück zu Amazon Simple Workflow (SWF). Amazon SWF bietet Ihnen die vollständige Kontrolle über Ihre Orchestrierungslogik, erhöht aber die Komplexität der Anwendungsentwicklung. Sie können hier Entscheiderprogramme in der Programmiersprache Ihrer Wahl schreiben oder das Flow-Framework mit seinen Programmierkonstrukten verwenden, die asynchrone Interaktionen für Sie strukturieren. AWS stellt den Amazon SWF-Service und das Flow-Framework nach wie vor bereit und unterstützt weiterhin alle Amazon SWF-Kunden.
F: Wie unterscheidet sich Amazon SWF von Amazon SQS?
Amazon SQS und Amazon SWF sind beides Dienste, die die Integration von Anwendungen und Mikrodiensten vereinfachen:
- Amazon Simple Queue Service (Amazon SQS) bietet zuverlässige, hoch skalierbare, gehostete Warteschlangen zum Speichern von Nachrichten, während diese zwischen Anwendungen oder Mikrodiensten weitergeleitet werden. Mit Amazon SQS können Sie Daten zwischen verteilten Anwendungskomponenten verschieben und diese Komponenten somit leichter entkoppeln.
- Amazon Simple Workflow Service (Amazon SWF) ist ein Web-Service, der die Koordinierung von Arbeit über verteilte Anwendungskomponenten hinweg erleichtert.
Folgende Hauptunterschiede bestehen zwischen Amazon SQS und Amazon SWF:
- API-Aktionen von Amazon SWF sind Task-orientiert. API-Aktionen von Amazon SQS sind nachrichtenorientiert.
- Amazon SWF verfolgt alle Tasks und Ereignisse in einer Anwendung nach. Mit Amazon SQS müssen Sie Ihr eigenes Tracking auf Anwendungsebene implementieren, insbesondere, wenn Ihre Anwendung mehrere Warteschlangen nutzt.
- Die Amazon SWF-Konsole und die Sichtbarkeits-APIs bieten eine anwendungszentrierte Ansicht, mit der Sie nach Ausführungen suchen, Details einer Ausführung anzeigen und Ausführungen verwalten können. Bei Amazon SQS müssen solche zusätzlichen Funktionen implementiert werden.
- Amazon SWF bietet zahlreiche Funktionen, die die Anwendungsentwicklung erleichtern, z. B. die Übergabe von Daten zwischen Tasks, Signale und Flexibilität bei der Verteilung von Tasks. Bei Amazon SQS müssen Sie manche Funktionen auf Anwendungsebene implementieren.
- Neben einer Kern-SDK zum Aufrufen der Service-APIs stellt Amazon SWF das AWS Flow Framework bereit, mit dem Sie verteilte Anwendungen unter Verwendung von Programmierungskonstrukten zum Strukturieren asynchroner Interaktionen erstellen können.
Während Sie Amazon SQS einsetzen können, um grundlegende Workflows zur Koordinierung Ihrer verteilten Anwendung zu erstellen, gibt es diese Funktionalität bei Amazon SWF neben anderen Funktionen auf Anwendungsebene zum sofortigen Einsatz.
Machen Sie sich mit Amazon SQS und mit Amazon SWF vertraut, um entscheiden zu können, welche Lösung Ihren Anforderungen entspricht.
F: Können Sie einige Anwendungsfälle nennen, die sich mit Amazon SWF lösen lassen?
Amazon SWF wurde bei Anwendungsfällen in den Bereichen Medienverarbeitung, Geschäftsprozessautomatisierung, Datenanalyse, Migration in die Cloud und Stapelverarbeitung eingesetzt. Einige Beispiele:
Anwendungsfall Nr. 1: Videokodierung unter Verwendung von 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 erkannt und behandelt werden.
Mit Amazon SWF: Die gesamte Anwendung wird als Workflow erstellt, wobei jede Videodatei als eine Workflow-Ausführung behandelt wird. Folgende Tasks werden von den verschiedenen Auftragnehmern verarbeitet: Hochladen einer Einheit nach Amazon S3, Herunterladen einer Einheit aus Amazon S3 in eine Amazon EC2-Instanz und Kodieren der Einheit, Zurückspeichern einer Einheit nach Amazon S3, Kombinieren mehrerer Einheiten in eine einzige Datei und Hochladen der kompletten Datei nach Amazon S3. Der Entscheider initiiert gleichzeitige Tasks, um der Parallelität im Anwendungsfall Rechnung zu tragen. Er initiiert eine Task zum Kodieren einer hochgeladenen Einheit, ohne abzuwarten, bis die übrigen Einheiten hochgeladen wurden. Wenn eine Task für eine Einheit fehlschlägt, führt der Entscheider die Task nur für diese Einheit erneut durch. Der von Amazon SWF gespeicherte Anwendungsstatus hilft dem Entscheider bei der Steuerung des Workflows. Der Entscheider verwendet den Anwendungsstatus beispielsweise, um zu erkennen, wann alle Einheiten kodiert wurden, und um deren Amazon S3-Speicher zu ermitteln, damit die einzelnen Einheiten zur Gesamtdatei kombiniert werden können. Der Fortschritt der Ausführung wird in der Amazon SWF Management Console ständig nachgehalten. Wenn Fehler auftreten, werden die jeweiligen fehlerbehafteten Tasks identifiziert und verwendet, um die fehlerhaften Einheiten zu lokalisieren.
Anwendungsfall Nr. 2: 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.
Mit Amazon SWF: Der oben beschriebene Anwendungsfall wird als ein Satz von Workflows implementiert. Ein BatchProcess-Workflow behandelt die Verarbeitung für einen einzelnen Stapel. Er verfügt über Auftragnehmer, die die Daten extrahieren, umwandeln und über Amazon Mechanical Turk senden. Der BatchProcess-Workflow gibt die fehlerfreien und fehlerhaften HITs zurück. Diese werden als Eingabe für drei weitere Workflows verwendet: MTurkManager, UpdateCatalogWorkflow und RerunProducts. Der MTurkManager-Workflow führt die Zahlungen für fehlerfreie HITs aus, antwortet den Mitarbeitern, die fehlerhafte HITs produziert haben, und aktualisiert seine eigene Datenbank, um die Qualität der Ergebnisse nachzuhalten. Der UpdateCatalog-Workflow aktualisiert den Masterkatalog basierend auf fehlerfreien HITs. Der RerunProducts-Workflow wartet, bis ein genügend großer Stapel von Produkten mit fehlerhaften HITs vorliegt. Dann erstellt er einen Stapel und sendet ihn zurück an den BatchProcess-Workflow. Die gesamte End-to-End-Katalogverarbeitung wird von einem CleanupCatalog-Workflow ausgeführt, der untergeordnete Ausführungen der oben stehenden Workflows initiiert. Ein System gut definierter Workflows ermöglicht, dass dieser Anwendungsfall systematisch für Kataloge mit mehreren Millionen Produkten aufgebaut, überwacht und ausgeführt wird.
Anwendungsfall Nr. 3: 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.
Mit Amazon SWF: Amazon SWF-basierte Anwendungen können Auftragnehmer, die im Rechenzentrum ausgeführte Komponenten packen, mit in der Cloud ausgeführten Auftragnehmern 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 Auftragnehmer im Rechenzentrum schrittweise außer Betrieb genommen und die Auftragnehmer in der Cloud hochskaliert, bis sie nach und nach komplett in der Cloud ausgeführt werden. Dieser Vorgang kann für alle anderen Auftragnehmer 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.
Weitere aufregende Anwendungen und Systeme, die Entwickler und Unternehmen mit Amazon SWF erstellen, finden Sie in unseren Fallstudien.
F: Nutzt Amazon für seine eigenen Anwendungen auch Amazon SWF?
Ja. Entwickler bei Amazon verwenden Amazon SWF für eine breite Palette von Projekten und Millionen von Workflow-Ausführungen täglich. Zu den Anwendungsfällen gehören wichtige Geschäftsprozesse hinter den Websites von Amazon.com und AWS, Implementierungen für verschiedene AWS-Web-Services und deren APIs, MapReduce-Analysen für betriebliche Entscheidungsfindung sowie die Verwaltung der für Benutzer zugänglichen Inhalte wie Webseiten, Videos und Kindle-Bücher.
F: Welche ersten Schritte sind für die Benutzung von Amazon SWF notwendig?
Wenn Sie sich für Amazon SWF anmelden möchten, gehen Sie zur Detailseite von Amazon SWF und klicken Sie auf die Schaltfläche "Jetzt anmelden". Wenn Sie über kein Amazon Web Services-Konto verfügen, werden Sie aufgefordert, ein Konto zu erstellen. Nach dem Anmelden können Sie in der AWS Management Console einen Beispielrundgang starten, in dem die Ausführung einer einfachen Anwendung zum Konvertieren von Bildern mit Amazon SWF Schritt für Schritt erläutert wird. Sie können außerdem die AWS Flow Framework-Beispiele herunterladen, um mehr über die verschiedenen Funktionen des Services zu erfahren. Um zu mit der Verwendung von Amazon SWF in Ihren Anwendungen zu beginnen, lesen Sie die Amazon SWF-Dokumentation.
F: Gibt es Beispiel-Workflows, mit denen ich Amazon SWF testen kann?
Ja. Als erste Schritte mit Amazon SWF können Sie den Beispielrundgang in der AWS Management Console machen, in dem erläutert wird, wie Sie eine Domain und Typen registrieren, wie Sie Auftragnehmer und Entscheider bereitstellen und wie Sie Workflow-Ausführungen starten. Sie können den Code für die in diesem Rundgang beschriebenen Auftragnehmer und Entscheider herunterladen, sie in Ihrer Infrastruktur ausführen und sogar Änderungen vornehmen, um eigene Anwendungen zu erstellen. Sie können auch die AWS Flow Framework-Beispiele herunterladen, die die Verwendung von Amazon SWF für verschiedene Anwendungsfälle illustrieren, z. B. verteilte Datenverarbeitung, Cronjobs und Bereitstellung von Anwendungsstapeln. Indem Sie sich den enthaltenen Quellcode anschauen, erfahren Sie mehr über die Funktionen von Amazon SWF und darüber, wie Sie das AWS Flow Framework zum Erstellen Ihrer verteilten Anwendungen verwenden.
F: Welche unterschiedlichen Möglichkeiten des Zugriffs auf SWF gibt es?
Sie können auf eine der folgenden Arten auf SWF zugreifen:
- AWS-SDK für Java, Ruby, .NET und PHP
- AWS Flow Framework für Java (im AWS-SDK für Java enthalten)
- Amazon SWF-Web-Service-APIs
- AWS Management Console
F: Was ist die Registrierung?
Die Registrierung ist ein Schritt, den Sie einmalig für alle verschiedenen Typen von Workflows und Aktivitäten durchführen. Sie können die Registrierung entweder durch ein Programm oder über die Amazon SWF Management Console vornehmen. Während der Registrierung geben Sie für jede Aktivität und jeden Workflow-Typ eindeutige IDs ein. Sie legen außerdem Standardinformationen fest, die beim Ausführen eines Workflows verwendet werden, z. B. Werte für Zeitbegrenzungen und Parameter für die Task-Verteilung.
F: Was sind Domänen?
In SWF definieren Sie logische Container, so genannte Domänen, für Ihre Anwendungsressourcen. Domänen können nur auf der Ebene Ihres AWS-Kontos erstellt und nicht verschachtelt werden. Eine Domäne kann einen beliebigen benutzerdefinierten Namen erhalten. Jede Anwendungsressource, beispielsweise ein Workflow-Typ, ein Aktivitätstyp oder eine Ausführung, gehört zu genau einer Domäne. Während der Registrierung geben Sie die Domäne an, unter der ein Workflow- oder Aktivitätstyp registriert werden soll. Wenn Sie eine Ausführung starten, wird sie automatisch in derselben Domäne wir der zugehörige Workflow-Typ erstellt. Die Eindeutigkeit von Ressourcenkennungen (z. B. Typ-IDs, Ausführungs-ID) gilt für den Geltungsbereich einer Domain, d. h., Sie können in verschiedenen Domains gleiche IDs verwenden.
F: Wie kann ich meine Anwendungsressourcen über unterschiedliche Umgebungen und Gruppierungen hinweg verwalten?
Mithilfe von Domänen können Sie Ihre Anwendungsressourcen so organisieren, dass sie einfacher zu verwalten sind und sich nicht versehendlich gegenseitig beeinträchtigen. Sie können beispielsweise unterschiedliche Domänen für Ihre Entwicklungs-, Test- und Produktionsumgebungen und in jeder dieser Umgebungen die entsprechenden Ressourcen erstellen. Obwohl Sie möglicherweise denselben Workflow-Typ in jeder dieser Domänen registrieren, wird er in jeder Domäne als eigene Ressource behandelt. Sie können seine Einstellungen in der Entwicklungsdomäne ändern oder Ausführungen in der Testdomäne verwalten, ohne dass davon die entsprechenden Ressourcen in der Produktionsdomäne betroffen sind.
F: Wie koordiniert ein Entscheider einen Workflow in Amazon SWF?
Der Entscheider kann als ein spezieller Auftragnehmer-Typ angesehen werden. Genau wie die Auftragnehmer kann ein Entscheider in jeder beliebigen Sprache geschrieben werden und fordert Tasks von Amazon SWF an. Er verarbeitet jedoch spezielle Tasks, so genannte Entscheidungs-Tasks. Amazon SWF gibt Entscheidungs-Tasks aus, wann immer in einer Workflow-Ausführung ein Übergang vorliegt, z. B. der Abschluss einer Aktivitäts-Task oder eine Zeitüberschreitung. Eine Entscheidungs-Task enthält Informationen zu Eingaben, Ausgaben und dem aktuellen Status der zuvor initiierten Aktivitäts-Tasks. Der Entscheider verwendet diese Daten, um über die nächsten Schritte zu entscheiden, beispielsweise neue Aktivitäts-Tasks, und gibt seine Entscheidung an Amazon SWF zurück. Amazon SWF wiederum setzt diese Entscheidungen um, indem ggf. neue Aktivitäts-Tasks initiiert werden, und überwacht sie. Indem er kontinuierlich auf Entscheidungs-Tasks reagiert, steuert der Entscheider Reihenfolge, Zeitplanung und Gleichzeitigkeit von Aktivitäts-Tasks und damit die Ausführung der Verarbeitungsschritte in der Anwendung. SWF gibt die erste Entscheidungs-Task aus, wenn eine Ausführung gestartet wird. Von diesem Zeitpunkt an setzt Amazon SWF die vom Entscheider getroffenen Entscheidungen um, und steuert so die Ausführung. Die Ausführung wird so lange fortgesetzt, bis der Entscheider die Entscheidung trifft, die Ausführung zu beenden.
Um den Entscheider bei seiner Entscheidungsfindung zu unterstützen, verwaltet SWF einen fortlaufenden Datensatz mit den Details aller Tasks in einer Ausführung. Dieser Datensatz wird als Verlauf bezeichnet und ist für jede Ausführung einmalig. Bei jedem Start einer Ausführung wird ein neuer Verlauf initiiert. Zu diesem Zeitpunkt enthält der Verlauf anfängliche Informationen, z. B. die Eingabedaten der Ausführung. Später, wenn die Auftragnehmer die Aktivitäts-Tasks verarbeiten, aktualisiert Amazon SWF den Verlauf mit deren Ein- und Ausgabedaten und ihrem jeweiligen Status. Wenn ein Entscheider eine Entscheidungs-Task erhält, kann er den Verlauf der Ausführung überprüfen. Amazon SWF stellt sicher, dass der Verlauf den Ausführungsstatus zum Zeitpunkt der Ausgabe der Entscheidungs-Task korrekt widerspiegelt. Der Entscheider kann den Verlauf also nutzen, um zu bestimmen, was in der Ausführung bereits geschehen ist, und dann über den geeigneten nächsten Schritt entscheiden.
F: Wie kann ich sicherstellen, dass ein Auftragnehmer oder Entscheider nur Tasks erhält, die er versteht?
Sie legen mithilfe von Task-Listen fest, wie Tasks zugewiesen werden. Task-Listen sind Amazon SWF-Ressourcen, zu denen die initiierte Tasks hinzugefügt und aus denen Tasks abgerufen werden. Task-Listen werden durch benutzerdefinierte Namen identifiziert. Eine Task-Liste kann Tasks unterschiedlicher Typ-IDs enthalten, es muss sich jedoch entweder um Aktivitäts- oder Entscheidungs-Tasks handeln. Während der Registrierung legen Sie eine Standard-Task-Liste für jeden Aktivitäts- und Workflow-Typ fest. Sie können in Amazon SWF auch zur Laufzeit Task-Listen erstellen. Zum Erstellen einer Task-Liste brauchen Sie dieser lediglich einen Namen zu geben und zu beginnen, sie zu verwenden. Sie verwenden Task-Listen wie folgt:
- Beim Initiieren einer Aktivitäts-Task kann ein Entscheider diese Task zu einer bestimmten Task-Liste hinzufügen oder Amazon SWF auffordern, sie zur Standard-Task-Liste für ihren Aktivitätstyp hinzuzufügen.
- Beim Start einer Ausführung können Sie Amazon SWF auffordern, alle Entscheidungs-Tasks zu einer bestimmten Task-Liste oder zur Standard-Task-Liste für den Workflow-Typ hinzuzufügen.
- Beim Anfordern von Tasks geben Entscheider und Auftragnehmer an, aus welcher Task-Liste sie Tasks empfangen möchten. Wenn eine Task in der Liste verfügbar ist, sendet SWF diese in der Antwort und gibt auch deren Typ-ID an.
Basierend auf den oben stehenden Informationen steuern Sie, zu welcher Task-Liste eine Task hinzugefügt wird und wer Tasks aus den einzelnen Listen abruft. Auf diese Weise stellen Sie sicher, dass Auftragnehmer und Entscheider nur die Tasks empfangen, die sie verstehen.
F: Was ist das AWS Flow Framework? Wie unterstützt es mich bei der Koordinierung meines Workflows?
AWS Flow Framework ist eine Programmierumgebung zur schnellen und einfachen Entwicklung von Amazon SWF-basierten Anwendungen. AWS Flow Framework abstrahiert die Details der Koordinierung auf Task-Ebene und der asynchronen Interaktion durch vertraute Programmierungskonstrukte. Zum Koordinieren von Workflows in Amazon SWF müssen Remote-Aktionen, deren Durchführung unterschiedlich lang dauert (z. B. Aktivitäts-Tasks), initiiert und die Abhängigkeiten zwischen diesen Aktionen richtig implementiert werden .
Mit AWS Flow Framework können beide Facetten der Koordinierung bequem durch vertraute Programmierkonzepte ausgedrückt werden. Eine Aktivitäts-Task zu initiieren ist beispielsweise genau so einfach wie das Aufrufen einer Methode. AWS Flow Framework übersetzt den Aufruf automatisch in eine Entscheidung, die Aktivitäts-Task zu starten. Anschließend übernimmt Amazon SWF die Steuerung und ordnet die Task einem Auftragnehmer zu, überwacht sie und sendet nach dem Abschluss der Task eine Rückmeldung. Das Framework stellt Ihnen das Ergebnis der Task, einschließlich der Ausgabedaten, im Code als Rückgabewerte des Methodenaufrufs bereit. Um die Abhängigkeiten einer Task auszudrücken, verwenden Sie lediglich die Rückgabewerte in Ihrem Code, wie bei traditionellen Methodenaufrufen. Die Laufzeit des Frameworks wartet automatisch auf den Abschluss der Task und setzt die Ausführung erst fort, wenn die Ergebnisse verfügbar sind. Im Hintergrund empfängt die Laufzeit des Frameworks Auftragnehmer- und Entscheidungs-Tasks von Amazon SWF, ruft zum richtigen Zeitpunkt die relevanten Methoden in Ihrem Programm auf und formuliert Entscheidungen, die an Amazon SWF zurückgesendet werden. Da das AWS Flow Framework den Zugriff auf Amazon SWF über eine intuitive Programmierumgebung ermöglicht, können Sie mühelos asynchrone und ereignisgesteuerte Programmierung in die Entwicklung Ihrer Anwendungen integrieren.
F: Wie kommunizieren Auftragnehmer und Entscheider mit Amazon SWF? Sind Poll-Protokolle nicht besonders ressourcenintensiv?
Typischerweise müssen Entwickler für Poll-basierte Protokolle die optimale Abruffrequenz ermitteln. Bei zu häufigem Polling können viele der Abrufe mit leeren Ergebnissen zurückgegeben werden. Das führt dazu, dass die Abrufe einen großen Teil der Anwendungs- und Netzwerkressourcen verbrauchen, ohne dass sinnvolle Ausgaben zur Fortsetzung der Ausführung erzeugt werden. Bei einer zu geringe Abruffrequenz wiederum werden die Meldungen möglicherweise länger bereitgehalten, wodurch sich die Anwendungslatenzen verlängern.
Um die im Zusammenhang mit dem Polling bestehenden Effizienzmängel zu beseitigen, stellt Amazon SWF das so genannte Long-Polling bereit. Durch Long-Polling wird die Anzahl der Abrufe, die ohne Tasks zurückgegeben werden, drastisch reduziert. Wenn Auftragnehmer und Entscheider Task-Abrufe an Amazon SWF senden und keine Tasks verfügbar sind, wird die Verbindung eine Minute lang aufrechterhalten. Wird innerhalb dieser Zeit eine Task verfügbar, wird sie als Antwort auf die Long-Poll-Anforderung zurückgegeben. Indem die Verbindung über eine bestimmte Zeitspanne aufrechterhalten wird, werden neuerliche Abrufe mit leeren Ergebnissen vermieden. Beim Long-Polling profitieren Ihre Anwendungen von den Vorteilen, die das Polling im Bereich Sicherheit und Datenflusskontrolle bietet, ohne auf die Latenz- und Effizienzvorteile von Push-basierten Web-Services zu verzichten.
F: Kann ich einen vorhandenen Web-Service als Auftragnehmer verwenden?
Auftragnehmer verwenden standardmäßige HTTP GET-Anforderungen, um Tasks aus Amazon SWF abzurufen und die Ergebnisse zurückzugeben. Um einen vorhandenen Web-Service als Auftragnehmer zu verwenden, können Sie einen Wrapper programmieren, der Tasks aus Amazon SWF abruft, bei Bedarf die APIs Ihres Web-Services aufruft und die Ergebnisse an Amazon SWF zurückgibt. Im Wrapper werden die in einer Task bereitgestellten Eingabedaten in die Parameter für die APIs Ihres Web-Services übersetzt. Gleichermaßen werden die Ausgabedaten der Web-Service-APIs in die Ergebnisse für die Task übersetzt und an Amazon SWF zurückgegeben.
F: Bin ich durch Amazon SWF auf die Verwendung bestimmter Programmiersprachen beschränkt?
Nein, Sie können die Auftragnehmer oder Entscheider in jeder beliebigen Programmiersprache erstellen, solange die Kommunikation mit Amazon SWF über Web-Service-APIs unterstützt wird. Das AWS-SDK ist derzeit in Java, .NET, PHP und Ruby verfügbar. Das AWS-SDK für Java enthält das AWS Flow Framework.
F: Ich möchte sicherstellen, dass für jede Aktivierung meines Geschäftsprozesses (z. B. eine Transaktion, Übertragung oder Zuweisung) nur eine Ausführung erfolgt. Wie kann ich das erreichen?
Wenn Sie eine neue Workflow-Ausführung starten, stellen Sie eine ID für diese Workflow-Ausführung bereit. Auf diese Weise ordnen Sie die Ausführung einer Geschäftseinheit oder Geschäftsaktion zu (z. B. einer Kunden-ID, einem Dateinamen, einer Seriennummer). Amazon SWF stellt sicher, dass die ID einer Ausführung während der Ausführung nur ein einziges Mal existiert. Während dieser Zeit schlägt ein Versuch, eine andere Ausführung mit derselben ID zu starten, fehl. So können Sie mühelos Geschäftsanforderungen erfüllen, die voraussetzen, dass für eine bestimmte Geschäftsaktion, z. B. eine Transaktion, Übertragung oder Zuweisung, niemals mehrere Ausführungen erfolgen. Betrachten wir einen Workflow zur Registrierung eines neuen Benutzers auf einer Website. Wenn ein Benutzer auf die Schaltfläche zum Senden klickt, wird die Ausführung durch die E-Mail-Adresse des Benutzers benannt und eindeutig identifiziert. Ist die Ausführung bereits vorhanden ist, schlägt der Aufruf zum Starten der Ausführung fehl. Es wir kein zusätzlicher Code benötigt, um Konflikte zu verhindern, die auftreten können, wenn ein Benutzer während des Registrierungsvorgangs mehrmals auf "Senden" klickt.
Nachdem die Workflow-Ausführung abgeschlossen ist (erfolgreich oder nicht), können Sie eine weitere Workflow-Ausführung mit derselben ID starten. Dies führt zu einem erneuten Durchlauf der Workflow-Ausführung mit derselben Ausführungs-ID aber einer anderen Durchlauf-ID. Die Durchlauf-ID wird von Amazon SWF generiert und mehrere Ausführungen mit derselben Workflow-Ausführungs-ID können anhand der Durchlauf-ID unterschieden werden. Da Amazon SWF ermöglicht, die Workflow-Ausführungs-ID auf diese Weise wiederzuverwenden, können Sie Anwendungsfälle wie erneute Versuche behandeln. Angenommen, bei der Workflow-Ausführung im oben stehenden Beispiel der Benutzerregistrierung ist beim Erstellen des Datenbank-Datensatzes für den Benutzer ein Fehler aufgetreten. Die Workflow-Ausführung kann nun mit derselben Ausführungs-ID (der E-Mail-Adresse des Benutzers) noch einmal gestartet werden und es muss für den erneuten Versuch der Registrierung keine neue ID erstellt werden.
F: Wie hilft Amazon SWF mir bei der Skalierung meiner Anwendungen?
Amazon SWF unterstützt Sie bei der Skalierung Ihrer Anwendungen, indem Sie die vollständige Kontrolle über die Anzahl der für jeden Aktivitätstyp ausgeführten Auftragnehmer und der für einen Entscheider ausführten Instanzen erhalten. Durch Vergrößern der Zahl der Auftragnehmer oder der Entscheiderinstanzen erhöhen Sie die den entsprechenden Verarbeitungsschritten zugeordneten Rechenressourcen und damit den Durchsatz für diese Schritte. Anhand der über die Amazon SWF-APIs bereitgestellten Laufzeitdaten können Sie eine automatische Skalierung durchzuführen. Amazon SWF erfasst z. B. die Anzahl der Tasks in einer Task-Liste. Ein Anstieg dieser Zahl deutet darauf hin, dass die Auftragnehmer nicht mit dem Datenverkehr Schritt halten können. Sie können also automatisch neue Auftragnehmer hochfahren, sobald der Rückstand der Tasks einen Schwellenwert überschreitet.
F: Ich führe eine große Zahl geschäftskritischer Anwendungen aus. Wie kann ich diese überwachen und skalieren?
Zusätzlich zur AWS Management Console stellt Amazon SWF eine große Auswahl von Sichtbarkeits-APIs bereit. Mit Hilfe dieser Sichtbarkeits-APIs können Sie Laufzeitinformationen abrufen, um alle Ausführungen zu überwachen und die Ausführungen abhängig vom Datenverkehr automatisch zu skalieren. Sie können detaillierte Daten zu jedem Workflow-Typ abrufen, z. B. die Anzahl offener und geschlossener Ausführungen in einer bestimmten Zeitspanne. Mithilfe der Sichtbarkeits-APIs können Sie auch eigene benutzerdefinierte Überwachungsanwendungen erstellen.
F: In meiner Anwendung ist ständig eine große Zahl von Ausführungen aktiv, aber es kommt häufig in einigen davon zu Fehlern oder Stillständen. Wie kann ich diese problematischen Ausführungen ermitteln und die Probleme beseitigen?
In Amazon SWF können Sie über die AWS Management Console und mit den Sichtbarkeits-APIs nach Ausführungen suchen. Sie können nach verschiedenen Kriterien suchen, beispielsweise nach Zeitintervallen, in denen Ausführungen gestartet oder abgeschlossen wurden, nach dem aktuellen Status (offen oder geschlossen) und nach Standardfehlermodi (z. B. Zeitüberschreitung, beendet). Zum Gruppieren von Workflow-Ausführungen können Sie bis zu 5 Tags festlegen, um Workflow-Ausführungen beim Start benutzerdefinierten Text zuzuordnen. In der AWS Management Console können Sie Tags beim Durchsuchen von Workflow-Ausführungen verwenden.
Um mögliche angehaltene Ausführungen zu suchen, können Sie zunächst eine zeitbasierten Suche starten, um Ausführungen zu finden, die länger als erwartet laufen. Anschließend können Sie diese näher untersuchen, indem Sie Details auf Task-Ebene anzeigen und ermitteln, ob bestimmte Tasks zu lang dauern bzw. fehlgeschlagen sind oder ob der Entscheider schlichtweg keine Tasks initiiert hat. So können Sie das Problem möglicherweise auf Task-Ebene identifizieren.
F: Ich verfüge über einen Aktivitätstyp, der in mehreren Anwendungen genutzt werden kann. Kann ich ihn für alle diese Anwendungen freigeben?
Ja. Ein Aktivitätstyp kann von mehreren Anwendungen gemeinsam genutzt werden, vorausgesetzt, die Anwendungen und die Aktivität sind in derselben Domäne registriert. Zur Implementierung dieser Freigabe können Sie Tasks für den Aktivitätstyp durch verschiedene Entscheider initiieren lassen und den Aktivitätstyp zu der Task-Liste hinzufügen, an die die Auftragnehmer Abrufe für diese Aktivität senden. Die Auftragnehmer dieses Aktivitätstyps erhalten dann Aktivitäts-Tasks von den verschiedenen anderen Anwendungen. Um erkennen zu können, aus welcher Anwendung eine Aktivitäts-Task stammt, oder um verschiedene Sätze von Auftragnehmern für unterschiedliche Anwendungen bereitzustellen, können Sie mehrere Task-Listen verwenden. Siehe auch Wie kann ich sicherstellen, dass ein Auftragnehmer oder Entscheider nur Tasks erhält, die er versteht?
F: Kann ich AWS Identity and Access Management (IAM) zum Verwalten des Zugriffs auf Amazon SWF verwenden?
Ja. Sie können IAM-Benutzern Berechtigungen für den Zugriff auf Amazon SWF erteilen. IAM-Benutzer dürfen nur auf die von Ihnen angegebenen SWF-Domains und APIs zugreifen.
F: Kann ich meine Auftragnehmer hinter einer Firewall ausführen?
Ja. Auftragnehmer verwenden standardmäßige HTTP GET-Anforderungen, um Tasks aus Amazon SWF abzurufen und die berechneten Ergebnisse zurückzugeben. Da Auftragnehmer immer Anforderungen an Amazon SWF initiieren, brauchen Sie die Konfiguration Ihrer Firewall nicht dahingehend zu ändern, dass eingehende Anforderungen zugelassen werden.
F: Ist es kein Sicherheitsrisiko, meine Unternehmenslogik als Auftragnehmer und Entscheider offenzulegen?
Auftragnehmer verwenden standardmäßige HTTP GET-Anforderungen, um Tasks aus Amazon SWF abzurufen und die berechneten Ergebnisse zurückzugeben. Daher müssen Sie Ihren Auftragnehmern keinen Endpunkt offenlegen. Außerdem übergibt Amazon SWF nur dann Tasks an Auftragnehmer, wenn die Entscheider diese Tasks initiieren. Da Sie den Entscheider selbst programmieren, haben Sie die vollständige Kontrolle darüber, wann und wie Tasks initiiert werden und welche Eingabedaten mit diesen Tasks an die Auftragnehmer gesendet werden.
F: Wie unterstützt mich Amazon SWF bei der zuverlässigen Koordinierung der Tasks in meiner Anwendung?
Amazon SWF stellt nützliche Garantien rund um die Task-Zuweisung bereit. Es stellt sicher, dass eine Task niemals dupliziert wird, und gewährleistet, dass jede Task nur ein einziges Mal zugewiesen wird. Daher übergibt Amazon SWF eine bestimmte Task nur an einen Auftragnehmer (oder eine Entscheiderinstanz), selbst wenn Sie über mehrere Auftragnehmer für einen bestimmten Aktivitätstyp (oder eine Reihe von Instanzen eines Entscheiders) verfügen. Zudem lässt Amazon SWF jeweils maximal eine ausstehende Entscheidungs-Task für eine Workflow-Ausführung zu. Daher können Sie unbesorgt mehrere Entscheiderinstanzen starten, ohne dass es dazu kommt, dass zwei Instanzen gleichzeitig für dieselbe Ausführung laufen. Aufgrund dieser Funktionalität können Sie Ihren Workflow koordinieren, ohne sich Gedanken über doppelt ausgeführte, fehlende oder miteinander in Konflikt stehende Tasks machen zu müssen.
F: Wie viele Workflow-Typen, Aktivitätstypen und Domänen kann ich bei Amazon SWF registrieren?
Jede Domäne kann über maximal 10.000 registrierte oder abgelehnte Workflow- und Aktivitätstypen (insgesamt) verfügen. Sie können über maximal 100 Amazon SWF-Domänen (einschließlich registrierter und abgelehnter Domänen) in Ihrem AWS-Konto verfügen. Wenn Sie glauben, dass die oben stehenden Grenzwerte bei Ihnen überschritten werden, kontaktieren Sie das Amazon SWF-Team über dieses Formular, um Ihr Szenario zu besprechen und höhere Grenzwerte anzufordern.
F: Ist die Anzahl der gleichzeitigen Workflow-Ausführungen beschränkt?
Zu jedem beliebigen Zeitpunkt sind maximal 100 000 offene Ausführungen in einer Domain zulässig. Ansonsten existiert kein anderer Grenzwert für die kumulative Anzahl von aktiven Ausführungen oder die Anzahl der von Amazon SWF aufbewahrten Ausführungen. Wenn Sie glauben, dass die oben stehenden Grenzwerte bei Ihnen überschritten werden, kontaktieren Sie das Amazon SWF-Team über dieses Formular, um Ihr Szenario zu besprechen und höhere Grenzwerte anzufordern.
F: Wie lange können Workflow-Ausführungen dauern?
Die Dauer jeder Workflow-Ausführung kann maximal 1 Jahr betragen. Jeder Workflow-Ausführungsverlauf kann maximal 25.000 Ereignisse enthalten. Wenn Ihr Anwendungsfall es erfordert, diese Grenzwerte zu überschreiten, können Sie die von Amazon SWF bereitgestellten Funktionen verwenden, um Ausführungen fortzusetzen und Ihre Anwendungen mithilfe von untergeordneten Workflow-Ausführungen zu strukturieren.
F: Was geschieht, wenn meine Workflow-Ausführung sich über einen längeren Zeitraum im Leerlauf befindet?
Amazon SWF ergreift keine besonderen Maßnahmen, wenn eine Workflow-Ausführung über einen längeren Zeitraum inaktiv ist. Inaktive Ausführungen unterliegen den von Ihnen konfigurierten Zeitbeschränkungen. Wenn Sie beispielsweise die maximale Dauer einer Ausführung auf 1 Tag festgelegt haben, wird eine im Leerlauf befindliche Ausführung nach 1 Tag aufgrund der Zeitüberschreitung beendet. Inaktive Ausführungen unterliegen außerdem dem Amazon SWF-Grenzwert für die maximale Dauer der Ausführung (1 Jahr).
F: Wie lange kann die Verarbeitung einer Task durch einen Auftragnehmer dauern?
In Amazon SWF existiert keine bestimmte Zeitbegrenzung für die Dauer der Verarbeitung einer Task durch einen Auftragnehmer. Amazon SWF setzt die Zeitbegrenzung durch, die Sie als maximale Dauer für die Aktivitäts-Task festlegen. Beachten Sie, dass ein Auftragnehmer aufgrund der Beschränkung der Dauer einer Ausführung durch Amazon SWF auf maximal 1 Jahr nicht länger als 1 Jahr für die Verarbeitung einer Task brauchen darf.
F: Wie lang kann Amazon SWF eine Task bereithalten, bis ein Auftragnehmer diese anfordert?
In Amazon SWF existiert keine bestimmte Zeitbegrenzung für die Dauer der Bereithaltung einer Task bis zum Polling durch einen Auftragnehmer. Beim Registrieren des Aktivitätstyps können Sie eine Standardzeitbegrenzung dafür festlegen, wie lange Amazon SWF Aktivitäts-Tasks dieses Typs bereithält. Sie können diese Zeitbegrenzung auch bei der Zeitplanung einer Aktivitäts-Task über Ihren Entscheidercode festlegen bzw. die Standardzeitbegrenzung überschreiben. Da Amazon SWF die Dauer einer Workflow-Ausführung auf maximal 1 Jahr beschränkt, wird die Task, wenn keine andere Zeitbegrenzung festgelegt wird, nicht länger als 1 Jahr bereitgehalten.
F: Kann ich mehrere Aktivitäts-Tasks durch Ausgabe einer einzigen Entscheidung planen?
Ja, Sie können bis zu 100 Aktivitäts-Tasks in einer Entscheidung planen und auch mehrere Entscheidungen nacheinander ausgeben.
F: Wie viele Auftragnehmer-Tasks, Signale und Marker kann ich in einer Workflow-Ausführung und über mehrere Ausführungen hinweg verwenden?
Die Gesamtzahl der während einer Workflow-Ausführung verwendeten Aktivitäts-Tasks, Signale und Timer ist nicht beschränkt. Zurzeit können jedoch maximal 1.000 geöffnete Aktivitäts-Tasks pro Workflow-Ausführung vorliegen. Dazu zählen initiierte Aktivitäts-Tasks und Aktivitäts-Tasks, die gerade von Auftragnehmern verarbeitet werden. Genauso gilt, dass nur 1.000 geöffnete Timer pro Workflow-Ausführung und bis zu 1.000 geöffnete untergeordnete Ausführungen pro Workflow-Ausführung zulässig sind.
F: Wie viele Daten kann ich innerhalb einer Workflow-Ausführung übertragen?
Es besteht keine Beschränkung der Gesamtmenge der während einer Workflow-Ausführung übertragenen Daten. Die Amazon SWF-APIs wenden jedoch bestimmte Höchstwerte auf die Parameter an, die für die Übergabe von Daten innerhalb einer Ausführung verwendet werden. Die an eine Aktivitäts-Task übergebenen Eingabedaten und die mit einem Signal gesendeten Eingabedaten dürfen maximal 32.000 Zeichen enthalten.
F: Bewahrt Amazon SWF abgeschlossene Ausführungen auf? Wenn ja, für wie lange?
Amazon SWF bewahrt den Verlauf einer abgeschlossenen Ausführung über die von Ihnen angegebene Zeit auf (maximal 90 Tage, also etwa 3 Monate). Während der Aufbewahrungsfrist können Sie auf den Verlauf zugreifen und programmatisch oder über die Konsole nach der Ausführung suchen.
F: Wann werden die API-Aufrufe gedrosselt?
Setzen Sie über sporadische Spitzen hinaus sehr große Mengen von API-Aufrufen in sehr kurzer Zeit ab, kann Ihr Datenverkehr gedrosselt werden. Wenn Sie feststellen, dass Ihr Datenverkehr sehr häufig gedrosselt wird oder dass in Ihrer Anwendung häufig Spitzen auftreten, kontaktieren Sie das Amazon SWF-Team über dieses Formular, um Ihr Nutzungsszenario zu besprechen und andere Drosselungseinstellungen für Ihr Konto anzufordern.
F: In welchen Regionen ist Amazon SWF verfügbar?
Amazon SWF (SWF) ist gegenwärtig in den folgenden Regionen verfügbar: USA Ost (Nord-Virginia), USA West (Oregon), USA West (Nordkalifornien), EU (Irland), EU (Frankfurt), Asien-Pazifik (Singapur), Asien-Pazifik (Tokio), Asien-Pazifik (Sydney), Südamerika (São Paolo) und AWS GovCloud (USA).
F: Ist Amazon SWF über Availability Zones hinweg verfügbar?
Ja, Amazon SWF verwaltet Ihren Workflow-Ausführungsverlauf und andere Details zu Ihren Workflows über 3 Availability Zones hinweg, sodass Ihre Anwendungen auch dann zuverlässig unter Amazon SWF ausgeführt werden, wenn es zu Fehlern in einer Availability Zone kommt.
F: Was sind die Service-Zugriffspunkte von Amazon SWF?
Weitere Informationen zu Zugriffsendpunkten finden Sie in der allgemeinen Referenzdokumentation zu AWS.
F: Sind Steuern bereits in den Preisen enthalten?
Falls nicht anders angegeben, gelten unsere Preise zuzüglich anfallender Steuern und Abgaben, u. a. MwSt. und Umsatzsteuer. Bei Kunden mit japanischer Rechnungsadresse unterliegt die Nutzung von AWS-Services der japanischen Verbrauchssteuer. Weitere Informationen.