Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article présente une solution de haute disponibilité pour une application web qui gère de grands volumes de données qui doivent être accessibles dans un délai spécifique. La solution utilise Azure Cosmos DB comme magasin de données principal et utilise le flux de modification Azure Cosmos DB pour répliquer des données vers un stockage secondaire à faible coût. Après la période spécifiée, la solution utilise Azure Functions pour supprimer les données de Azure Cosmos DB. Les données du stockage secondaire restent disponibles plus longtemps pour l’audit et l’analyse par d’autres solutions. La solution réplique les données vers différents services de données, ce qui offre une durabilité élevée.
Architecture
Téléchargez un fichier Visio de cette architecture.
Flux de données
Le flux de données suivant correspond au diagramme précédent :
Le client s’authentifie à l’aide de Microsoft Entra ID et reçoit l’accès aux applications web hébergées sur Azure App Service.
Azure Front Door, qui est un pare-feu et un équilibreur de charge de couche 7, bascule le trafic utilisateur vers la région de secours en cas de panne régionale.
App Service héberge des sites web et des API web RESTful. Les clients du navigateur exécutent des applications JavaScript et XML asynchrones qui utilisent les API.
Les API web délèguent la responsabilité au code hébergé par Functions pour gérer les tâches en arrière-plan. Les tâches sont mises en file d’attente dans les files d’attente de stockage Azure.
Les messages mis en file d’attente déclenchent les fonctions, qui exécutent les tâches en arrière-plan.
Azure Managed Redis met en cache les données de base de données pour les fonctions. La solution décharge les lectures de base de données pour modifier lentement les données et accélère les applications de fonction et les applications web à l’aide du cache.
Azure Cosmos DB contient les données générées récemment.
Azure Cosmos DB émet un flux de modification qui peut être utilisé pour répliquer les modifications.
Une application fonction lit le flux de modifications et réplique les modifications dans les tables Azure Table Storage. Une autre application de fonction supprime périodiquement les données expirées d’Azure Cosmos DB.
Azure Table Storage offre un stockage à faible coût.
Composants
Microsoft Entra ID est un service de gestion des identités et des accès qui peut se synchroniser avec un annuaire local. Dans cette architecture, elle authentifie les utilisateurs et accorde l’accès aux applications web hébergées sur App Service.
Azure Front Door est un réseau de distribution de contenu sécurisé et un équilibreur de charge. Dans cette architecture, elle accélère la distribution de contenu, offre des fonctionnalités de basculement et protège les applications contre les cybermenaces.
App Service est un service entièrement géré que les développeurs utilisent pour créer, déployer, héberger et mettre à l’échelle des applications web. Vous pouvez créer des applications à l’aide de .NET, Node.js, Java, Python ou PHP. Les applications peuvent s’exécuter dans des conteneurs ou sur Windows ou Linux. Dans cette architecture, App Service héberge l’interface web et les API REST de l’application. Pour plus d’informations sur les API web, consultez la conception de l’API web RESTful.
Functions fournit un environnement pour exécuter de petits éléments de code, appelés fonctions, sans avoir à établir une infrastructure d’application. Vous pouvez vous en servir pour traiter des données en bloc, intégrer des systèmes, utiliser des appareils IoT (Internet des objets) et créer des API et des microservices simples. Vous pouvez utiliser des microservices pour créer des serveurs qui se connectent à Azure services et restent toujours à jour. Dans cette architecture, Functions exécute des tâches en arrière-plan telles que la réplication des données et la suppression d’enregistrement expirée.
Stockage Azure est un ensemble de services cloud évolutifs et sécurisés pour les données, les applications et les charges de travail. Dans cette architecture, Stockage fournit le Stockage File d’attente pour la messagerie entre tâches et le Stockage Table pour le stockage de données répliquées à faible coût.
Queue Storage propose un service de file d'attente de messages simple, économique et durable pour les charges de travail volumineuses. Cette architecture utilise le stockage de messages en file d'attente pour la messagerie des tâches.
Table Storage est un magasin NoSQL de paires clé-valeur qui facilite le développement rapide en exploitant des jeux de données massifs semi-structurés. Les tables sont sans schéma et s’adaptent en fonction des besoins. L’accès est rapide et économique pour de nombreuses applications. Cette architecture utilise le Stockage Table pour stocker une copie synchronisée et restructurée des données dans Azure Cosmos DB.
Azure Managed Redis est un service de mise en cache en mémoire entièrement managé et un répartiteur de messages pour le partage de données et d’état entre les ressources de calcul. Pour améliorer les performances des applications de traitement des transactions en ligne à haut débit, concevez-les à l’échelle à l’aide d’un magasin de données en mémoire, tel que Azure Redis managé. Dans cette architecture, Azure Redis managé accélère l’accès aux données fréquemment utilisées, ce qui améliore les performances des applications de fonction et des applications web.
Azure Cosmos DB est une base de données multimodel distribuée mondialement qui alimente vos solutions pour mettre à l’échelle de manière élastique et indépendante le débit et le stockage dans n’importe quel nombre de régions géographiques. Il fournit des garanties de débit, de latence, de disponibilité et de cohérence avec des contrats de niveau de service complets. Dans cette architecture, Azure Cosmos DB stocke les données récentes et émet un flux de modification que vous pouvez utiliser pour répliquer les mises à jour vers le stockage table.
Autres solutions
Azure Traffic Manager dirige les requêtes DNS entrantes sur les régions Azure globales en fonction de votre choix de méthodes de routage du trafic. Il fournit également le basculement automatique et le routage des performances.
Azure Container Apps est un service de conteneur serverless entièrement managé que les développeurs utilisent pour créer et déployer des applications modernes à grande échelle.
Azure Kubernetes Service (AKS) est un service Kubernetes entièrement managé pour le déploiement et la gestion des applications en conteneur. Vous pouvez l’utiliser pour implémenter une architecture de microservices avec des composants qui sont mis à l’échelle indépendamment et à la demande.
Azure Container Instances exécute des tâches sans nécessiter de gestion de l’infrastructure. Il est utile pendant le développement et d’exécuter des tâches non planifiées.
Azure Service Bus est un service de messagerie cloud fiable pour une intégration hybride simple. Il peut être utilisé à la place du Stockage en File d'attente dans cette architecture. Pour plus d’informations, consultez Files d’attente de stockage et files d’attente Service Bus - comparaison et différences.
Détails du scénario
Cette solution stocke de grands volumes de données d’application web dans Azure Cosmos DB. Les applications web qui gèrent de grandes quantités de données utilisent Azure Cosmos DB pour mettre à l’échelle de manière élastique et indépendante le débit et le stockage.
Lorsque des modifications sont apportées à la base de données, le flux de modification Azure Cosmos DB est envoyé à un déclencheur Functions piloté par les événements. Une fonction est ensuite exécutée pour répliquer les modifications apportées aux tables de stockage de table, offrant ainsi une solution de stockage à faible coût. Vous pouvez également orchestrer un déplacement de données en aval plus large à l’aide de pipelines Azure Data Factory ou de Fabric Data Factory pour atterrir des données dans des zones d’analytique.
L’application web a besoin des données pour une durée limitée. Cette solution exécute et supprime régulièrement les données expirées de Azure Cosmos DB, ce qui réduit les coûts. Vous pouvez déclencher des fonctions à la demande ou les planifier pour qu’elles s’exécutent à des moments spécifiques.
Cas d’usage potentiels
Cette solution est appropriée pour toute application qui :
- utilise une quantité massive de données ;
- Nécessite que les données soient disponibles dans un délai spécifique.
- utilise des données qui expirent.
Il s’agit par exemple d’applications qui permettent de :
Personnaliser l’expérience client et favoriser l’engagement à l’aide de flux de données et de capteurs en direct dans des emplacements physiques.
Suivre les habitudes de dépense client et le comportement d’achat.
Suivez les flottes de véhicules et améliorez l’efficacité et la sécurité à l’aide des données de localisation, de performances et de comportement des conducteurs.
Prévisions météorologiques.
Surveillez et gérez les systèmes de trafic.
analysent les données IoT de fabrication ;
Surveillez les données du compteur intelligent.
Considérations
Ces considérations implémentent les piliers d’Azure Well-Architected Framework, un ensemble de principes directeurs que vous pouvez utiliser pour améliorer la qualité d’une charge de travail. Pour plus d’informations, consultez Well-Architected Framework.
Reliability
La fiabilité permet de s’assurer que votre application peut respecter les engagements que vous prenez à vos clients. Pour plus d'informations, veuillez consulter la liste de vérification de la conception pour la fiabilité.
Le flux de modifications d’Azure Cosmos DB garantit une livraison au moins une fois. Concevez votre fonction de réplication pour qu’elle soit idempotente afin que les événements en double ne génèrent pas de données incohérentes dans le Stockage Table.
Azure Front Door offre un basculement régional automatique. Si la région primaire devient indisponible, le trafic est acheminé vers la région de secours sans intervention manuelle.
Optimisation des coûts
L’optimisation des coûts se concentre sur les moyens de réduire les dépenses inutiles et d’améliorer l’efficacité opérationnelle. Pour plus d’informations, consultez la liste de vérification de conception pour l’optimisation des coûts.
Le principal avantage des coûts provient du déplacement des données expirées de Azure Cosmos DB, qui est facturée par unité de requête (RU), dans le stockage table, qui est facturé par transaction et par Go stocké. Ce processus est moins cher pour les données rarement sollicitées.
Si votre charge de travail a des exigences de débit prévisibles, envisagez capacité réservée pour Azure Cosmos DB.
Utilisez le flux de modification pour la réplication. Cette méthode réduit la maintenance du code par rapport à la réplication dans l’application principale.
Cette solution entraîne des coûts supplémentaires pour le stockage secondaire et pour les fonctions qui gèrent la réplication et l’expiration des données.
Excellence opérationnelle
L’excellence opérationnelle couvre les processus opérationnels qui déploient une application et la maintiennent en production. Pour plus d’informations, consultez Liste de vérification de la conception pour l'excellence opérationnelle.
Vous devez migrer les données existantes. Le processus de migration nécessite des scripts ou des routines ad hoc pour copier les anciennes données dans des comptes de stockage. Lorsque vous migrez les données, utilisez des horodatages et des indicateurs de copie pour suivre la progression de la migration.
Ignorez les flux de suppression générés par vos fonctions lorsqu’elles suppriment des entrées de Azure Cosmos DB. Cette approche empêche la suppression d’entrées du stockage secondaire de table Azure.
Efficacité des performances
L’efficacité des performances fait référence à la capacité de votre charge de travail à mettre à l’échelle pour répondre efficacement aux demandes des utilisateurs. Pour en savoir plus, consultez Liste de vérification de l'examen de la conception pour l'efficacité des performances
La latence de traitement des flux de modification affecte la rapidité de disponibilité des données dans le stockage table. Pour répondre à vos exigences de latence, mettez à l’échelle le plan d’application de fonction et les paramètres de traitement par lots.
Pour éviter les partitions chaudes, choisissez une clé de partition Azure Cosmos DB qui distribue le débit d’écriture uniformément entre les partitions logiques.
Azure Managed Redis réduit la pression de lecture sur les Azure Cosmos DB pour les données à variation lente, ce qui réduit la latence et la consommation de RU.
Contributeurs
Microsoft conserve cet article. Les contributeurs suivants ont écrit cet article.
Auteur principal :
- Nabil Siddiqui | Architecte de solution cloud - Innovation numérique et applicative
Autre contributeur :
- Filipe Moreira | Architecture de solution cloud
Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.
Étapes suivantes
- documentation sur Azure Front Door et le réseau de distribution de contenu cloud
- Utiliser Azure Cosmos DB
- Choisir l’API appropriée pour Azure Cosmos DB
- Develop solutions à l’aide de Azure Cosmos DB
- Migrate de grands volumes de données dans Azure Cosmos DB
- Comment modéliser et partitionner des données à l’aide d’un exemple réel
- Modèles de conception des flux de modification dans Azure Cosmos DB
- Créez une architecture événementielle sans serveur à l’aide d’Azure Cosmos DB et d’Azure Functions
- Qu’est-ce que Fabric Data Factory ?
- Orchestrez le déplacement et la transformation des données à l’aide d’Azure Data Factory
- Documentation de Fabric Data Factory