Partager via


Stratégies d’architecture pour l’optimisation continue des performances

S’applique à cette recommandation de liste de contrôle d’efficacité des performances d’Azure Well-Architected Framework :

PE :12 Optimisez en continu les performances. Concentrez-vous sur les composants qui montrent une détérioration des performances au fil du temps, comme les bases de données et les fonctionnalités réseau.

Ce guide décrit les recommandations relatives à l’optimisation continue des performances. L’optimisation continue des performances est le processus de surveillance constante, d’analyse et d’amélioration de l’efficacité des performances. L’efficacité des performances s’adapte aux augmentations et aux diminutions de la demande. L’optimisation des performances doit être une activité continue tout au long de la durée de vie de la charge de travail. Les performances de la charge de travail se dégradent souvent ou deviennent excessives au fil du temps, et les facteurs à prendre en compte incluent des changements dans les modèles d’utilisation, la demande, les fonctionnalités et la dette technique.

Définitions

Terme Definition
Hiérarchisation des données Stratégie de stockage qui implique la catégorisation des données en fonction de sa fréquence d’accès et son stockage sur les niveaux de stockage en conséquence.
Dette technique Les inefficacités accumulées, les choix de conception non optimaux ou les raccourcis intentionnellement pris pendant le processus de développement pour fournir du code plus rapidement.
Durée de vie Mécanisme qui définit une heure d’expiration pour les données.

L’efficacité des performances est lorsque la capacité de charge de travail s’aligne sur l’utilisation réelle. Une charge de travail qui surperforme est aussi problématique qu’une charge de travail sous-performante. Les compromis diffèrent. La surperformance affecte l’optimisation des coûts. Les performances médiocres affectent les utilisateurs. La clé de l’efficacité des performances est la surveillance, l’ajustement et le test au fil du temps. Vous devez régulièrement passer en revue les métriques de performances et apporter des ajustements si nécessaire pour vous assurer que la charge de travail est efficace. Le test de toutes les modifications avant et après l’implémentation est nécessaire pour atteindre des cibles de performances.

Développer une culture des performances

Une culture des performances est un environnement dans lequel l’amélioration continue est attendue et l’équipe apprend de la production. L’optimisation des performances nécessite des compétences spécialisées. Les équipes de charge de travail ont besoin des compétences et de l’état d’esprit appropriés pour optimiser leurs performances afin de répondre aux augmentations et aux diminutions de la demande. Vous devez également allouer leur temps pour prendre en charge la surveillance et la correction requises des problèmes de performances au fur et à mesure qu’ils se produisent. Ces équipes ont besoin d’attentes claires. Par exemple, les cibles de performances, les lignes de base et les seuils d’écart (jusqu’à quel point la base de référence est acceptable) doivent être très visibles et socialisées.

Compromis : Les optimisations continues des performances nécessitent une équipe disposant des compétences et du temps nécessaires pour trouver et résoudre les problèmes de performances. Le fait de dédier le personnel aux performances ajoute un coût opérationnel. Si vous disposez de ressources de personnel limitées, l’optimisation continue des performances peut prendre du temps à partir d’autres tâches opérationnelles.

Évaluer les nouvelles fonctionnalités de la plateforme

L’évaluation de nouvelles fonctionnalités de plateforme implique d’examiner les nouvelles fonctionnalités et outils d’une plateforme qui peuvent améliorer l’efficacité des performances, telles que les solutions de stockage optimisées, les mécanismes de mise en cache ou les outils de gestion des ressources. De nouvelles fonctionnalités de plateforme peuvent ouvrir des avenues pour améliorer l’efficacité des performances. Conservez votre plateforme et vos outils up-to-date pour vous assurer que vous utilisez les dernières innovations et meilleures pratiques. Surveillez constamment les commentaires et les métriques de performances de ces nouveaux ajouts pour affiner votre approche.

Hiérarchiser les efforts d’optimisation

