effidevFlutter · Cloudflare-Edge · Cloud-Kostenoptimierung
Deutsch

Migration von AWS Lambda zu Cloudflare Workers: 95% Serverless Egress-Kosten sparen

Kostenreduzierungs-Architektur bei der Migration von AWS Lambda zu Cloudflare Workers

Wenn eine Serverless-Anwendung skaliert, überrascht die monatliche Cloud-Rechnung meist mit extrem hohen Datenübertragungsgebühren (Egress Fees). Während Rechenleistung und Aufrufzahlen vorhersagbar bleiben, können die Egress-Kosten für den Datenversand an Clients bei steigendem Traffic explodieren.

Unsere Backend-Infrastruktur auf Basis von AWS Lambda und Amazon API Gateway erreichte ein monatliches Datenübertragungsvolumen von über 5 TB. Über 75% der gesamten Serverless-Kosten entfielen dabei allein auf ausgehende Netzwerkgebühren. Durch die Migration zu Cloudflare Workers am Edge konnten wir die Egress-Kosten um mehr als 95% senken und gleichzeitig Kaltstart-Latenzen um 80% reduzieren.

Dieser Artikel behandelt die technischen Migrationsgründe, den Kostenvergleich, das Refactoring von Node.js-Code hin zu V8-Isolates und Lösungen für Datenbank-Connection-Pools.

Wichtigste Erkenntnisse

  • Keine Egress-Gebühren (Zero Egress): AWS berechnet 0,09 $ pro GB für ausgehenden Internet-Traffic, während Cloudflare Workers 0 $ Egress-Gebühren für Worker-Antworten verlangt.
  • Keine Kaltstarts: Während AWS Lambda Kaltstarts von 200 ms bis 800 ms durch VPCs aufweist, startet Cloudflare Workers auf V8-Isolates in unter 5 ms.
  • Code-Refactoring: Node.js-spezifische Module (fs, net) müssen durch Web Standard APIs (Fetch API, Streams) oder Frameworks wie Hono ersetzt werden.
  • Datenbank-Anbindung: RDBMS-Zugriffe (PostgreSQL/MySQL) vom Edge erfordern Connection Pooling (z. B. Cloudflare Hyperdrive, Supabase, Neon), um Überlastungen zu vermeiden.

1. Der Auslöser: AWS-Egress-Kosten im Vergleich

Ein Kostenvergleich für 5 TB monatlichen Egress und 10 Millionen Anfragen:

Kategorie AWS (Lambda + API Gateway HTTP API) Cloudflare Workers (Paid-Tarif) Ersparnis
Basis-Tarif 0,00 $ (Pay-as-you-go) 5,00 $/Monat (inkl. 10 Mio. Anfragen) -
Anfrage-Kosten 10,00 $ (10M × 1,00 $/1M) 0,00 $ (Im Tarif enthalten) 100%
Rechen- / CPU-Kosten ~18,50 $ (256MB, 200ms Ausführung) 0,00 $ (30M CPU-ms enthalten) 100%
Netzwerk-Egress-Gebühr 450,00 $ (5.000GB × 0,09 $) 0,00 $ (Antwort-Egress kostenlos) 100%
Gesamtkosten Monat 478,50 $ 5,00 $ 98,9% Ersparnis

2. Handler-Refactoring: Hono FrameworkBeispiel

import { Hono } from 'hono';
import { cors } from 'hono/cors';

type Bindings = { API_KEY: string; };
const app = new Hono<{ Bindings: Bindings }>();

app.use('*', cors());

app.post('/api/process', async (c) => {
  const userId = c.req.query('userId');
  return c.json({
    message: "Success",
    userId,
    workerRegion: c.req.raw.cf?.colo || 'UNKNOWN'
  });
});

export default app;

3. Datenbank-Connection-Pooling mit Cloudflare Hyperdrive

import { Client } from 'pg';

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const client = new Client({ connectionString: env.HYPERDRIVE.connectionString });
    await client.connect();
    const { rows } = await client.query('SELECT * FROM users LIMIT 10');
    await client.end();
    return Response.json(rows);
  }
};

Fazit

Durch den Wechsel zu Cloudflare Workers entfallen die Egress-Kosten für HTTP-Antworten vollständig. Dadurch sinken die Serverless-Betriebskosten um über 95% bei gleichzeitig schnelleren weltweiten Latenzzeiten.