Guides

Guide d'architecture logicielle

Architecture edge compute : conception sûre, rapide et neutre vis-à-vis des fournisseurs

L'edge compute est le plus efficace lorsqu'il élimine le travail d'origine inutile sans déplacer l'état sensible, une exécution non bornée ou une responsabilité floue dans le chemin de diffusion.

L'edge compute exécute de petites unités de logique applicative près du point d'entrée de la requête. Il peut sélectionner une locale, normaliser une clé de cache, authentifier une requête signée, router le trafic, personnaliser une enveloppe publique, bloquer les abus ou composer une réponse compatible edge avant qu'une origine distante ne soit sollicitée. Cela peut améliorer la latence et réduire la charge d'origine, mais seulement si le code a des limites strictes et des frontières de correction claires.

L'objectif n'est pas de placer toute la logique applicative à la périphérie. L'objectif est d'y placer les bonnes décisions déterministes à faible latence tout en conservant l'état faisant autorité et les workflows complexes dans les systèmes conçus pour les posséder.

Placez les décisions près de l'utilisateur ; gardez l'autorité près de l'état durable

Les emplacements edge sont excellents pour la classification des requêtes, le contrôle de cache et le routage. Ils sont généralement mal adaptés aux transactions longues, à la cohérence entre enregistrements, à l'agrégation de données privées ou aux boucles de nouvelles tentatives cachées qui peuvent surcharger une origine.

Commencez par un test d'adéquation edge

Pour chaque fonction proposée, demandez-vous si elle est déterministe, bornée en usage CPU et réseau, sûre face au démarrage à froid ou aux variations régionales et capable de fonctionner avec une configuration proche plutôt qu'un état d'origine synchrone. Parmi les bons premiers candidats figurent les redirections, la normalisation d'URL canonique, les décisions de bots ou de limitation de débit, l'évaluation de feature flags à partir d'un instantané répliqué en lecture seule, la vérification d'URL signées, la normalisation de requêtes d'image et le routage de requêtes conscient du cache.

Gardez les préoccupations suivantes hors du chemin edge synchrone, sauf s'il existe un service d'état délibérément conçu : écritures en plusieurs étapes, autorisation de paiement ou d'inventaire, fan-out large, requêtes de base de données non bornées, appels tiers portant des secrets et opérations nécessitant un ordre global strict. Une fonction qui appelle l'origine à chaque requête peut rester utile pour la sécurité ou le routage, mais n'est pas un raccourci de latence.

Documentez le contrat de requête avant le déploiement : entrées autorisées à la périphérie, en-têtes mutables, clé de cache, classes de réponse, destinations en amont, délai d'expiration, limites de mémoire et CPU, comportement en cas de défaillance et données d'origine exactes susceptibles d'influencer la décision. Ces détails permettent à une conception de survivre à un changement de fournisseur.

Concevez le chemin de requête par couches

Un chemin edge sûr comporte généralement cinq étapes :

  1. Admission : appliquez TLS, les listes autorisées d'hôtes et de méthodes, les limites de corps, les contrôles d'abus de base et les ID de requête.
  2. Classification : identifiez la route, la représentation, la géographie lorsque pertinent, l'état d'authentification et l'éligibilité au cache sans faire confiance aux en-têtes usurpables.
  3. Décision : servez un hit de cache sûr, rejetez le trafic invalide, réécrivez ou routez la requête, ou appelez une API d'origine bornée.
  4. Protection de l'origine : regroupez les échecs équivalents, appliquez des limites de délai d'expiration et de concurrence de l'origine, authentifiez la connexion edge-à-origine et retirez les en-têtes de transfert non fiables.
  5. Politique de réponse : définissez des en-têtes de cache et de sécurité explicites, enregistrez l'état du cache et évitez de stocker les réponses privées dans un cache partagé.

Gardez ce flux visible dans le code et la télémétrie. Une fonction edge qui modifie silencieusement les en-têtes, la possibilité de mise en cache et le routage amont devient difficile à auditer pendant un incident.