L’optimisation proactive des performances signifie prendre des mesures proactives pour améliorer et améliorer les performances de la charge de travail avant tout problème de performances. L’utilisation de mesures proactives implique l’identification des goulots d’étranglement potentiels, la surveillance des métriques de performances et l’implémentation d’optimisations pour garantir que la charge de travail fonctionne efficacement et répond aux objectifs de performances souhaités. En fonction de l’analyse des composants détériorants, des flux critiques et de la dette technique, vous pouvez implémenter des optimisations des performances spécifiques à chaque domaine. Les améliorations peuvent impliquer des modifications de code, des ajustements d’infrastructure ou des mises à jour de configuration.

Hiérarchiser les composants détériorants

Une charge de travail comporte souvent des composants tels que des bases de données et des composants réseau susceptibles de dégrader les performances au fil du temps. À mesure que la charge de travail évolue et que les modèles d’utilisation changent, ces modifications affectent souvent les performances des composants individuels dans la charge de travail. L’augmentation des données dans les bases de données peut entraîner des temps d’exécution de requêtes plus longs et une récupération de données plus lente. Les modifications apportées aux modèles d’utilisation peuvent entraîner une conception de requête non optimale. Les requêtes qui étaient une fois efficaces peuvent devenir inefficaces à mesure que la charge de travail évolue. Les requêtes inefficaces peuvent consommer des ressources excessives et dégrader les performances de la base de données. Une utilisation accrue de la charge de travail peut entraîner un trafic réseau plus élevé, provoquant des problèmes de congestion et de latence.

Il est important de faire des efforts continus pour optimiser les performances de ces composants. Identifiez et résolvez de manière proactive les problèmes de performances dans votre charge de travail. En hiérarchisant les composants connus, vous pouvez résoudre de manière proactive les problèmes de performances potentiels et garantir le bon fonctionnement de votre charge de travail. Il peut s’agir d’implémenter des techniques de réglage des performances, d’optimiser l’allocation de ressources ou de mettre à niveau des composants matériels ou logiciels en fonction des besoins.

Hiérarchiser les flux critiques

Les flux critiques sont les processus ou flux de travail les plus importants et les plus prioritaires dans la charge de travail. En hiérarchisant ces flux critiques, vous vous assurez que les parties les plus essentielles de la charge de travail sont optimisées pour les performances. Le fait de savoir quels flux sont essentiels permet de hiérarchiser les efforts d’optimisation. L’optimisation de l’efficacité des performances des domaines les plus importants de votre application offre le retour sur investissement le plus élevé. Vous devez surveiller les flux critiques et les pages les plus populaires. Recherchez des moyens de les rendre plus efficaces.

Automatiser l’optimisation des performances

L’automatisation peut éliminer les processus manuels répétitifs et fastidieux, ce qui leur permet d’être exécutés efficacement. L’automatisation réduit les risques d’erreur humaine et garantit la cohérence dans l’exécution des tâches d’optimisation. En automatisant ces tâches, vous pouvez également libérer des personnes pour vous concentrer sur des activités et des activités plus complexes qui ajoutent de la valeur. Vous pouvez appliquer l’automatisation à différentes tâches, telles que les tests de performances, le déploiement et la surveillance :

  • Tests de performances automatisés : utilisez des outils de test de performances automatisés tels que JMeter, K6 ou Selenium pour simuler différentes charges de travail et scénarios.

  • Déploiement automatisé : implémentez des processus de déploiement automatisés pour garantir des déploiements cohérents et sans erreur. Utilisez les outils CI/CD pour automatiser le processus de déploiement. Ces outils peuvent vous aider à identifier les goulots d’étranglement des performances à mesure que vous les utilisez pour effectuer des tests sur des points de terminaison, vérifier les états HTTP, et même valider la qualité et les variations des données.

  • Surveillance et alertes : configurez des systèmes de surveillance et d’alerte automatisés pour surveiller en permanence les métriques de performances et détecter les écarts ou anomalies. Lorsque des problèmes de performances sont détectés, des alertes automatisées peuvent être déclenchées pour avertir les équipes ou les individus appropriés.

  • Gestion des incidents : implémentez un système de gestion des incidents automatisé qui peut recevoir des alertes, créer des tickets et affecter des tickets aux équipes appropriées pour la résolution. Ces étapes permettent de s’assurer que les problèmes de performances sont rapidement résolus et affectés aux ressources appropriées.

  • Diagnostics automatisés : développez des outils ou des scripts de diagnostic automatisés qui peuvent analyser les données de performances et identifier les causes racines des problèmes de performances. Ces outils peuvent aider à identifier des zones ou composants spécifiques du système qui provoquent des problèmes de performances.

  • Actions de correction automatisées : définissez et implémentez des actions de correction automatisées qui peuvent être déclenchées lorsque des problèmes de performances spécifiques sont détectés. Ces actions peuvent inclure le redémarrage des services, l’ajustement de l’allocation des ressources, l’effacement des caches ou l’implémentation d’autres techniques d’optimisation des performances.

  • Systèmes de réparation automatique : créez des fonctionnalités de réparation automatique dans votre système en automatisant le processus de récupération pour les problèmes de performances connus. Cette fonctionnalité peut impliquer la correction ou l’ajustement automatique de la configuration du système pour restaurer des performances optimales.

