Blog

AWS Step Functions: Reduzierung eines lang andauernden Prozesses um 75%

Francisco Diaz
April 24, 2023

Anfänglich wir haben uns auf ein Lambda verlassen-gesteuertes System zur monatlichen Übertragung großer Datensätze, damit Benutzer ihre Arbeit erledigen können. Intern nennen wir diesen Prozess Replikation. Im Laufe der Zeit wuchs die Zeit, die für den Abschluss der Replikation erforderlich war, auf mehrere Tage an, und die Anzahl der Fehler nahm zu. In diesem Beitrag werde ich demonstrieren, wie AWS Step funktioniert tragen dazu bei, Fehler zu reduzieren, die Verarbeitungszeit zu minimieren und die Skalierbarkeit Ihrer Anwendungen zu erhöhen.

Wo wir angefangen haben — Herausforderungen bei der Erstellung des Workflows

Die Erstellung eines Replikationssystems bringt einzigartige Herausforderungen mit sich. Wir verwenden AWS Lambda-Funktionen, um Microservices zu erstellen, da sie viele Vorteile bieten, wie z. B. hohe Skalierbarkeit, Kosteneffizienz und erhöhte Agilität. Eine typische Praxis in Datenverarbeitungspipelines ist die Verwendung eines „Orchestrator“ -Lambda, um Dienste in Workflows zu organisieren. Dies wird auch „Lambda Chaining“ genannt, wobei Lambdas verwendet werden, um andere Lambdas aufzurufen. Leider haben Lambdas eine maximale Laufzeit von 15 Minuten, was sie weniger ideal für Aufgaben mit langer Laufzeit macht. Timeouts können auftreten, wenn Ihre Daten wachsen. Bei unsachgemäßer Handhabung können größere Datensätze zu unerwünschten Kaskadeneffekten wie Teiloperationen, unvollständigen Daten und internen Fehlern führen.

Drosselungsfehler sind eine weitere Herausforderung, mit der wir konfrontiert waren. Cloud-Speicheranbieter haben unterschiedliche Nutzungsbeschränkungen und verhindern weitere Anfragen ab einem bestimmten Schwellenwert. Da alle Kunden am selben Tag repliziert werden, müssen Anfragen verwaltet werden, um Unterbrechungen zu vermeiden.

Wir mussten uns mit diesen Problemen befassen und begannen daher, nach neuen Lösungen zu suchen.

Die Lösung: AWS Step Functions

AWS Step Functions vereinfachen den Entwicklungsprozess mehrstufiger Workflows mithilfe von Zustandsautomaten. Sie sind eine bessere Möglichkeit, Aufgaben zu koordinieren und bieten flexible Optionen, um einen Arbeitsablauf an die Bedürfnisse Ihres Unternehmens anzupassen.

Hier sind einige Beispiele zur Auswahl:

  • Pass: Eigenschaften zwischen Zuständen ändern
  • Aufgabe: Verschiedene Aktionen aufrufen
  • Parallele: Führe mehrere Logikzweige gleichzeitig aus
  • Landkarte: Anwenden bestimmter Aktionen auf eine Liste von Elementen
  • Wahl: Bedingte Pfade basierend auf Eingaben
  • Warte: Pausen zu einem Workflow hinzufügen

Sie können noch viel mehr tun, besuchen Sie unbedingt die AWS-State-Machine-Muster um tiefer zu tauchen.

Einige Beispiele aus der Praxis

In den folgenden Beispielen werden wir die Vorteile von AWS Step Functions hervorheben, um Folgendes zu erreichen:

  1. Koordinieren und führen Sie Aufgaben sequentiell, zuverlässig und effizient aus.
  2. Steuern und verwalten Sie die Datenverarbeitung, um Drosselungen zu verhindern.
  3. Sorgen Sie für eine höhere Sichtbarkeit und Echtzeitüberwachung.
  4. Erstellen Sie einen Service, der auf Hunderte von Mitarbeitern gleichzeitig skaliert werden kann.

Der neue Workflow führt den Replikationsprozess für Kunden automatisch zu Beginn des Monats durch.

Lassen Sie uns einen Überblick über die verschiedenen Komponenten geben.

Die API

Die API ist der Einstiegspunkt für das System und empfängt Anfragen zur Replikation von Perioden. Es gruppiert Entitäten nach Speicheranbietern, um Aufgaben zu kontrollieren und zu regulieren. Dieser Prozess läuft automatisch zu Beginn des Monats mit Geplante Amazon EventBridge-Veranstaltungen.

Der Service

Der Gottesdienst wirkt wie ein Metronom, das von Musikern verwendet wird, um Tempo und Timing beizubehalten. Die Zustände Wait und Choice werden hier verwendet, um einen Puls nachzuahmen. Dieses Entwurfsmuster führt regelmäßig Aktionen aus, um Kennzahlen zu erfassen und neue Mitarbeiter für einen konsistenten Durchsatz zu gewinnen. Diese Komponente ist eine zentrale Überwachungs- und Steuerzentrale für das gesamte System.

Der Arbeiter

Jedem Worker wird ein Batch zugewiesen und er verarbeitet die Entitäten sequentiell, um eine Drosselung zu verhindern. Diese Step Function ruft eine weitere Step Function auf und demonstriert die Modularität von Workflows durch Verschachtelung.

Die Replikationsaufgabe

Der Replikationsprozess kann in 3 Stufen unterteilt werden:

  • Ordner erstellen: Erstellt die Ordnerbaumstruktur für einen neuen Zeitraum.
  • Vorlagen anwenden: Erstellt Checklisten und Abstimmungen mit neuen Fälligkeitsterminen.
  • Ordner hochladen: Synchronisiert Ordner und Dokumente mit dem Cloud-Speicheranbieter des Benutzers.

Das Risiko von Timeouts wird durch kleine unabhängige Schritte anstelle einer einzelnen Aufgabe mit langer Laufzeit behoben.

Ergebnisse und Ergebnis

Mit diesem neuen Workflow haben wir die Herausforderungen, mit denen wir zuvor konfrontiert waren, erfolgreich gemeistert. Durch die Aufteilung des Prozesses in einzelne Schritte haben wir die Skalierbarkeit erhöht und das Risiko von Timeouts ausgeschlossen. Dies ermöglicht es uns, zukünftiges Wachstum und Aktualisierungen problemlos zu berücksichtigen.

Durch Entitäts-Batching optimierten wir die Anzahl der eingesetzten Worker, erhöhten den Durchsatz und reduzierten die Replikationszeit um 75%. Bisher dauerte die Fertigstellung des Systems 6 Stunden, jetzt dauert es nur noch 1,5 Stunden. Dies verbesserte unsere Effizienz und Gesamtproduktivität erheblich.

Darüber hinaus hat die Gruppierung von Aufgaben nach Speicheranbietern die API-Drosselung effektiv verhindert. Wir haben zusätzliche Bearbeitungszeit gespart und die Anzahl der Fehler minimiert. Tatsächlich waren früher 68% der Fehler auf Drosselung zurückzuführen, diese Zahl wurde jedoch auf 2% reduziert.

Fazit

Dies erweist sich als effizienterer und optimierter Arbeitsablauf. Die Verbesserungen haben zu spürbaren Vorteilen geführt, darunter eine höhere Effizienz, weniger Fehler und eine minimierte Bearbeitungszeit. AWS Step Functions sind wegweisend. Es gibt noch viel mehr zu entdecken. Ich hoffe, Sie dazu inspiriert zu haben, AWS Step Functions auszuprobieren, um neue und spannende Workflows zu erstellen.