Ein Leitfaden für Einsteiger zu Cloudflare Workers
Einführung
Wenn Sie moderne Webanwendungen erstellen möchten, ohne Server verwalten zu müssen, bietet Cloudflare Workers eine überzeugende Lösung, die weit über einfache Serverless-Funktionen hinausgeht. Im Gegensatz zu traditionellen Plattformen bietet Workers mittlerweile alles, was für Full-Stack-Anwendungen benötigt wird: SQL-Datenbanken über D1, Verbindungen zu bestehenden PostgreSQL- oder MySQL-Datenbanken via Hyperdrive, Hosting statischer Assets und umfassende Node.js-Kompatibilität – alles läuft am Edge, in der Nähe Ihrer Nutzer.
Dieses Cloudflare Workers Tutorial behandelt die wesentlichen Konzepte und Tools, die Sie für den Einstieg benötigen, vom Verständnis der Edge-basierten Ausführung bis hin zur Erstellung vollständiger Anwendungen mit moderner Datenbankanbindung und Asset-Verwaltung.
Wichtigste Erkenntnisse
- Cloudflare Workers führen JavaScript, TypeScript und Python aus und können auch Rust ausführen, wenn es zu WebAssembly kompiliert wird – alles an Edge-Standorten innerhalb von 50 ms von Nutzern weltweit
- D1 bietet serverlose SQLite-Datenbanken mit automatischer Replikation am Edge
- Hyperdrive ermöglicht effiziente Verbindungen zu bestehenden PostgreSQL- und MySQL-Datenbanken
- Workers unterstützen Full-Stack-Anwendungen mit Hosting statischer Assets und Node.js-Kompatibilität
Was sind Cloudflare Workers?
Edge-basierte Ausführung erklärt
Cloudflare Workers sind JavaScript-, TypeScript-, Python- oder Rust-Funktionen, die im globalen Netzwerk von Cloudflare-Rechenzentren ausgeführt werden. Anstatt auf einem einzelnen Server zu laufen, wird Ihr Code am Edge-Standort ausgeführt, der jedem Nutzer am nächsten liegt – typischerweise innerhalb von 50 Millisekunden von jedem Ort der Erde.
Dieses Edge-basierte Modell bedeutet, dass Ihre Anwendung schneller reagiert, da Anfragen nicht zu einem zentralen Server reisen müssen. Die Plattform übernimmt automatisch die Skalierung – ob Sie zehn Nutzer oder zehn Millionen haben, Workers passt sich ohne Konfiguration an.
Grundkonzepte: Bindings und Environment
Workers verwenden Bindings, um Ihren Code mit Ressourcen zu verbinden. Dies sind keine traditionellen Umgebungsvariablen, sondern direkte Verbindungen zu Services:
- KV-Namespaces für Key-Value-Speicherung
- D1-Datenbanken für SQL-Operationen
- R2-Buckets für Objektspeicherung
- Service-Bindings zu anderen Workers
- Hyperdrive-Verbindungen zu externen Datenbanken
Jedes Binding erscheint als Eigenschaft des env-Objekts, das an Ihren Worker übergeben wird:
export default {
async fetch(request, env, ctx) {
// Zugriff auf D1-Datenbank
const result = await env.DB.prepare('SELECT * FROM users').all()
return Response.json(result)
}
}
Moderne Datenbankoptionen mit Cloudflare D1 Database
D1: Produktionsreife SQL am Edge
Die Cloudflare D1 Database bringt SQLite an den Edge mit automatischer Replikation und Backups. Im Gegensatz zu traditionellen Serverless-Datenbanken läuft D1 an denselben Standorten wie Ihre Workers und eliminiert damit Netzwerklatenz für Datenbankabfragen.
Das Erstellen einer D1-Datenbank ist unkompliziert:
npx wrangler d1 create my-database
npx wrangler d1 execute my-database --file=./schema.sql
Ihr Worker greift über Bindings auf D1 zu, wodurch sich Abfragen lokal anfühlen:
const user = await env.DB.prepare('SELECT * FROM users WHERE id = ?')
.bind(userId)
.first()
Hyperdrive-Konnektivität für bestehende Datenbanken
Hyperdrive-Konnektivität löst eine häufige Herausforderung: die Verbindung von Workers zu bestehenden PostgreSQL- oder MySQL-Datenbanken, einschließlich solcher in privaten Netzwerken. Hyperdrive unterhält Connection-Pools am Edge von Cloudflare und reduziert den Verbindungsoverhead um bis zu das 30-fache.
Die Einrichtung von Hyperdrive erfordert minimale Konfiguration:
npx wrangler hyperdrive create my-postgres \
--connection-string="postgresql://user:pass@host:5432/db"
Ihr Worker verwendet dann vertraute Datenbankbibliotheken mit der Hyperdrive-Verbindung:
import { Client } from 'pg'
export default {
async fetch(request, env) {
const client = new Client(env.HYPERDRIVE.connectionString)
await client.connect()
const result = await client.query('SELECT * FROM products')
return Response.json(result.rows)
}
}
Discover how at OpenReplay.com.
Erstellen von Full-Stack-Anwendungen
Workers Static Assets und Routing
Workers Static Assets machen separates Hosting überflüssig. Ihr HTML, CSS, JavaScript und Ihre Bilder werden zusammen mit Ihrem API-Code bereitgestellt. Die Plattform liefert statische Dateien automatisch mit korrekten Caching-Headern und Kompression aus.
Die Handhabung statischer Assets erfordert einen assets-Eintrag in wrangler.toml, der auf Ihr öffentliches Verzeichnis verweist.
Projektstruktur für einen Full-Stack-Worker:
my-app/
├── src/
│ └── index.js # Worker-Code
├── public/
│ ├── index.html # Statische Assets
│ ├── style.css
│ └── app.js
└── wrangler.toml # Konfiguration
Routing behandelt sowohl statische als auch dynamische Anfragen:
export default {
async fetch(request, env, ctx) {
const url = new URL(request.url)
if (url.pathname.startsWith('/api/')) {
// API-Routen behandeln
return handleAPI(request, env)
}
// Statische Assets ausliefern
return env.ASSETS.fetch(request)
}
}
Vorteile der Node.js-Kompatibilitätsschicht
Die Node.js-Kompatibilitätsschicht ermöglicht es Tausenden von npm-Paketen, in Workers zu funktionieren. Im Gegensatz zu frühen Versionen, die nur Web-Standard-APIs unterstützten, unterstützen Workers jetzt Node.js-Built-ins wie Buffer, crypto, stream und path.
Aktivieren Sie die Node.js-Kompatibilität in Ihrer wrangler.toml:
compatibility_flags = ["nodejs_compat"]
Diese Kompatibilität bedeutet, dass bestehender Node.js-Code oft mit minimalen Änderungen funktioniert, was die Migration von traditionellen Servern unkompliziert macht.
Lokaler Entwicklungs-Workflow
Einrichten Ihrer Umgebung
Beginnen Sie mit Wrangler, dem CLI-Tool von Cloudflare:
npm create cloudflare@latest my-app
cd my-app
npm run dev
Wrangler bietet Hot-Reload-Entwicklung mit Zugriff auf alle Bindings lokal. Ihre D1-Datenbanken, KV-Namespaces und sogar Hyperdrive-Verbindungen funktionieren im Entwicklungsmodus.
Testen und Deployment
Der lokale Entwicklungsserver imitiert das Produktionsverhalten:
# Testen mit lokaler D1-Datenbank
npx wrangler d1 execute DB --local --file=./seed.sql
# In Produktion deployen
npm run deploy
Zusätzliche Plattform-Features
Während sich dieses Tutorial auf Kernkonzepte konzentriert, bietet Workers zusätzliche Funktionen, die es zu erkunden lohnt:
- Queues für die Verarbeitung von Hintergrund-Jobs
- R2-Event-Benachrichtigungen für Objektspeicher-Trigger
- Gradual Deployments für sichere Rollouts
- Workers Analytics und strukturiertes Logging für Observability
Diese Features integrieren sich nahtlos, wenn Ihre Anwendung wächst.
Fazit
Cloudflare Workers hat sich von einfachen Edge-Funktionen zu einer vollständigen Plattform für moderne Webanwendungen entwickelt. Mit D1 für serverlose SQL, Hyperdrive für bestehende Datenbankanbindung, integriertem Hosting statischer Assets und umfassender Node.js-Kompatibilität können Sie Full-Stack-Anwendungen erstellen, die global mit minimaler Konfiguration laufen.
Beginnen Sie mit einem einfachen Worker, fügen Sie eine D1-Datenbank für Datenpersistenz hinzu und integrieren Sie nach und nach Features wie Hyperdrive oder R2, wenn nötig. Die Plattform übernimmt die Komplexität der globalen Verteilung und lässt Sie sich auf die Entwicklung Ihrer Anwendung konzentrieren.
Häufig gestellte Fragen (FAQs)
Ja, Workers können die meisten Backend-Aufgaben bewältigen, einschließlich API-Endpunkte, Datenbankoperationen, Authentifizierung und Dateispeicherung. Mit D1 für SQL, KV für Caching, R2 für Objektspeicherung und Hyperdrive für bestehende Datenbanken bieten Workers eine vollständige Backend-Lösung, die automatisch skaliert.
Workers berechnet pro Anfrage und Rechenzeit mit einem großzügigen kostenlosen Kontingent von 100.000 Anfragen täglich. Im Gegensatz zu traditionellem Hosting mit festen monatlichen Kosten zahlen Sie nur für die tatsächliche Nutzung. Dies macht Workers kosteneffektiv sowohl für kleine Projekte als auch für Anwendungen mit hohem Traffic.
Verwenden Sie Queues für Hintergrundverarbeitung, Durable Objects für zustandsbehaftete Operationen oder teilen Sie Aufgaben in kleinere Chunks auf. Für Aufgaben, die Limits überschreiten, sollten Sie erwägen, Workers mit externen Services zu kombinieren oder Cloudflares Scheduled Workers für Batch-Verarbeitung zu verwenden.
Workers bietet lokale Entwicklung mit wrangler dev zum Testen, Console-Logging sichtbar in Echtzeit-Logs und Integration mit Chrome DevTools. Der Hauptunterschied besteht darin, den anfrage-basierten Lebenszyklus zu verstehen und strukturiertes Logging für Produktions-Debugging zu verwenden.
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.