ADR: Choix technologique pour la Couche 03 (Backend) via FaaS et Edge Computing
- Statut : Accepté
- Date : 2026-09-01
- Auteur : Ăquipe Architecture IT
1. Contexte et Problématique
Section titled â1. Contexte et ProblĂ©matiqueâLes Couches 01 (Contenu via Sanity/Starlight) et 02 (PrĂ©sentation via Astro en mode Hybride) Ă©tant dĂ©finies, nous devons structurer la Couche 03 : Backend (Logique mĂ©tier et services tiers).
Cette couche doit répondre à plusieurs impératifs :
- Performance globale : Minimiser la latence mondiale pour les utilisateurs, quel que soit leur emplacement géographique.
- FlexibilitĂ© dâexĂ©cution : Ătre capable de traiter aussi bien des opĂ©rations lĂ©gĂšres et immĂ©diates (personnalisation Ă la volĂ©e) que des tĂąches mĂ©tier plus lourdes (webhooks, traitement de formulaires, intĂ©gration dâAPI tierces, sauvegardes).
- RĂ©utilisabilitĂ© cross-projets : La logique dâauthentification, de routage bas niveau ou de sĂ©curitĂ© (middleware) ne doit pas ĂȘtre prisonniĂšre du framework de prĂ©sentation Astro, car lâentreprise prĂ©voit une stratĂ©gie multi-sites.
- SĂ©curitĂ© & RĂ©silience Serverless : Ăliminer les vulnĂ©rabilitĂ©s rĂ©seau (Open Redirects, spams de formulaires), Ă©viter la saturation des pipelines de dĂ©ploiement (debouncing des webhooks), et respecter strictly les limites de ressources Serverless (RAM/CPU) lors de lâupload et des sauvegardes.
2. Décision Architecturale
Section titled â2. DĂ©cision ArchitecturaleâNous dĂ©cidons dâadopter une architecture FaaS (Function-as-a-Service) couplĂ©e Ă lâEdge Computing, entiĂšrement basĂ©e sur lâĂ©cosystĂšme Cloudflare.
La couche backend est découpée selon quatre niveaux de traitement :
- Edge Caching Strict : Les pages statiques (articles, landing pages, doc) sont servies instantanément depuis le Edge cache de Cloudflare.
- Cloudflare Pages Functions : Utilisé pour le rendu SSR à la volée des pages Astro nécessitant une personnalisation légÚre.
- Cloudflare Workers DĂ©diĂ©s (Microservices) : Microservices indĂ©pendants exposĂ©s sous forme dâAPI pour la logique mĂ©tier lourde (
form-handler,cms-webhook-receiver,media-upload,media-cleanup,sanity-backup). - Middleware Cloudflare Workers IndĂ©pendant : Isolation de la logique de contrĂŽle rĂ©seau (CORS, CSP, dĂ©tection de bots, validation sĂ©curisĂ©e de la preview Sanity) au niveau de Cloudflare, en dehors dâAstro.
3. Justification du choix
Section titled â3. Justification du choixâ3.1. Edge Caching (Pages Statiques)
Section titled â3.1. Edge Caching (Pages Statiques)âLa Vitrine, le Blog, le Portfolio et la Documentation sont gĂ©nĂ©rĂ©s au build. En les servant directement depuis le rĂ©seau Edge mondial de Cloudflare, le serveur dâorigine nâest jamais sollicitĂ© par les utilisateurs finaux. Les temps de rĂ©ponse se mesurent en millisecondes et le coĂ»t dâinfrastructure est quasi nul.
3.2. Cloudflare Pages Functions (Personnalisation LégÚre)
Section titled â3.2. Cloudflare Pages Functions (Personnalisation LĂ©gĂšre)âPour les routes Astro configurĂ©es en mode SSR (prerender = false), Astro utilise lâadaptateur @astrojs/cloudflare pour compiler ces routes en Pages Functions. SâexĂ©cutant sur lâinfrastructure globale de Cloudflare (V8 isolates), elles permettent de personnaliser lâaffichage ou dâinjecter des donnĂ©es contextuelles sans subir les temps de dĂ©marrage Ă froid (cold starts).
3.3. Cloudflare Workers Dédiés (Microservices & Scalabilité)
Section titled â3.3. Cloudflare Workers DĂ©diĂ©s (Microservices & ScalabilitĂ©)âToute la logique dĂ©couplĂ©e de lâinterface est encapsulĂ©e dans des Cloudflare Workers autonomes :
- Gestion des formulaires (
form-handler) : Validation Zod, vĂ©rification serveur Turnstile anti-spam, et rĂ©silience dâenvoi. - RĂ©cepteur de Webhooks Sanity (
cms-webhook-receiver) : Validation cryptographique HMAC-SHA256 de la signature et mĂ©canisme de debouncing (tampon KV de 2 min) pour empĂȘcher la surchauffe du pipeline CI/CD lors dâĂ©ditions multiples. - Gestion des mĂ©dias (
media-upload) : Utilisation dâURLs prĂ©signĂ©es R2 et de Cloudflare Stream Direct Upload pour permettre lâenvoi direct depuis le client sans surcharger la mĂ©moire des Workers. - Maintenance & Sauvegardes (
media-cleanup&sanity-backup) : IntĂ©gration de Safety Locks (interdiction de purge si lâAPI source flanche) et de Streaming HTTP (TransformStream) vers R2 pour garantir une empreinte mĂ©moire constante (< 10 MB).
3.4. Middleware Externe (Découplage Multi-site & Sécurité)
Section titled â3.4. Middleware Externe (DĂ©couplage Multi-site & SĂ©curitĂ©)âEn plaçant un Middleware directement sous forme de Cloudflare Worker en amont de la couche de prĂ©sentation, nous interceptons les requĂȘtes HTTP au niveau du rĂ©seau. Cette approche permet :
- De rĂ©utiliser le mĂȘme middleware (sĂ©curitĂ©, CSP, réécriture dâURLs, dĂ©tection de bots) pour dâautres sites de lâentreprise.
- De sĂ©curiser lâactivation du mode Preview (validation HMAC, cookie
httpOnly/Secure, protection anti-Open-Redirect) et de forcer le bypass du cache Edge (cf.cacheEverything = false).
4. Conséquences de la décision
Section titled â4. ConsĂ©quences de la dĂ©cisionâEffets Positifs (Avantages)
Section titled âEffets Positifs (Avantages)â- Performances extrĂȘmes & Latence minimale : ExĂ©cution au plus proche de lâutilisateur sur le rĂ©seau Edge Cloudflare.
- Scalabilité infinie et coûts maßtrisés : Le modÚle serverless absorbe les pics de trafic sans administration de serveur.
- Protection & Résilience applicative : Protection renforcée (Turnstile, CSP strict, HMAC) et préservation de la mémoire des Workers grùce au streaming et aux URLs présignées.
- Architecture multi-tenant / multi-site : Le middleware et les Workers de logique métier sont agnostiques et réutilisables.
Effets Négatifs (Inconvénients & Risques)
Section titled âEffets NĂ©gatifs (InconvĂ©nients & Risques)â- Contraintes V8 Isolates : Obligation dâutiliser des APIs Web Standard (Fetch, Streams, Crypto) compatibles Cloudflare Workers.
- ComplexitĂ© dâorchestration locale : NĂ©cessite lâutilisation de Wrangler Monorepo pour exĂ©cuter simultanĂ©ment les simulacres de Workers, du Middleware et du serveur de dev Astro.
5. Alternatives Exclues
Section titled â5. Alternatives Excluesâ- Middleware intĂ©grĂ© Ă Astro : Exclu car il aurait liĂ© la logique rĂ©seau Ă lâapplication Astro, empĂȘchant sa rĂ©utilisation multi-site.
- Upload de médias traversant le Worker : Exclu en raison des limites de payload et de RAM des Workers. Les URLs présignées R2/Stream ont été retenues.
- Serveur monolithique traditionnel (ex: Express/Node.js sur un VPS) : Exclu en raison des coĂ»ts de maintenance, des risques de goulots dâĂ©tranglement, et dâune latence supĂ©rieure par rapport au Edge.