Log in to leave a comment
No posts yet
Bei der Arbeit mit Serverless Functions stößt man oft an die Grenze des Zeitlimits für die Ausführung. Vercel Workflows löst dieses Problem, indem es asynchrone Funktionen in zustandsorientierte Prozesse umwandelt. Der Kernpunkt hierbei ist, unsichere Faktoren wie Datenbank-Schreibvorgänge oder Zufallsfunktionen aus der Orchestrator-Funktion zu entfernen. Alle Nebeneffekte müssen zwingend in einen step.run-Block eingeschlossen werden, damit das System nicht inkonsistent wird.
Deklarieren Sie use workflow in der Funktion, die die gesamte Logik steuert, und verwalten Sie dort nur den Ablauf. Definieren Sie eigentliche API-Aufrufe oder DB-Operationen als unabhängige Schritte. Übergeben Sie beim Wechsel zum nächsten Schritt nur die absolut notwendigen Daten, um Kosten für die Log-Speicherung zu sparen. Mit dieser Struktur müssen Sie bei einem Fehler zwischendurch nicht wieder ganz von vorne anfangen. Sie können einfach an dem Punkt fortfahren, an dem die Ausführung gestoppt wurde.
In verteilten Systemen kann es aufgrund von Netzwerkfehlern vorkommen, dass derselbe Schritt zweimal ausgeführt wird. In einem Zahlungssystem wäre das eine Katastrophe. Vercel Workflows bietet für jeden Schritt eine eindeutige stepId. Wenn Sie diese ID bei der Integration von Diensten wie Toss Payments oder Stripe als Idempotenz-Key verwenden, lassen sich Unfälle durch Doppelzahlungen vermeiden.
Implementieren Sie ein Muster in Ihren Code, das vor dem Schreiben von Daten prüft, ob der Vorgang bereits verarbeitet wurde. Die mit getStepMetadata() extrahierte ID kann den Headern externer Service-Anfragen zugewiesen werden. Wenn eine Transaktion bereits verarbeitet wurde, sollte das System so konzipiert sein, dass es sofort zurückkehrt. Allein durch diesen Aufbau reduzieren Sie unnötige API-Aufrufe und sparen über 20 % der Infrastrukturkosten.
Vercel Serverless Functions schalten sich normalerweise nach 1 bis 15 Minuten ab. Mit step.sleep sind jedoch auch geplante Aufgaben, die mehrere Tage dauern, kein Problem. Sobald diese Funktion ausgeführt wird, wird der Workflow-Status im Speicher abgelegt und die Funktion sofort beendet. Während der Wartezeit fallen keine Rechenkosten an.
Wenn Sie beispielsweise drei Tage nach Abschluss einer Zahlung eine Umfrage-E-Mail senden möchten, genügt eine Zeile: await step.sleep('3 days'). Da Sie keinen separaten Crontab oder Scheduler verwalten müssen, reduziert sich der Betriebsaufwand um etwa zwei Stunden pro Woche. Auch die Kosten für den 24-Stunden-Betrieb eines Servers entfallen.
Der iterative Prozess aus Deployment und Korrektur bremst die Entwicklungsgeschwindigkeit. Mit den Funktionen der Vercel CLI können Sie Tests lokal durchführen, ohne den Code in die Cloud hochzuladen. Wenn Sie externe Webhooks empfangen müssen, nutzen Sie Tools wie ngrok, um Ihren Localhost nach außen freizugeben.
Starten Sie vercel dev und registrieren Sie die von ngrok generierte URL in den Stripe-Webhook-Einstellungen. So empfängt Ihr lokaler Code externe Events in Echtzeit. Fehler-Szenarien können bereits vor dem Deployment validiert werden, was die Entwicklung doppelt so schnell macht. Auch Zeitverluste durch falsch konfigurierte Umgebungsvariablen werden minimiert.
Wenn aufgrund von API-Ratenbegrenzungen oder temporären Netzwerkausfällen endlose Wiederholungsversuche auftreten, können die Kosten explodieren. Sie müssen je nach Art des Fehlers unterschiedlich reagieren. Permanente Fehler wie Authentifizierungsfehlgeschläge sollten sofort abgebrochen werden, während temporäre Netzwerkprobleme mit zeitlichem Abstand erneut versucht werden sollten.
Wenden Sie die Formel für den exponentiellen Backoff an, um die Intervalle zwischen den Versuchen schrittweise zu vergrößern:
Begrenzen Sie die maximale Anzahl der Versuche, indem Sie maxRetries: 3 in der step.run-Funktion festlegen. Da sich das System automatisch erholt, steigt die Serviceverfügbarkeit, und unnötige Kosten durch Endlosschleifen werden im Vorfeld blockiert.
Vercel Workflows bietet im Pro-Plan standardmäßig 50.000 Workflow-Schritte inklusive. Bei Überschreitung fallen Kosten von etwa $2.50 pro 100.000 Schritte an. Die Speicherkosten für lange Wartezeiten sind mit $0.00069 pro GB-Hour sehr günstig.
| Kategorie | Hobby/Pro Inklusivmenge | Folgerate |
|---|---|---|
| Workflow Steps | 50.000 Schritte | $2.50 pro 100.000 Schritte |
| Workflow Storage | 720 GB-Hours | $0.00069 pro GB-Hour |
| Serverless Function | 1.000 GB-Hours | $0.60 pro GB-Hour |
Im Vergleich zum Aufwand, eine komplexe Message Queue selbst aufzubauen und zu verwalten, ist dies überwältigend wirtschaftlich. Durch die richtige Kombination aus Idempotenz-Garantie und exponentiellem Backoff können Sie Zuverlässigkeit auf Produktionsniveau erreichen, ohne die Last der Infrastrukturverwaltung tragen zu müssen. Für Einzelentwickler, die sich auf ihre Business-Logik konzentrieren wollen, gibt es keine vernünftigere Wahl.