Scalabilité mondiale et continuité des activités : architecture actif-actif avec Azure Front Door et Cosmos DB

08 juil. 2026

Scalabilité mondiale et continuité des activités : architecture actif-actif avec Azure Front Door et Cosmos DB

A dépendência d’une seule région de nuage impose une vulnérabilité catastrophique: des désastres régionaux ou des pannes critiques dans l’infrastructure du fournisseur entraînent une inactivité totale et des pertes financières importantes. Le routage basé sur le DNS traditionnel est insuffisant pour les scénarios critiques en raison du cache agressif des résolveurs des FAI, qui conservent des routes obsolètes et bloquent le basculement immédiat. L’architecture global actif-actif, soutenue par Azure Front Door et Cosmos DB avec réplication multi-maître, résout cette fragilité systémique. En routant les requêtes via l’IP Anycast directement à la périphérie globale de Microsoft et en autorisant des écritures locales sur plusieurs continents avec une convergence éventuelle, la topologie assure une disponibilité maximale, une latence de quelques millisecondes pour l’utilisateur final et une résilience aux désastres régionaux.

Prérequis

Le déploiement de cette infrastructure exige une maîtrise des topologies de réseau global et des systèmes de persistance distribués. L’orchestration doit être codée via Terraform version 1.7.0 ou supérieure couplé au fournisseur AzureRM version 3.90.0. La couche de calcul requiert Python 3.12, la bibliothèque azure-cosmos et le SDK du azure-identity. Des privilèges administratifs de Collaborateur dans l’abonnement sont nécessaires pour configurer les routes globaux du Front Door et les politiques de réplication géographique du Cosmos DB.

Étapes

Routage global Anycast et protection de la bordure

L’établissement de l’accès global exige le remplacement de l’équilibrage de charge basé sur DNS par Azure Front Door, qui opère via le protocole Anycast. La justification technique réside dans la livraison immédiate des paquets de données. Lorsqu’un client accède à l’application, le trafic est routé vers le Point de Présence (Edge Location) le plus proche du réseau à fibre optique de Microsoft, où le protocole TCP est terminé localement (TCP termination). Cela accélère considérablement la poignée de main initiale avant que la requête ne circule sur le backbone privé d’Azure jusqu’à la région la plus proche. En cas de défaillance régionale, Front Door détecte l’indisponibilité via des sondes d’intégrité (health probes) et redirige les paquets vers la région secondaire instantanément, sans que le client ou l’appareil final ne perçoivent de rupture.

resource "azurerm_cdn_frontdoor_profile" "global_profile" {
  name                = "afd-global-active-active"
  resource_group_name = var.resource_group_name
  sku_name            = "Premium_AzureFrontDoor"
}

resource "azurerm_cdn_frontdoor_endpoint" "global_entry" {
  name                     = "global-entrypoint"
  cdn_frontdoor_profile_id = azurerm_cdn_frontdoor_profile.global_profile.id
}

resource "azurerm_cdn_frontdoor_origin_group" "app_origins" {
  name                     = "global-app-origin-group"
  cdn_frontdoor_profile_id = azurerm_cdn_frontdoor_profile.global_profile.id

  health_probe {
    path                = "/health"
    protocol            = "Https"
    interval_in_seconds = 30
  }

  load_balancing {
    sample_size                 = 4
    successful_samples_required = 3
  }
}

Comme le trafic est routé vers plusieurs continents en temps réel, comment s’assure-t-on que l’état de la base de données converge sans la pénalité de latence d’un blocage synchrone global ?

Persistance multi-maître avec Cosmos DB Global Tables

Nous avons mis en œuvre la persistance via Azure Cosmos DB configuré avec une réplication multi-maître. Contrairement aux bases traditionnelles avec un seul nœud primaire fixe, chaque région configurée agit comme un maître d’écriture. Le principe clé ici est l’autonomie locale: l’application écrit dans Cosmos DB de la région East US et, quelques millisecondes après, le service de réplication asynchrone d’Azure propage le changement vers West Europe. Pour gérer les conflits d’écriture sur des enregistrements identiques, nous activons la politique de résolution des conflits « Last Writer Wins » (LWW), basée sur des horodatages sémantiques de l’infrastructure. Cette configuration permet à l’application de continuer à fonctionner même en cas de déconnexion temporaire entre les régions, garantissant que toutes les localisations convergent vers l’état le plus récent dès que le backbone rétablit la connectivité.

Fluxogramme

resource "azurerm_cosmosdb_account" "global_db" {
  name                = "cosmos-global-active-active"
  location            = "East US"
  resource_group_name = var.resource_group_name
  offer_type          = "Standard"
  kind                = "GlobalDocumentDB"

  consistency_policy {
    consistency_level = "Session"
  }

  # Configuração multi-mestre para operações em qualquer região
  geo_location {
    location          = "East US"
    failover_priority = 0
  }

  geo_location {
    location          = "West Europe"
    failover_priority = 1
  }

  enable_multiple_write_locations = true
}

Solução de Problemas Comuns

En déployant des topologies Actives-Actives, l’anomalie la plus fréquemment signalée est le « Stale Read » (lecture obsolète). Un utilisateur écrit dans la région East US et, immédiatement, l’application front-end redirige une lecture vers West Europe avant que la réplication ne soit terminée, ce qui conduit à des données incohérentes. La solution n’est pas d’imposer une cohérence forte globale, ce qui détruirait la latence, mais d’employer la “Session Consistency” de Cosmos DB. En transmettant le jeton de session renvoyé dans la réponse de l’écriture à la lecture suivante, le SDK garantit que la région de lecture respecte le niveau de cohérence du client, assurant qu’il lit toujours les données qu’il vient d’écrire.
De plus, si Front Door présente des latences élevées, vérifiez les politiques de cache en bordure. Des configurations agressives de cache sur des routes dynamiques de transactions obligent les requêtes à des serveurs de bordure qui ne possèdent pas les données à jour, générant des invalidations répétées (Cache Misses). Assurez-vous que les politiques de routage sur Front Door pour les endpoints API POST ou PUT soient explicitement configurées pour « Disable Cache », forçant le trafic à atteindre les endpoints régionaux où la logique de validation de session transactionnelle opère.

Conclusion

La convergence entre le routage Anycast d’Azure Front Door et la persistance multi-maître de Cosmos DB établit l’apogée de la résilience dans les architectures cloud. Cette topologie protège l’activité contre les pannes géographiques et élimine la latence perçue par l’utilisateur final, en traitant la disponibilité globale comme un état standard de l’infrastructure. L’évolution de cette architecture vers des systèmes critiques doit envisager la mise en œuvre de politiques de contrôle du trafic basées sur la géo-proximité dans Front Door, affinant encore l’efficacité du routage pour les scénarios où la souveraineté des données locales est une exigence légale non négociable.

Références

Esposito, D. (2018). Architecting for scale: How to maintain high availability and manage risk in the cloud. O’Reilly Media.

Kleppmann, M. (2017). Designing data-intensive applications: The big ideas behind reliable, scalable, and maintainable systems. O’Reilly Media.

Microsoft Azure. (2024). Multi-region active-active architecture. Azure Architecture Center. https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/multi-region-active-active

Fabien Delpont

Auteur

Fabien Delpont

Fabien Delpont, développeur et créateur du site Python Doctor.