Cloudflare Workflows Praxishandbuch: Fehlertolerante Serverless-Pipeline auf Durable Objects Basis

Cloudflare Workflows Praxishandbuch: Ausfallsichere Pipelines ohne Zeitlimits
Klassische Serverless-Umgebungen (AWS Lambda, Cloudflare Workers) gelitten historisch unter kurzen Ausführungs-Timeouts und fehlender Zustandsspeicherung. Für mehrstufige Prozesse wie KI-Verarbeitung oder Medienkonvertierung mussten bisher externe Warteschlangen und Datenbanken kombiniert werden.
Cloudflare Workflows löst dieses Problem durch eine Durable Execution Engine, die auf Durable Objects aufbaut. Tritt in einem Schritt ein Fehler auf, bleibt der Zustand erfolgreich absolvierter Schritte im persistenten Speicher erhalten und die Pipeline startet exakt am fehlgeschlagenen Schritt neu.
Dieser Leitfaden erklärt die Funktionsweise von Cloudflare Workflows, die Nutzung von step.do / step.sleep und zeigt eine komplette KI-Verarbeitungspipeline.
1. Klassisches Serverless vs. Cloudflare Workflows
| Kriterium | Klassische Workers / Lambda | Cloudflare Workflows (Durable Execution) |
|---|---|---|
| Max. Ausführungszeit | Begrenzt (ca. 30 Sekunden) | Unbegrenzt (Tage durch step.sleep möglich) |
| Wiederholung bei Fehlern | Gesamte Funktion startet neu | Automatische Wiederholungen nur für den defekten step |
| Zustandsspeicherung | Manuelles Speichern in Redis/D1 | Automatische Checkpoints pro Schritt via Durable Objects |
| Kostenmodell | Abrechnung auch während der Wartezeit | $0 CPU-Kosten während step.sleep |
2. Das Workflows Programmiermodell
Cloudflare Workflows werden als TypeScript-Klassen definiert, die von WorkflowEntrypoint erben.
3 Zentrale API-Methoden
step.do(name, config, callback): Der primäre Ausführungsschritt. Ergebnisse werden automatisch in Durable Storage gespeichert.step.sleep(name, duration): Pausiert den Ablauf ohne CPU-Kosten für eine definierte Dauer (Sekunden, Stunden, Tage).step.sleepUntil(name, timestamp): Halten Sie den Workflow bis zu einem exakten Zeitpunkt an.
3. Praxisbeispiel: KI-Pipeline mit automatischem Retry
Ein vollständiger Workflow zur KI-Zusammenfassung mit automatischen Re-Try-Versuchen und benachrichtigendem E-Mail-Versand:
import { WorkflowEntrypoint, WorkflowEvent, WorkflowStep } from 'cloudflare:workers';
type Env = {
AI: any;
MY_WORKFLOW: Workflow;
};
type Params = {
articleId: string;
userEmail: string;
rawText: string;
};
export class ArticleSummaryWorkflow extends WorkflowEntrypoint<Env, Params> {
async run(event: WorkflowEvent<Params>, step: WorkflowStep) {
const { articleId, userEmail, rawText } = event.payload;
// Schritt 1: KI-Zusammenfassung (Automatisch gespeichert)
const summary = await step.do('generate-summary', async () => {
const aiResponse = await this.env.AI.run('@cf/meta/llama-3.3-70b-instruct-fp8-fast', {
prompt: `Fasse diesen Text in 3 Punkten zusammen: ${rawText}`,
});
return aiResponse.summary;
});
// Schritt 2: Webhook mit exponentiellem Retry
const webhookResult = await step.do(
'send-webhook',
{
retries: {
limit: 3,
delay: '5 seconds',
backoff: 'exponential',
},
timeout: '10 seconds',
},
async () => {
const res = await fetch('https://api.example.com/webhooks/summary', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ articleId, summary }),
});
if (!res.ok) throw new Error(`HTTP Error: ${res.status}`);
return await res.json();
}
);
// Schritt 3: Kostenlose Wartezeit ($0 CPU-Kosten)
await step.sleep('wait-before-email', '10 seconds');
// Schritt 4: E-Mail-Versand
await step.do('send-email', async () => {
console.log(`E-Mail versendet an [${userEmail}]: ${summary}`);
return { status: 'sent', sentAt: new Date().toISOString() };
});
}
}
4. Fazit
Cloudflare Workflowseliminiert Ausführungs-Timeouts durch die native Zustandsspeicherung in Durable Objects.- Schrittweise Checkpoints garantieren die Fortsetzung direkt ab dem fehlgeschlagenen
step.do. - Bietet eine im Vergleich zu AWS Step Functions erheblich einfachere Developer Experience.