Résoudre la dette technique

La dette technique fait référence aux inefficacités accumulées, aux choix de conception non optimaux ou aux raccourcis pris pendant le processus de développement qui peuvent affecter les performances. La dette technique, le code peu clair et les implémentations trop complexes peuvent rendre l’efficacité des performances plus difficile à atteindre. La résolution de la dette technique implique l’identification et la résolution de ces problèmes afin d’améliorer les performances globales et la facilité de maintenance de la charge de travail. Ce travail peut inclure la refactorisation du code, l’optimisation des requêtes de base de données, l’amélioration de la conception architecturale ou l’implémentation des meilleures pratiques. Peut-être avez-vous introduit une dette technique pour respecter une échéance, mais vous devez résoudre la dette technique lorsque vous optimisez l’efficacité des performances au fil du temps.

Optimiser les bases de données

L’optimisation continue des bases de données implique l’identification et l’implémentation d’optimisations pour garantir que les bases de données peuvent gérer les charges, fournir des temps de réponse rapides et réduire l’utilisation des ressources. En optimisant régulièrement les bases de données, vous pouvez améliorer les performances des applications, réduire les temps d’arrêt et améliorer l’expérience utilisateur globale.

  • Optimiser les requêtes de base de données : les instructions SQL mal écrites peuvent dégrader les performances de la base de données. Les conditions JOIN inefficaces peuvent entraîner le traitement des données inutiles. Les sous-requêtes complexes, les requêtes imbriquées et les fonctions excessives peuvent réduire la vitesse d’exécution. Les requêtes qui récupèrent trop de données doivent être réécrites. Vous devez identifier vos requêtes de base de données les plus courantes ou critiques et les optimiser. L’optimisation permet de garantir des requêtes plus rapides.

  • Gérer les index : évaluez votre stratégie d’indexation pour vous assurer que les index sont correctement conçus et gérés. La maintenance des index inclut l’identification des index inutilisés ou redondants et la création d’index qui s’alignent sur les modèles de requête. Les index de base de données permettent d’accélérer les opérations de récupération des données. Pour les bases de données relationnelles, vous devez surveiller la fragmentation des index. Vous devez régénérer ou réorganiser régulièrement des index. Pour les bases de données non relationnelles, vous devez choisir la stratégie d’indexation appropriée pour votre charge de travail. Utilisez le réglage automatique sur les bases de données où elles sont disponibles. Ces fonctionnalités incluent la création automatique d’index manquants, la suppression d’index inutilisés et la correction de plan. Pour plus d’informations, consultez Maintenance des index pour améliorer les performances.

  • Passer en revue la conception du modèle : passez en revue le modèle de données pour vous assurer de l’optimiser pour les exigences spécifiques de l’application. L’amélioration des performances des requêtes et de la récupération des données peut impliquer la dénormalisation, le partitionnement ou d’autres techniques.

  • Optimiser la configuration de la base de données : optimisez les paramètres de configuration de la base de données tels que l’allocation de mémoire, les E/S de disque et les paramètres d’accès concurrentiel pour optimiser les performances et l’utilisation des ressources.

Optimiser l’efficacité des données