Faites de la politique de cache une partie du contrat applicatif

Le modèle de cache HTTP de l'IETF fournit des primitives utiles, mais les valeurs doivent provenir de la sémantique produit. Définissez quelles représentations de réponse sont publiques, combien de temps elles restent fraîches, comment elles sont validées, comment l'invalidation se propage et si une réponse précédemment valide peut être servie lorsque l'origine est indisponible.

Créez une clé de cache minimale. N'incluez que les dimensions qui modifient la représentation, telles que le chemin normalisé, des paramètres de requête sélectionnés, la locale, la capacité de l'appareil lorsqu'elle modifie matériellement le contenu et une clé de variante contrôlée. Ne mettez pas en cache des réponses contenant Set-Cookie, des données de compte, des résultats de bearer token ou des décisions d'autorisation dans un espace de noms partagé, à moins que l'isolation ne soit conçue et testée rigoureusement.

Utilisez une réponse obsolète seulement pour un contenu dont le propriétaire produit accepte ce compromis. stale-while-revalidate peut réduire la latence de lecture et la pression sur l'origine ; stale-if-error peut améliorer la continuité lors d'un incident d'origine. Aucun des deux ne devrait montrer à un client un droit, un état de stock ou un résultat financier obsolète sans une décision explicite.

Empêchez l'amplification des échecs de cache. Le regroupement de requêtes, un origin shield et des contrôles de concurrence par clé peuvent garantir qu'un objet populaire non mis en cache produit une requête amont plutôt que des milliers. Les chemins de purge et de versionnage nécessitent le même soin opérationnel que les déploiements : vérifiez la portée, la propagation, le rollback et l'état du cache après un changement.

Protégez l'origine comme une frontière de sécurité distincte

Un service edge n'est pas en soi un pare-feu d'origine. Placez les origines sur des réseaux privés ou restreignez leur entrée aux chemins de diffusion connus. Authentifiez la connexion de la périphérie à l'origine avec un mécanisme qui ne peut pas être fourni par un client arbitraire et ne validez les en-têtes d'identité client qu'après la frontière du proxy de confiance.

À la périphérie, appliquez des limites de débit et de concurrence par route, une taille maximale de corps de requête, les méthodes autorisées, la validation des en-têtes et des règles WAF adaptées au modèle de menace. Les recommandations OWASP restent pertinentes : validez les entrées, utilisez une authentification et une autorisation fortes, évitez d'exposer des détails d'erreur sensibles et journalisez les événements de sécurité sans journaliser les identifiants ou données personnelles.

Traitez la configuration comme du code. Révisez les changements de routage, pare-feu, cache et fonctions edge ; utilisez des identifiants à portée limitée ; gardez un rollback d'urgence ; et enregistrez la version qui a servi chaque requête. Un déploiement mondial rapide peut aussi propager mondialement un défaut, de sorte qu'une diffusion progressive et un kill switch testé sont des contrôles de fiabilité.

Gérez honnêtement l'état, la résidence des données et la cohérence

Les services edge de clé-valeur et d'état peuvent être utiles pour la configuration, les compteurs, l'affinité et les modèles de lecture répliqués. Classez les données avant de les utiliser : sensibilité, résidence, rétention, retard de réplication, comportement d'éviction, chiffrement et contrôles d'accès sont des contraintes architecturales, et non des détails d'implémentation.

Pour l'état qui affecte l'argent, l'autorisation ou un inventaire rare, identifiez l'écrivain faisant autorité et le modèle de cohérence. Un réplica proche peut réduire la latence de lecture tout en affichant une valeur plus ancienne. Une écriture distante synchrone peut améliorer les garanties de durabilité tout en ajoutant de la latence et en couplant le succès à une autre région. Renvoyez un indicateur de version ou de fraîcheur lorsque les clients doivent comprendre cette distinction.

Évitez d'utiliser l'IP client comme identité durable ou principal de sécurité. Elle change avec les réseaux et peut être masquée par des proxys. Utilisez une identité authentifiée pour l'autorisation et les signaux réseau comme une entrée des contrôles d'abus, sous réserve d'un examen de confidentialité et de faux positifs.

