[Nom du Worker]
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
Section titled â1. Vue dâensembleâ1.1. Description
Section titled â1.1. Descriptionâ[Description concise du rĂŽle de ce Worker dans lâarchitecture L3]
1.2. Objectif
Section titled â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
Section titled â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
Section titled â2. Architecture et fluxâ2.1. Diagramme de flux
Section titled â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
Section titled â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
Section titled â2.3. Composants impliquĂ©sâ| Composant | RĂŽle | Type |
|---|---|---|
| [Nom] | [Description] | [Binding / Service tiers / Client] |
3. Configuration
Section titled â3. Configurationâ3.1. Variables dâenvironnement
Section titled â3.1. Variables dâenvironnementâ| Variable | Description | Obligatoire | Valeur par dĂ©faut |
|---|---|---|---|
| [Variable] | [Description] | [â /â] | [Valeur] |
3.2. Bindings Cloudflare
Section titled â3.2. Bindings Cloudflareâ| Binding | Type | Nom | Description |
|---|---|---|---|
| [Nom] | [KV / R2 / Queue / Service / Secret] | [Binding name] | [Description] |
3.3. Configuration Wrangler (wrangler.toml)
Section titled â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
Section titled â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
Section titled â4. ImplĂ©mentationâ4.1. Code de production (src/index.ts)
Section titled â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
Section titled â4.2. Interfaces et typesâ// Types spĂ©cifiques au Workerinterface [TypeName] { // ...}5. SĂ©curitĂ©
Section titled â5. SĂ©curitĂ©â5.1. MĂ©canismes de sĂ©curitĂ©
Section titled â5.1. MĂ©canismes de sĂ©curitĂ©â| MĂ©canisme | ImplĂ©mentation | Rationale |
|---|---|---|
| [Mécanisme] | [Implémentation] | [Rationale] |
5.2. Validation des entrées
Section titled â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
Section titled â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
Section titled â6. RĂ©silience et gestion des erreursâ6.1. StratĂ©gie de retry
Section titled â6.1. StratĂ©gie de retryâ| ScĂ©nario | StratĂ©gie | Rationale |
|---|---|---|
| [Scénario] | [Retry / Fallback / Queue] | [Rationale] |
6.2. Safety Locks (si applicable)
Section titled â6.2. Safety Locks (si applicable)â| Lock | Condition | Action |
|---|---|---|
| [Nom] | [Condition] | [Action] |
6.3. Gestion des timeouts
Section titled â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
Section titled â7. Performance et limitesâ7.1. Limites Cloudflare Workers
Section titled â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
Section titled â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é
Section titled â8. Monitoring et observabilitĂ©â8.1. Logs structurĂ©s
Section titled â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
Section titled â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
Section titled â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
Section titled â9. DĂ©ploiementâ9.1. Pipeline de dĂ©ploiement
Section titled â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
Section titled â9.2. Rollbackâ# Liste des dĂ©ploiementswrangler deployments list
# Rollback vers une version précédentewrangler deployments rollback --deployment-id=[id]9.3. Tests manuels
Section titled â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
Section titled â10. DĂ©bogage et troubleshootingâ10.1. ProblĂšmes courants
Section titled â10.1. ProblĂšmes courantsâ| SymptĂŽme | Cause probable | Solution |
|---|---|---|
| [SymptĂŽme] | [Cause] | [Solution] |
10.2. Erreurs fréquentes
Section titled â10.2. Erreurs frĂ©quentesâ| Code HTTP / Erreur | Signification | Action |
|---|---|---|
| [Code] | [Signification] | [Action] |
11. Bonnes pratiques
Section titled â11. Bonnes pratiquesâ11.1. Architecture
Section titled â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
Section titled â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é
Section titled â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
Section titled â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
Section titled â12. Ăvolutions et roadmapâ12.1. AmĂ©liorations planifiĂ©es
Section titled â12.1. AmĂ©liorations planifiĂ©esâ- [Ăvolution 1]
- [Ăvolution 2]
- [Ăvolution 3]
12.2. Limitations connues
Section titled â12.2. Limitations connuesâ- â [Limitation 1]
- â [Limitation 2]
13. Ressources liées
Section titled â13. Ressources liĂ©esâ- 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]
- Fichiers concernés :
services/[worker-name]/src/index.tsservices/[worker-name]/wrangler.tomlservices/[worker-name]/package.json
14. Historique des modifications
Section titled â14. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| YYYY-MM-DD | 1.0 | Création initiale | [Nom] |
| YYYY-MM-DD | 1.1 | [Modification] | [Nom] |
---
**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)