L’optimisation de l’efficacité des données consiste à s’assurer que les données sont stockées, traitées et accessibles de la manière la plus efficace possible. La hiérarchisation des données et l’utilisation de la durée de vie (TTL) sont des techniques qui peuvent être utilisées pour optimiser l’efficacité des données. Vous pouvez appliquer ces techniques dans différents scénarios de stockage de données, tels que les bases de données, les systèmes de fichiers ou le stockage d’objets.

  • Utiliser la hiérarchisation des données : la hiérarchisation des données implique la catégorisation des données en fonction de son importance ou de sa fréquence d’accès et de stockage de données dans différents niveaux en conséquence. La configuration de la hiérarchisation des données permet une utilisation plus efficace des ressources de stockage et améliore les performances. Les données fréquemment sollicitées ou critiques peuvent être stockées dans des niveaux hautes performances, tandis que les données moins fréquemment sollicitées ou moins critiques peuvent être stockées dans des niveaux moins coûteux. L’objectif est de passer en revue l’utilisation des données au fil du temps pour vous assurer que les données se situent dans le niveau approprié. À mesure que les priorités des données changent, les données doivent passer d’un niveau à un autre.

  • Implémenter le temps de vie : le temps de vie est un mécanisme qui définit une heure d’expiration pour les données. La durée de vie permet aux données d’être automatiquement supprimées ou archivées après une certaine période, ce qui réduit les exigences de stockage et améliore la gestion des données. En définissant un délai de vie approprié, vous autorisez les données inutiles à supprimer, libérer de l’espace de stockage et améliorer l’efficacité globale. Les données de session, les fichiers temporaires et les données de cache sont des cibles fréquentes pour la durée de vie. Les entrées de base de données peuvent également avoir un délai de vie.

Risque : un délai de vie trop court peut créer des problèmes de performances.

Facilitation Azure

Automatisation de l’optimisation des performances : Azure Advisor fournit des recommandations de performances automatiques basées sur les données de télémétrie de charge de travail. Vous devez examiner et traiter ces recommandations régulièrement. Azure Monitor fournit des insights en temps réel sur les performances de votre système et vous permet de configurer des alertes basées sur des métriques de performances spécifiques. Azure Log Analytics fournit des diagnostics et une analyse automatisés sur les journaux et les métriques collectés. Les outils comme Azure Application Insights fournissent des insights et des recommandations pour optimiser les performances.

Pour automatiser la correction, utilisez des outils d’automatisation ou des scripts pour exécuter automatiquement des actions de correction lorsque les alertes sont déclenchées. Vous pouvez utiliser Azure Automation, Azure Functions ou des solutions d’automatisation personnalisées.

Azure permet aux tests de performances de simuler différents scénarios utilisateur et charges de travail. Les tests automatisés peuvent vous aider à identifier les goulots d’étranglement des performances et à optimiser votre système en conséquence. Les outils comme Azure DevOps peuvent automatiser les tests de performances.

Optimisation des bases de données : la famille SQL de produits a de nombreuses fonctionnalités intégrées qui vous permettent de surveiller et de corriger les performances de la base de données SQL. Vous devez utiliser ces fonctionnalités pour maintenir les performances de la base de données. Azure SQL Database dispose d’une fonctionnalité de réglage automatique qui surveille et améliore continuellement les requêtes. Vous devez utiliser cette fonctionnalité pour améliorer automatiquement les requêtes SQL.

Vous pouvez personnaliser vos stratégies d’indexation à l’aide des fonctionnalités d’Azure Cosmos DB. Personnalisez les stratégies pour répondre aux besoins de performances de votre charge de travail.

Optimisation de l’efficacité des données : la hiérarchisation des données vous permet de stocker des données dans différents niveaux en fonction de sa fréquence d’accès et de son importance. Il permet d’optimiser les coûts de stockage et les performances. Azure fournit différents niveaux de stockage, tels que les niveaux chaud, froid et archive pour les données d’objet blob. Les niveaux chauds sont optimisés pour les données fréquemment sollicitées, les niveaux froids sont destinés aux données rarement sollicitées et les niveaux d’archivage sont destinés aux données rarement sollicitées. En utilisant le niveau d’accès de stockage le mieux adapté à vos données, vous pouvez garantir un stockage et une récupération de données efficaces.

Liste de contrôle d’efficacité des performances

Reportez-vous à l’ensemble complet de recommandations.