Exercice - Ajouter des vérifications d’intégrité d’application web
Contoso Shoes a besoin d’un moyen pour vérifier l’intégrité de l’application web au niveau de l’API et de ses dépendances. Vous voulez implémenter un point de terminaison de vérification d’intégrité dédié sur l’application, qui rapporte l’état d’intégrité de l’API à intervalles réguliers.
État actuel et problème
Dans la conception actuelle, l’application journalise des erreurs en cas de problèmes d’exécution dans le code de l’API ou quand les appels aux services dépendants échouent, par exemple, des requêtes de base de données. Cette approche est utile pour résoudre les problèmes une fois que l’incident s’est produit.
Toutefois, l’approche n’est pas proactive. Azure App Service et les outils de monitoring externes n’ont pas de moyen de vérifier l’état d’intégrité de l’application elle-même. Cette lacune impacte de nombreux cas d’usage, par exemple, la façon dont la charge est distribuée. L’implémentation actuelle s’appuie uniquement sur le meilleur effort du plan App Service pour distribuer le trafic uniformément entre les instances sans jamais vérifier l’intégrité de l’application. Lors d’un incident rapporté, le trafic a été routé vers des instances App Service non saines entraînant l’échec des demandes.
Spécification
Votre tâche consiste à générer le service d’intégrité dédié sous forme d’extension du code déjà déployé.
Introduire une API de vérification d’intégrité dans votre application. L’API doit vérifier l’état d’intégrité de l’application et ses dépendances, et retourner une indication d’état. Par exemple, l’API doit vérifier régulièrement les opérations de lecture et d’écriture dans Azure Cosmos DB. Implémentez ces fonctions sous forme de sondes distinctes pour que les lectures et les écritures soient vérifiées indépendamment.
Conseil
Étendez la vérification d’intégrité aux services non fonctionnels, comme Azure Key Vault et Azure Container Registry. Cette étape est importante, car si ces services sont en panne, cela peut impacter la capacité à effectuer un scale-out ou à supporter le redémarrage d’une instance App Service.
Le point de terminaison de l’API de vérification d’intégrité doit être appelé fréquemment, par plusieurs sources, et ne doit pas dégrader les performances de l’API. Par exemple, le plan Azure App Service doit envoyer des demandes à un point de terminaison deux fois par minute et choisir en conséquence les instances App Service auxquelles distribuer le trafic.
Optimisez les performances de l’API de vérification d’intégrité en mettant en cache les résultats dans la mémoire pendant 10 secondes. Les requêtes envoyées au point de terminaison de vérification d’intégrité ne doivent pas toutes forcément entraîner un appel de back-end. Certaines de ces réponses peuvent être servies à partir du cache.
Mettez les données de vérification d’intégrité à disposition dans Azure Monitor pour les analyses futures.
Approche recommandée
Pour commencer votre conception, nous vous recommandons cette approche :
1–Vérifications d’intégrité
Toutes les requêtes envoyées par l’API de vérification d’intégrité doivent être effectuées de manière asynchrone et en parallèle. Concevez des vérifications d’intégrité sur les composants critiques comme la base de données. L’API doit vérifier régulièrement les opérations de lecture et d’écriture. Implémentez ces fonctions sous forme de sondes distinctes pour que les lectures et les écritures soient vérifiées indépendamment.
Utilisez des demandes qui imitent le comportement réel de l’application sans mettre trop de charge sur les services, seulement à partir des sondes d’intégrité. Pour tester aussi les demandes d’écriture, vous devez concevoir un moyen de supprimer efficacement les données de test pour qu’elles ne soient pas mêlées aux données utilisateur réelles.
2–Modèle de mise en cache
Pour éviter de surcharger les services en aval avec des vérifications d’intégrité, l’API de vérification d’intégrité doit mettre en cache les résultats pendant un nombre configurable de secondes. Réfléchissez aux moyens d’atteindre cet objectif.
Vérifier votre travail
Voici un exemple : Service de contrôle d’intégrité d’application. Avez-vous pris en compte tous les aspects de votre conception ?
- Le point de terminaison de vérification d’intégrité est-il compatible avec la fonctionnalité de vérification d’intégrité du service Azure App ?
- Avez-vous ajouté des vérifications pour les dépendances d’exécution ? Qu’avez-vous utilisé comme proxy/test ?
- Lecture/écriture Cosmos DB
- API tierce
- Avez-vous mis en cache les résultats de la vérification d’intégrité pour réduire la surcharge des performances ?
- Avez-vous journalisé des événements dans vos vérifications d’intégrité ? Avez-vous noté les réussites et les échecs ?
- Avez-vous appliqué l’échantillonnage de journal Azure Application Insights aux journaux de vérification d’intégrité ?