Guide du débutant sur Cloudflare Workers
Si vous cherchez à créer des applications web modernes sans gérer de serveurs, Cloudflare Workers offre une solution convaincante qui va bien au-delà des simples fonctions serverless. Contrairement aux plateformes traditionnelles, Workers fournit désormais tout ce dont vous avez besoin pour des applications full-stack : des bases de données SQL via D1, des connexions à des bases PostgreSQL ou MySQL existantes via Hyperdrive, l’hébergement de ressources statiques et une compatibilité étendue avec Node.js — le tout s’exécutant à la périphérie du réseau (edge), au plus près de vos utilisateurs.
Ce tutoriel Cloudflare Workers couvre les concepts et outils essentiels dont vous avez besoin pour démarrer, de la compréhension de l’exécution en périphérie à la création d’applications complètes avec connectivité de base de données moderne et gestion des ressources.
Points clés à retenir
- Cloudflare Workers exécute JavaScript, TypeScript et Python, et peut également exécuter Rust lorsqu’il est compilé en WebAssembly, le tout dans des emplacements edge à moins de 50 ms des utilisateurs du monde entier
- D1 fournit des bases de données SQLite serverless avec réplication automatique à la périphérie
- Hyperdrive permet des connexions efficaces aux bases de données PostgreSQL et MySQL existantes
- Workers prend en charge les applications full-stack avec hébergement de ressources statiques et compatibilité Node.js
Qu’est-ce que Cloudflare Workers ?
Explication de l’exécution en périphérie (edge)
Cloudflare Workers sont des fonctions JavaScript, TypeScript, Python ou Rust qui s’exécutent sur le réseau mondial de centres de données de Cloudflare. Au lieu de s’exécuter sur un serveur unique, votre code s’exécute à l’emplacement edge le plus proche de chaque utilisateur, généralement à moins de 50 millisecondes de n’importe qui sur Terre.
Ce modèle basé sur la périphérie signifie que votre application répond plus rapidement car les requêtes ne transitent pas vers un serveur central. La plateforme gère automatiquement la mise à l’échelle — que vous ayez dix utilisateurs ou dix millions, Workers s’ajuste sans configuration.
Concepts de base : Bindings et environnement
Workers utilise des bindings (liaisons) pour connecter votre code aux ressources. Il ne s’agit pas de variables d’environnement traditionnelles mais de connexions directes aux services :
- Espaces de noms KV pour le stockage clé-valeur
- Bases de données D1 pour les opérations SQL
- Buckets R2 pour le stockage d’objets
- Liaisons de services vers d’autres Workers
- Connexions Hyperdrive vers des bases de données externes
Chaque binding apparaît comme une propriété de l’objet env transmis à votre Worker :
export default {
async fetch(request, env, ctx) {
// Access D1 database
const result = await env.DB.prepare('SELECT * FROM users').all()
return Response.json(result)
}
}
Options de bases de données modernes avec Cloudflare D1 Database
D1 : SQL prêt pour la production à la périphérie
La base de données Cloudflare D1 apporte SQLite à la périphérie avec réplication et sauvegardes automatiques. Contrairement aux bases de données serverless traditionnelles, D1 s’exécute aux mêmes emplacements que vos Workers, éliminant la latence réseau pour les requêtes de base de données.
Créer une base de données D1 est simple :
npx wrangler d1 create my-database
npx wrangler d1 execute my-database --file=./schema.sql
Votre Worker accède à D1 via des bindings, rendant les requêtes locales :
const user = await env.DB.prepare('SELECT * FROM users WHERE id = ?')
.bind(userId)
.first()
Connectivité Hyperdrive pour les bases de données existantes
La connectivité Hyperdrive résout un défi courant : connecter Workers à des bases de données PostgreSQL ou MySQL existantes, y compris celles situées dans des réseaux privés. Hyperdrive maintient des pools de connexions à la périphérie de Cloudflare, réduisant la surcharge de connexion jusqu’à 30 fois.
La configuration d’Hyperdrive nécessite une configuration minimale :
npx wrangler hyperdrive create my-postgres \
--connection-string="postgresql://user:pass@host:5432/db"
Votre Worker utilise ensuite des bibliothèques de bases de données familières avec la connexion Hyperdrive :
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.
Création d’applications full-stack
Ressources statiques Workers et routage
Les ressources statiques Workers éliminent le besoin d’un hébergement séparé. Vos fichiers HTML, CSS, JavaScript et images se déploient aux côtés de votre code API. La plateforme sert automatiquement les fichiers statiques avec des en-têtes de cache et une compression appropriés.
La gestion des ressources statiques nécessite une entrée assets dans wrangler.toml pointant vers votre répertoire public.
Structure de projet pour un Worker full-stack :
my-app/
├── src/
│ └── index.js # Worker code
├── public/
│ ├── index.html # Static assets
│ ├── style.css
│ └── app.js
└── wrangler.toml # Configuration
Le routage gère à la fois les requêtes statiques et dynamiques :
export default {
async fetch(request, env, ctx) {
const url = new URL(request.url)
if (url.pathname.startsWith('/api/')) {
// Handle API routes
return handleAPI(request, env)
}
// Serve static assets
return env.ASSETS.fetch(request)
}
}
Avantages de la couche de compatibilité Node.js
La couche de compatibilité Node.js permet à des milliers de packages npm de fonctionner dans Workers. Contrairement aux premières versions qui ne prenaient en charge que les API standard web, Workers prend désormais en charge les modules intégrés Node.js comme Buffer, crypto, stream et path.
Activez la compatibilité Node.js dans votre wrangler.toml :
compatibility_flags = ["nodejs_compat"]
Cette compatibilité signifie que le code Node.js existant fonctionne souvent avec des modifications minimales, rendant la migration depuis des serveurs traditionnels simple.
Workflow de développement local
Configuration de votre environnement
Commencez avec Wrangler, l’outil CLI de Cloudflare :
npm create cloudflare@latest my-app
cd my-app
npm run dev
Wrangler fournit un développement avec rechargement à chaud et accès à tous les bindings localement. Vos bases de données D1, espaces de noms KV et même les connexions Hyperdrive fonctionnent en mode développement.
Tests et déploiement
Le serveur de développement local imite le comportement de production :
# Test with local D1 database
npx wrangler d1 execute DB --local --file=./seed.sql
# Deploy to production
npm run deploy
Fonctionnalités supplémentaires de la plateforme
Bien que ce tutoriel se concentre sur les concepts de base, Workers offre des capacités supplémentaires qui méritent d’être explorées :
- Queues pour le traitement des tâches en arrière-plan
- Notifications d’événements R2 pour les déclencheurs de stockage d’objets
- Déploiements progressifs pour des déploiements sécurisés
- Workers Analytics et journalisation structurée pour l’observabilité
Ces fonctionnalités s’intègrent de manière transparente à mesure que votre application se développe.
Conclusion
Cloudflare Workers a évolué de simples fonctions edge vers une plateforme complète pour les applications web modernes. Avec D1 pour le SQL serverless, Hyperdrive pour la connectivité aux bases de données existantes, l’hébergement intégré de ressources statiques et une compatibilité complète avec Node.js, vous pouvez créer des applications full-stack qui s’exécutent mondialement avec une configuration minimale.
Commencez avec un Worker simple, ajoutez une base de données D1 pour la persistance des données, et intégrez progressivement des fonctionnalités comme Hyperdrive ou R2 selon vos besoins. La plateforme gère la complexité de la distribution mondiale, vous permettant de vous concentrer sur la création de votre application.
FAQ
Oui, Workers peut gérer la plupart des tâches backend, y compris les endpoints API, les opérations de base de données, l'authentification et le stockage de fichiers. Avec D1 pour SQL, KV pour le cache, R2 pour le stockage d'objets et Hyperdrive pour les bases de données existantes, Workers fournit une solution backend complète qui se met à l'échelle automatiquement.
Workers facture par requête et temps de calcul avec un niveau gratuit généreux de 100 000 requêtes quotidiennes. Contrairement à l'hébergement traditionnel avec des coûts mensuels fixes, vous ne payez que pour l'utilisation réelle. Cela rend Workers rentable aussi bien pour les petits projets que pour les applications à fort trafic.
Utilisez Queues pour le traitement en arrière-plan, Durable Objects pour les opérations avec état, ou divisez les tâches en morceaux plus petits. Pour les tâches dépassant les limites, envisagez de combiner Workers avec des services externes ou d'utiliser les Workers planifiés de Cloudflare pour le traitement par lots.
Workers fournit un développement local avec wrangler dev pour les tests, une journalisation console visible dans les logs en temps réel et une intégration avec Chrome DevTools. La principale différence consiste à comprendre le cycle de vie basé sur les requêtes et à utiliser la journalisation structurée pour le débogage en production.
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.