ADR: Utilisation de Service Binding Cloudflare pour l'inter-Worker communication
- Statut : Accepté
- Date : 2026-09-16
- Auteur : Devin
1. Contexte et Problématique
Section titled â1. Contexte et ProblĂ©matiqueâLâendpoint /api/submit dans Astro doit dĂ©lĂ©guer la validation et la mise en queue des soumissions de formulaire au Worker form-handler. En production, les deux Workers sont dĂ©ployĂ©s sur Cloudflare, et la communication doit ĂȘtre optimisĂ©e pour Ă©viter les appels HTTP externes.
Les besoins sont :
- Communication optimisée entre Workers sur Cloudflare
- SĂ©curitĂ© : Ă©viter lâexposition publique du Worker form-handler
- Performance : minimiser la latence de communication
- Flexibilité : support du développement local (HTTP classique) et de la production (Service Binding)
2. Décision Architecturale
Section titled â2. DĂ©cision ArchitecturaleâNous dĂ©cidons dâutiliser Cloudflare Service Binding pour la communication entre lâendpoint /api/submit et le Worker form-handler en production.
Lâarchitecture adoptĂ©e est la suivante :
- En développement local : Utilisation de HTTP classique (
fetch('http://localhost:8789/test-direct')) pour tester sans infrastructure Cloudflare. - En production : Utilisation du Service Binding
FORM_HANDLERfourni par Cloudflare via lâimportcloudflare:workerspour une communication interne optimisĂ©e.
3. Justification du choix
Section titled â3. Justification du choixâ3.1. Pourquoi Cloudflare Service Binding ?
Section titled â3.1. Pourquoi Cloudflare Service Binding ?â- Performance : Les Service Bindings permettent une communication interne optimisĂ©e entre Workers, Ă©vitant les appels HTTP externes.
- SĂ©curitĂ© : Le Worker form-handler nâest pas exposĂ© publiquement, uniquement accessible via le Service Binding.
- Latence minimale : La communication interne est plus rapide que les appels HTTP externes.
- SimplicitĂ© : LâAPI Service Binding est native et simplifiĂ©e par rapport aux appels HTTP.
3.2. Pourquoi pas dâautres approches ?
Section titled â3.2. Pourquoi pas dâautres approches ?â- Appels HTTP externes : Exclus car plus lents et nĂ©cessitent une exposition publique du Worker form-handler.
- Queue directe depuis Astro : Exclu car Astro ne peut pas produire directement dans une Queue Cloudflare (nécessite un Worker).
- Communication via KV/R2 : Exclu car inadaptĂ© au pattern requĂȘte/rĂ©ponse synchrone.
4. Conséquences de la décision
Section titled â4. ConsĂ©quences de la dĂ©cisionâEffets Positifs (Avantages)
Section titled âEffets Positifs (Avantages)â- Performance optimisĂ©e : Communication interne rapide entre Workers.
- SĂ©curitĂ© renforcĂ©e : Le Worker form-handler nâest pas exposĂ© publiquement.
- Flexibilité : Support du développement local (HTTP) et de la production (Service Binding).
- Latence minimale : Communication interne optimisée.
Effets Négatifs (Inconvénients & Risques)
Section titled âEffets NĂ©gatifs (InconvĂ©nients & Risques)â- ComplexitĂ© conditionnelle : NĂ©cessite de gĂ©rer deux modes (local vs production) dans le code.
- DĂ©pendance Cloudflare : Utilisation dâune API spĂ©cifique Cloudflare (
cloudflare:workers). - Configuration requise : Le Service Binding
FORM_HANDLERdoit ĂȘtre configurĂ© danswrangler.toml.
5. Alternatives Exclues
Section titled â5. Alternatives Excluesâ- Appels HTTP externes : Exclus car plus lents et nĂ©cessitent une exposition publique.
- Queue directe depuis Astro : Exclu car Astro ne peut pas produire directement dans une Queue.
- Communication via KV/R2 : Exclu car inadaptĂ© au pattern requĂȘte/rĂ©ponse synchrone.
6. Recommandations
Section titled â6. Recommandationsâ- Configuration du Service Binding : VĂ©rifier que le Service Binding
FORM_HANDLERest correctement configuré dansapps/web/wrangler.toml. - Tests locaux : Tester le mode HTTP local avant déploiement.
- Surveillance : Surveiller les logs pour détecter les erreurs de communication entre Workers.
- Documentation : Documenter clairement la dualité des modes (local vs production) dans le guide de développement.