Guide d'architecture logicielle
Architecture edge globale : routage du trafic mondial, cache et résilience de l'origine
Une architecture edge globale combine une diffusion locale avec un routage du trafic mondial mesuré, une résilience de l'origine explicite et une gestion disciplinée des données pour que les chemins rapides ne créent pas de risque opérationnel caché.
Sur cette page
Les utilisateurs mondiaux font l'expérience d'une application à travers les résolveurs DNS, les chemins réseau, la terminaison TLS, les points de présence edge, les caches, les régions d'origine et les systèmes de données. Une périphérie proche peut améliorer la première partie de ce chemin, mais elle ne fait pas disparaître une origine distante, surchargée ou incohérente. L'architecture edge globale consiste donc à choisir où le travail se produit et comment le système se comporte lorsqu'un emplacement ou fournisseur se dégrade. À l'échelle où opère une couche d'orchestration edge managée — des dizaines de routes, plusieurs réseaux de fournisseurs et deux régions faisant autorité ou plus — cette discipline ne tient que si elle est appliquée de la même façon partout et observée depuis un seul endroit ; sinon, l'edge la plus rapide du monde peut quand même basculer vers la mauvaise région.
Ce guide présente une approche neutre vis-à-vis des fournisseurs pour les architectes logiciels et ingénieurs DevOps. Elle s'applique que la diffusion utilise un CDN, plusieurs fournisseurs, des équilibreurs de charge cloud, des origines dédiées ou un mélange de ces composants.
La proximité géographique n'est pas à elle seule une stratégie de fiabilité
Le point de présence le plus proche peut être défaillant, une origine peut être saturée et une écriture peut nécessiter une région faisant autorité. Routez selon une capacité mesurée et une politique claire, et non seulement une carte ou une consultation de géolocalisation IP. Dès qu'un second fournisseur edge entre en jeu, le risque n'est plus la proximité mais la dérive : deux politiques de cache et de contrôle de santé qui répondent différemment à la même question. Orchestrer une politique unique de cache et de bascule entre fournisseurs, et la superviser depuis une vue unique comme MYO, est ce qui maintient une architecture réellement neutre vis-à-vis des fournisseurs plutôt qu'incohérente entre eux.
Un scénario concret d'architecture edge globale : Acme Shop entre l'Europe et les États-Unis
Prenons Acme Shop, un commerçant qui diffuse ses pages publiques et son catalogue depuis des caches edge régionaux en Europe et aux États-Unis. Les données de profil des clients européens restent dans l'autorité européenne d'Acme, les données américaines dans l'autorité américaine, et les écritures de commande partent toujours vers l'autorité d'origine du client. Lors d'une panne de la région applicative américaine, Acme continue à servir les pages de catalogue depuis le cache et ne bascule le paiement américain que vers un secondaire pré-validé, doté des dépendances requises — jamais vers l'Europe, même saine. Acme traite son DNS faisant autorité et son pilotage du trafic edge comme deux plans de contrôle distincts, à deux vitesses de récupération : l'edge absorbe la défaillance d'un site en quelques secondes, tandis que déplacer une région entière vers un autre fournisseur reste un changement DNS plus lent et revu.
Établissez les parcours utilisateur et les objectifs régionaux
Commencez par les parcours critiques, et non par les composants d'infrastructure. Définissez un objectif de latence et de disponibilité pour les pages publiques, API, authentification, paiement, médias et flux administratifs. Segmentez les objectifs par régions et conditions réseau pertinentes là où l'entreprise les sert. Pour Acme, cela signifie un objectif de p95 distinct pour les pages publiques, le compte client et le paiement, en Europe comme aux États-Unis, plutôt qu'un seul chiffre mondial qui masquerait une dégradation régionale.
Cartographiez le parcours à travers DNS, edge, cache, origine, services, magasins de données et tiers. Marquez quelles réponses peuvent être servies localement, lesquelles exigent une lecture régionale et lesquelles exigent une écriture faisant autorité. Incluez le comportement en cas de défaillance — réponse en cache, réponse dégradée, acceptation dans une file, repli régional ou erreur explicite — et ce qui ne doit jamais se produire, comme mettre en cache un prix propre à un client ou envoyer une donnée de compte européenne vers les États-Unis par simple commodité.
Utilisez le monitoring d'utilisateurs réels pour la vision côté utilisateur, des sondes synthétiques pour les contrôles de disponibilité contrôlés et la télémétrie backend pour la causalité. Comparez p50, p95 et p99 plutôt que de célébrer une moyenne. Un budget de latence mondial doit laisser du temps pour le réseau client, le traitement edge, le travail d'origine, les dépendances et la variation normale.
Concevez le DNS et l'anycast pour un routage du trafic mondial sûr
Deux mécanismes distincts déplacent réellement le trafic à l'échelle mondiale, et ils échouent selon des échelles de temps différentes. Le pilotage par DNS change l'adresse renvoyée par un résolveur : simple à raisonner, mais un changement ne prend effet qu'après l'expiration des réponses mises en cache par les résolveurs — typiquement des minutes. Abaissez le TTL d'un enregistrement avant un changement planifié, pas pendant un incident : un TTL réduit après que les résolveurs ont déjà mis en cache l'ancienne valeur n'a aucun effet rétroactif.
Le routage anycast annonce la même adresse depuis chaque site edge et laisse BGP livrer chaque paquet vers un site topologiquement proche et sain. La convergence après le retrait d'une route se compte en secondes plutôt qu'en minutes, ce qui explique pourquoi la plupart des réseaux CDN et de résolveurs DNS s'appuient sur l'anycast sous leur routage du trafic mondial. Le compromis se situe dans le re-routage en cours de session : si BGP reconverge pendant une connexion longue, comme un WebSocket, les paquets suivants peuvent atterrir sur un site sans trace de l'état de cette connexion, la rompant même si chaque saut a « réussi ». Traitez ce risque comme une contrepartie explicite de l'anycast : une route portant des connexions longues doit prévoir un drainage de session ou une nouvelle tentative que le client gère proprement. Acme utilise les deux mécanismes, délibérément, sans laisser l'un se substituer à l'autre : l'anycast au niveau edge offre une protection en moins d'une seconde contre la défaillance d'un site unique, tandis que la sélection de fournisseur par DNS reste réservée à la décision lente de déplacer le point d'entrée d'une région vers un autre réseau. Un basculement au niveau BGP ne prend jamais de décision d'autorité sur les données ; celle-ci reste gouvernée par la conception d'autorité régionale décrite plus loin.
Au niveau HTTP, une périphérie peut prendre des décisions plus informées avec le chemin, les en-têtes, les cookies, l'état du cache et la santé applicative. Gardez la logique de routage déterministe et auditable. Utilisez des déplacements pondérés ou graduels pour les changements planifiés ; réservez un chemin d'urgence pour une panne confirmée. Ajoutez une hystérésis, des périodes de séjour minimales et des contrôles de récupération afin que des signaux transitoires ne provoquent pas de basculements de trafic répétés.
Pour chaque route, documentez la destination primaire et secondaire, l'allocation de capacité, les certificats TLS, les en-têtes d'hôte, l'authentification, la politique de cache, les dépendances de données et l'action de rollback. Une origine secondaire qui n'a pas reçu la configuration courante ou ne peut pas joindre la base de données requise n'est pas une cible de basculement.
Le DNS porte un second risque, moins évident, pendant un incident : les résolveurs mettent aussi en cache les échecs de résolution, pas seulement les réponses positives. Si un serveur de noms faisant autorité devient brièvement inaccessible, un résolveur récursif peut conserver cet échec pendant toute sa fenêtre de cache négatif, prolongeant une panne bien après le rétablissement réel du côté faisant autorité. Traitez la disponibilité du chemin DNS faisant autorité comme une dépendance surveillée, distincte des enregistrements qu'il sert, et raccourcissez les fenêtres de cache négatif que vous contrôlez.
Traitez la topologie de cache comme une conception de capacité et de résilience de l'origine
Mettez en cache près des utilisateurs les représentations publiques et stables avec des directives de cache HTTP explicites. Décidez où se situent les couches de cache : navigateur, point de présence edge, shield régional et cache applicatif ont chacun un comportement d'éviction, visibilité et invalidation différent. La meilleure topologie est celle qui correspond à la volatilité du contenu et rend la charge d'origine prévisible. Acme, par exemple, ne met en cache que les représentations publiques du catalogue, avec une clé fondée sur le chemin normalisé, la locale approuvée et une variante documentée — jamais un prix ou une session propres à un client.
Utilisez une clé de cache définie de manière étroite. Normalisez les chemins et des paramètres de requête sélectionnés ; n'incluez les dimensions de variante que lorsqu'elles modifient la représentation. Évitez la mise en cache partagée de réponses personnalisées, authentifiées ou sensibles à moins que le modèle d'isolation ne soit conçu, revu et testé spécifiquement. Les recommandations de cache HTTP de l'IETF offrent une base utile, mais le propriétaire produit définit si du contenu obsolète est acceptable.
Ajoutez le regroupement de requêtes et un origin shield pour le contenu à forte demande, afin de réduire les récupérations d'origine dupliquées pendant l'expiration de cache ou les purges. À un taux de succès de cache H, une route publique recevant R requêtes par seconde n'envoie qu'environ R × (1 − H) requêtes initiales vers l'amont : un repère de planification, pas une autorisation de dépasser la concurrence tolérée par l'origine. Un cache froid, une purge ou un changement de routage fait chuter H, ce qui doit être testé à la distribution de trafic attendue. Protégez-vous contre les cache stampedes avec des TTL à gigue, stale-while-revalidate lorsqu'il convient, du verrouillage par clé et un budget de concurrence d'origine, testé dans un plan de lancement plutôt qu'après un pic de trafic réel.
La résilience de l'origine tient aussi à ce que le cache est autorisé à faire lorsque l'origine est lente ou défaillante, pas seulement au taux de succès. Les réponses de catalogue d'Acme portent une directive du type max-age=120, stale-while-revalidate=300, stale-if-error=3600. stale-while-revalidate laisse l'edge servir la dernière copie suffisamment fraîche pendant qu'il revalide en arrière-plan ; stale-if-error laisse l'edge continuer à servir cette même copie pendant une heure si l'origine renvoie des erreurs — c'est cette directive qui protège réellement une page pendant un incident d'origine. Les deux n'aident que si chaque couche entre l'edge et le navigateur les respecte : un shield ou un proxy intermédiaire qui retire la directive supprime silencieusement la protection qu'elle était censée offrir.
Rendez les origines difficiles à atteindre et faciles à protéger
La périphérie mondiale doit être le point d'entrée public prévu, et non un proxy facultatif. Restreignez l'entrée d'origine aux réseaux de diffusion de confiance ou à une connectivité privée, authentifiez les requêtes edge-à-origine et retirez ou remplacez les en-têtes de transfert fournis par le client à la frontière de confiance. Assurez-vous que les anciens enregistrements DNS, IP directes, endpoints de stockage et hôtes de développement n'exposent pas de chemin de contournement.
Définissez des limites distinctes à la périphérie et à l'origine. La périphérie peut absorber un trafic large, tandis que l'origine nécessite des limites strictes pour les connexions, requêtes, chargements et routes coûteuses. Appliquez WAF, gestion des bots, contrôles DDoS, validation de requête et limites de débit selon le modèle de menace, de façon observable et ciblée afin qu'une atténuation ne bloque pas silencieusement les utilisateurs légitimes.
Exécutez des contrôles de santé d'origine qui testent la véritable chaîne de dépendances de la route à une fréquence appropriée. Un processus répondant 200 alors que son pool de base de données est épuisé ne devrait pas recevoir de trafic supplémentaire. Inversement, ne basculez pas parce qu'une dépendance analytique facultative est lente si le parcours utilisateur reste sain.
Le basculement lui-même est une décision de capacité à chiffrer avant de déplacer le moindre trafic : le secondaire doit prouver qu'il supporte au moins la part de trafic qu'il recevra, plus une marge pour les défauts de cache et le travail de récupération. Exemple : si le paiement principal d'Acme reçoit 800 requêtes par seconde en pointe, qu'un basculement planifié doit en absorber 50 % et qu'on ajoute 30 % de marge, le secondaire doit démontrer au moins 800 × 0,5 × 1,3, soit environ 520 requêtes par seconde de capacité sûre — pools de base de données, quotas de paiement et files d'attente inclus. Un écouteur HTTP qui répond correctement sans que ces dépendances tiennent la charge n'est pas une cible de basculement valide.
Choisissez explicitement les compromis de données régionales et d'écriture
Le contenu public à dominante lecture peut souvent utiliser des données répliquées ou mises en cache. Les écritures impliquant identité, paiements, inventaire ou ordre strict nécessitent une autorité déclarée. Indiquez si un client lit depuis un réplica local, une région primaire ou une représentation en cache, et quelle obsolescence est acceptable. Chez Acme, le compte client lit et écrit toujours dans son autorité d'origine, et le statut de commande combine un modèle répliqué avec un horodatage de fraîcheur visible plutôt qu'une promesse implicite d'exactitude.
Un service applicatif actif-actif peut améliorer la disponibilité locale mais ajoute une résolution de conflits, un retard de réplication et une complexité opérationnelle. Les conceptions actif-passif simplifient l'autorité d'écriture mais peuvent augmenter le temps de basculement et concentrer la capacité. Aucune n'est universellement meilleure : choisissez selon les objectifs de récupération, le modèle de données, la capacité des opérateurs, les exigences réglementaires et le coût métier d'un comportement obsolète ou indisponible.
Si une route dépend de contraintes de résidence des données, encodez-la comme un invariant de routage surveillé. La géolocalisation IP reste un signal de diffusion, pas la preuve de la localisation légale d'une personne ni une décision de routage licite ; ne laissez jamais une règle de proximité se substituer à la règle d'autorité documentée, même temporairement pendant un incident.
Lorsqu'une requête peut être acceptée sans être terminée immédiatement, utilisez une file durable et signalez un état de réalisation distinct. L'âge de la file, la gestion des doublons et la sémantique de rejeu font alors partie de la conception de résilience mondiale. Ne transformez pas un problème de cohérence en backlog invisible.
Concevez pour la défaillance régionale et fournisseur sans fausse confiance
Une architecture multi-CDN ou multi-cloud peut réduire la dépendance à un plan de contrôle ou réseau, mais elle augmente le travail de coordination. Les règles de cache, TLS, l'authentification d'origine, la politique WAF, les journaux, métriques, contrôles d'accès et runbooks d'incident doivent être alignés. Un deuxième fournisseur nominalement configuré n'offre pas de résilience utile tant qu'il n'a pas traité de trafic représentatif proche de la production.
Utilisez des fondations portables lorsque possible : normes DNS et HTTP, pratiques TLS standard, contrats d'origine versionnés, contexte de trace OpenTelemetry, journaux conservés centralement et contrôles de configuration automatisés. Gardez les capacités de routage ou de runtime edge spécifiques à un fournisseur derrière des adaptateurs documentés. Maintenez un chemin de sortie et de récupération testé au lieu de supposer que toutes les plateformes se comportent de manière équivalente.
Exercez délibérément les modes de défaillance, avec une fenêtre de test contrôlée et une transaction non destructive plutôt qu'en désactivant des contrôles de sécurité larges. Confirmez d'abord la carte d'autorité, la version de déploiement, les certificats et la capacité prouvée du secondaire ; établissez ensuite une base de référence pour le p95, le taux d'erreur et le taux de succès du cache, par région. Ne faites échouer que le contrôle de santé du parcours ciblé, puis déplacez une part limitée du trafic — dix pour cent, par exemple — en observant une période de séjour minimale, et vérifiez explicitement que le trafic de compte et de paiement européen ne sélectionne jamais une destination américaine, et inversement. Si un tronçon du chemin utilise l'anycast, surveillez les changements de zone de couverture pendant le déplacement : un site qui annonce ou retire une route en cours de test peut ré-héberger une connexion longue vers un nœud sans état de session, et l'effet visible côté client doit rester une nouvelle tentative propre, jamais un blocage silencieux. Restaurez enfin le principal, respectez l'hystérésis de récupération et ramenez le trafic par étapes graduelles, en conservant les preuves et le journal de décision. Les recommandations SRE de Google sur les défaillances en cascade restent pertinentes ici : les nouvelles tentatives et les déplacements de trafic peuvent transformer une dépendance faible en panne plus large.
Instrumentez une vue de diffusion mondiale unique
Utilisez un identifiant stable de requête ou de trace de la périphérie à l'origine. Avec un traçage compatible OpenTelemetry, corrélez l'emplacement edge, l'état du cache, l'origine sélectionnée, le timing amont, la version de déploiement, les appels de base de données, le délai de file et le résultat de réponse. Traitez les données personnelles comme sensibles ; utilisez des étiquettes de route et région à cardinalité bornée pour les métriques.
Les tableaux de bord opérationnels doivent rendre les compromis visibles : percentiles de latence par région et route, disponibilité, taux de hit du cache, saturation de l'origine, distribution du trafic et stabilité de la zone de couverture anycast pour les connexions longues. Lors d'un incident, comparez des signaux indépendants avant de piloter le trafic : une défaillance de sonde isolée ne devrait pas automatiquement déplacer une grande part du trafic mondial, et une trace qui ne permet pas d'établir la région ni l'autorité utilisée doit être traitée comme une preuve manquante.
Liste de contrôle d'architecture edge mondiale
Avant la mise en ligne, confirmez que les parcours critiques ont des objectifs régionaux ; que le pilotage du trafic mondial combine anycast et DNS de façon délibérée, avec hystérésis ; que le cache, y compris stale-while-revalidate et stale-if-error, reste sûr sur toutes les couches ; que les origines rejettent le trafic direct et que leur capacité de secours a été chiffrée, non seulement déclarée ; que l'autorité des données est documentée sans s'appuyer sur la géolocalisation IP ; que les fenêtres de cache négatif DNS sont surveillées ; et que le basculement régional, y compris sous anycast, a été répété sous charge.
Références faisant autorité
- Google SRE Book: Addressing Cascading Failures
- Google SRE Workbook: Managing Critical State
- IETF RFC 9111: HTTP Caching
- IETF RFC 4786: Operation of Anycast Services (BCP 126)
- IETF RFC 9520: Negative Caching of DNS Resolution Failures
- Microsoft Azure Architecture Center: Deployment Stamps pattern
- Conventions sémantiques OpenTelemetry
- OWASP Application Security Verification Standard
Orchestrez une architecture edge globale sur tous vos fournisseurs
Échangez avec les experts Optimi sur le routage du trafic mondial, la résilience de l'origine et une vue MYO unique couvrant Performance, Sécurité et Visibilité pour chaque région et chaque fournisseur edge que vous exploitez.
Discuter de l'architecture edge globale