[Nom du Worker]
[Nom du Worker]
Documentation technique
Type de ressource : Cloudflare Worker (Microservice FaaS / Middleware)
Fichier source :services/[worker-name]/src/index.ts
Statut : [Actif / Déprécié / En développement]
1. Vue d’ensemble
1.1. Description
[Description concise du rôle de ce Worker dans l’architecture L3]
1.2. Objectif
- [Objectif principal : ex. intercepter toutes les requêtes HTTP pour appliquer les politiques de sécurité]
- [Bénéfice pour l’architecture : ex. découplage de la logique Edge du framework Astro]
1.3. Caractéristiques
| Propriété | Valeur |
|---|---|
| Type | [Middleware HTTP / Microservice métier / Cron Trigger / Pages Function] |
| Trigger | [HTTP fetch / Cron / Queue consumer / Les deux] |
| Route publique | https://[worker-name].[subdomain].workers.dev ou sous-domaine dédié |
| Environnements | [Production / Staging / Preview] |
| Consommateurs | [Astro / Sanity / Navigateur / Autres Workers] |
2. Architecture et flux
2.1. Diagramme de flux
[Entrée : Client / Astro / Sanity / Cron] │ ▼[Cloudflare Worker] │ • Validation des entrées │ • Logique métier │ • Interaction avec les bindings (KV, R2, Queue) ▼[Services tiers / Storage] │ • Sanity API / CRM / R2 / KV ▼[Réponse / Action]2.2. Positionnement dans la chaîne Edge
[Client] │ ▼[Middleware Global] ← (ce Worker, si applicable) │ ▼[Pages Functions / Autres Workers] │ ▼[Services tiers]2.3. Composants impliqués
| Composant | Rôle | Type |
|---|---|---|
| [Nom] | [Description] | [Binding / Service tiers / Client] |
3. Configuration
3.1. Variables d’environnement
| Variable | Description | Obligatoire | Valeur par défaut |
|---|---|---|---|
| [Variable] | [Description] | [✅/❌] | [Valeur] |
3.2. Bindings Cloudflare
| Binding | Type | Nom | Description |
|---|---|---|---|
| [Nom] | [KV / R2 / Queue / Service / Secret] | [Binding name] | [Description] |
3.3. Configuration Wrangler (wrangler.toml)
name = "[worker-name]"main = "src/index.ts"compatibility_date = "2026-09-01"
[vars]# Variables non-sensibles[VAR_NAME] = "value"
# Bindings[[kv_namespaces]]binding = "KV_BINDING"id = "your-kv-namespace-id"
[[r2_buckets]]binding = "R2_BUCKET"bucket_name = "bucket-name"
[[queues.producers]]queue = "queue-name"binding = "QUEUE_BINDING"
[triggers]crons = ["0 2 * * *"] # Si Cron Trigger
[env.production]vars = { [VAR_NAME] = "prod-value" }
[env.staging]vars = { [VAR_NAME] = "staging-value" }3.4. Injection des secrets
# Injection des secrets via Wrangler CLIwrangler secret put [SECRET_NAME] --env productionwrangler secret put [SECRET_NAME] --env staging4. Implémentation
4.1. Code de production (src/index.ts)
export interface Env { // Définition des bindings et variables d'environnement [BINDING_NAME]: [Type];}
export default { // Handler HTTP (si applicable) async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> { // Logique du Worker return new Response('OK', { status: 200 }); },
// Handler Cron (si applicable) async scheduled(event: ScheduledEvent, env: Env, ctx: ExecutionContext): Promise<void> { // Logique du Cron },
// Handler Queue (si applicable) async queue(batch: MessageBatch, env: Env, ctx: ExecutionContext): Promise<void> { // Logique du Queue consumer },};4.2. Interfaces et types
// Types spécifiques au Workerinterface [TypeName] { // ...}5. Sécurité
5.1. Mécanismes de sécurité
| Mécanisme | Implémentation | Rationale |
|---|---|---|
| [Mécanisme] | [Implémentation] | [Rationale] |
5.2. Validation des entrées
- ✅ [Règle de validation 1]
- ✅ [Règle de validation 2]
- ✅ [Règle de validation 3]
5.3. Gestion des secrets
- ✅ Les secrets ne sont jamais dans le code source
- ✅ Injection via
wrangler secret put - ✅ Rotation régulière des secrets (tous les 90 jours recommandé)
6. Résilience et gestion des erreurs
6.1. Stratégie de retry
| Scénario | Stratégie | Rationale |
|---|---|---|
| [Scénario] | [Retry / Fallback / Queue] | [Rationale] |
6.2. Safety Locks (si applicable)
| Lock | Condition | Action |
|---|---|---|
| [Nom] | [Condition] | [Action] |
6.3. Gestion des timeouts
- ✅ Timeout global : [X] secondes
- ✅ Timeout par service tiers : [X] secondes
- ✅ Fallback en cas de timeout : [Description]
7. Performance et limites
7.1. Limites Cloudflare Workers
| Limite | Valeur | Stratégie d’optimisation |
|---|---|---|
| Mémoire RAM | 128 MB | [Stratégie : streaming, URLs présignées] |
| CPU time | 30s (Free) / 50s (Paid) | [Stratégie] |
| Nombre de sous-requêtes | 50 | [Stratégie] |
| Taille requête/réponse | 100 MB | [Stratégie] |
7.2. Optimisations appliquées
- ✅ [Optimisation 1 : ex. streaming HTTP pour éviter OOM]
- ✅ [Optimisation 2 : ex. URLs présignées pour déporter l’upload]
- ✅ [Optimisation 3 : ex. debouncing KV pour limiter les exécutions]
8. Monitoring et observabilité
8.1. Logs structurés
// Format de log recommandéconsole.log(JSON.stringify({ worker: '[worker-name]', action: '[action]', status: '[success/error]', duration: 123, metadata: { /* ... */ }}));8.2. Métriques clés
| Métrique | Seuil d’alerte | Canal |
|---|---|---|
| Taux d’erreur 5xx | > 1% sur 5 min | [PagerDuty / Slack / Email] |
| Latence p95 | > [X]ms | [Canal] |
| [Autre métrique] | [Seuil] | [Canal] |
8.3. Commandes de debug
# Logs en temps réelwrangler tail [worker-name] --env production
# Vérification des bindingswrangler deployments list
# Inspection des variables d'environnementwrangler secret list --env production9. Déploiement
9.1. Pipeline de déploiement
# Buildnpm run build --workspace=services/[worker-name]
# Déploiement stagingwrangler deploy --env staging
# Déploiement productionwrangler deploy --env production9.2. Rollback
# Liste des déploiementswrangler deployments list
# Rollback vers une version précédentewrangler deployments rollback --deployment-id=[id]9.3. Tests manuels
# Test HTTPcurl -X POST "https://[worker-url]" \ -H "Content-Type: application/json" \ -d '{"key": "value"}'
# Test Cron (trigger manuel)wrangler dev --test-scheduled
# Test Queuewrangler queues tail [queue-name]10. Débogage et troubleshooting
10.1. Problèmes courants
| Symptôme | Cause probable | Solution |
|---|---|---|
| [Symptôme] | [Cause] | [Solution] |
10.2. Erreurs fréquentes
| Code HTTP / Erreur | Signification | Action |
|---|---|---|
| [Code] | [Signification] | [Action] |
11. Bonnes pratiques
11.1. Architecture
- ✅ Respecter le principe de responsabilité unique (un Worker = une mission)
- ✅ Découpler la logique Edge du framework Astro
- ✅ Utiliser les bindings Cloudflare plutôt que des appels HTTP internes
- ✅ Préférer le streaming HTTP au chargement en mémoire
11.2. Code
- ✅ Typer strictement les bindings et les réponses
- ✅ Valider toutes les entrées (Zod, schémas custom)
- ✅ Gérer explicitement les erreurs (try/catch)
- ✅ Logger de manière structurée (JSON)
11.3. Sécurité
- ✅ Ne jamais exposer les secrets côté client
- ✅ Valider cryptographiquement les webhooks (HMAC)
- ✅ Utiliser des comparaisons à temps constant pour les secrets
- ✅ Appliquer une CSP stricte (pour le Middleware)
11.4. Performance
- ✅ Minimiser le nombre de sous-requêtes
- ✅ Utiliser le cache KV pour les données fréquemment lues
- ✅ Déporter les uploads lourds via URLs présignées
- ✅ Utiliser le streaming pour les gros volumes
12. Évolutions et roadmap
12.1. Améliorations planifiées
- [Évolution 1]
- [Évolution 2]
- [Évolution 3]
12.2. Limitations connues
- ❌ [Limitation 1]
- ❌ [Limitation 2]
13. Ressources liées1/2
- Documentation Cloudflare Workers : Getting Started
- Documentation Wrangler : CLI Reference
- DAT L3 : §[X] - [Section pertinente]
- Workers associés :
- [Liste des Workers liés ou dépendants]
13. Ressources liées2/2
- Fichiers concernés :
services/[worker-name]/src/index.tsservices/[worker-name]/wrangler.tomlservices/[worker-name]/package.json
14. Historique des modifications1/2
| Date | Version | Description | Auteur |
|---|---|---|---|
| YYYY-MM-DD | 1.0 | Création initiale | [Nom] |
| YYYY-MM-DD | 1.1 | [Modification] | [Nom] |
14. Historique des modifications2/2
---
**Points clés de ce template :**- Couvre les trois types de handlers (HTTP fetch, Cron, Queue consumer)- Détaille la configuration Wrangler complète (bindings, secrets, environnements)- Inclut les safety locks et mécanismes de résilience (critiques pour les Workers métier)- Documente les limites Cloudflare et les stratégies d'optimisation- Fournit les commandes de debug et de rollback- Sépare clairement les bonnes pratiques par catégorie (architecture, code, sécurité, performance)- S'adapte à tous les Workers du projet (Middleware, form-handler, cms-webhook-receiver, media-upload, media-cleanup, sanity-backup)