Définissez des budgets stricts d'exécution et de dépendance

Chaque invocation edge nécessite une échéance plus courte que le budget de requête de bout en bout. Limitez les sous-requêtes, sauts de redirection, traitement du corps de réponse et nouvelles tentatives. Une nouvelle tentative vers une origine lente depuis des milliers d'emplacements edge peut multiplier une panne ; privilégiez peu de tentatives, de la gigue et un repli sûr pour le type de réponse.

Utilisez avec précaution les disjoncteurs ou le routage conscient de la santé. Les contrôles de santé doivent tester la capacité requise par une route, pas uniquement l'accessibilité TCP. Ajoutez une hystérésis et une fenêtre de récupération afin que le trafic ne bascule pas constamment entre les origines. Ne déplacez jamais le trafic vers une région ou un fournisseur secondaire sans avoir vérifié la capacité, la disponibilité des données, TLS, la politique de cache et les limites de débit qui s'y appliquent.

Pour le travail coûteux, renvoyez rapidement une réponse acceptée et transmettez la tâche à une file durable. Suivez la réalisation de bout en bout séparément du temps de réponse edge. Cela préserve un chemin de requête réactif sans prétendre que le travail asynchrone est instantané.

Construisez l'observabilité entre edge et origine

Propagez le contexte de trace W3C de la périphérie à l'origine et via les services en aval. OpenTelemetry offre une base neutre vis-à-vis des fournisseurs pour les traces, métriques et journaux. Capturez la route, la version de déploiement, l'emplacement edge lorsque permis, l'état du cache, la raison de décision, l'origine sélectionnée, la durée amont, la classe de réponse et le nombre de nouvelles tentatives.

Protégez les données d'observabilité. Échantillonnez les traces à fort volume, utilisez des modèles de route stables plutôt que des URL brutes, bornez la cardinalité des attributs et masquez les en-têtes d'autorisation, cookies, jetons et paramètres de requête sensibles. Reliez les journaux edge à la télémétrie de l'origine et de l'application avec des ID de trace ou de requête afin qu'une équipe puisse distinguer rapidement une défaillance edge, une tempête d'échecs de cache, un problème de routage et une régression de l'origine.

Gardez la conception portable

Une architecture edge neutre vis-à-vis des fournisseurs commence par des interfaces comportementales : en-têtes HTTP standard, enregistrements DNS et TLS, contrats portables de requête et réponse, télémétrie OpenTelemetry, configuration versionnée et journaux exportables. Isolez les liaisons spécifiques au runtime d'un fournisseur derrière un petit adaptateur au lieu de les disperser dans la logique métier.

Avant de sélectionner une plateforme, évaluez les limites d'exécution, la couverture régionale, la sémantique d'état, l'egress, l'export d'observabilité, le rollback de déploiement, le modèle de support et la connectivité d'origine par rapport au cas d'usage documenté. Conservez un plan de sortie pour le routage critique et la configuration de cache. La portabilité n'exige pas des fonctionnalités identiques ; elle exige de savoir quel comportement doit être reproduit avant qu'il ne devienne une panne.

Liste de contrôle d'architecture edge compute

Avant la mise en production, vérifiez que la fonction a un travail borné et une échéance courte ; que les clés de cache et la politique obsolète sont sûres ; que les données privées ne peuvent pas entrer dans un cache partagé ; que les origines rejettent le trafic direct ; que le routage et les nouvelles tentatives ont des replis testés ; que la propriété et la résidence de l'état sont connues ; que les changements sont déployés progressivement ; et que la télémétrie edge, origine et file partage un chemin de corrélation.

Références faisant autorité

Rendez la logique edge rapide sans la rendre fragile

Échangez avec les experts Optimi sur les frontières de l'edge compute, la sécurité du cache, les contrôles d'origine et une conception de diffusion observable.

Discuter de l'architecture edge