Recommandations 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 permanence les performances. Concentrez-vous sur les composants qui montrent une détérioration des performances au fil du temps, tels que les bases de données et les fonctionnalités réseau.

Ce guide décrit les recommandations pour l’optimisation continue des performances. L’optimisation continue des performances est le processus de surveillance, d’analyse et d’amélioration des performances en permanence. L’efficacité des performances s’adapte à l’augmentation et à la diminution 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 des charges de travail se dégradent souvent ou deviennent excessives au fil du temps, et les facteurs à prendre en compte incluent les modifications des modèles d’utilisation, de la demande, des fonctionnalités et de la dette technique.

Définitions

Terme Définition
Hiérarchisation des données Stratégie de stockage qui implique de catégoriser les données en fonction de leur fréquence d’accès et de les stocker sur les niveaux de stockage en conséquence.
Dette technique Les inefficacités accumulées, les choix de conception non optimaux ou les raccourcis pris intentionnellement 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.

Stratégies de conception

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 qui est sous-performante. Les compromis diffèrent. La surperformance affecte l’optimisation des coûts. Des 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 examiner régulièrement les métriques de performances et apporter les ajustements nécessaires 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 les objectifs de performances.

Développer une culture de performance

Une culture de performance est un environnement dans lequel l’amélioration continue est attendue et où 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 à mesure qu’ils se produisent. Ces équipes ont besoin d’attentes claires. Par exemple, les objectifs de performance, les bases de référence et les seuils d’écart (à quel point la ligne de référence est acceptable) doivent être très visibles et socialisés.

Compromis : L’optimisation continue des performances nécessite une équipe qui dispose des compétences et du temps appropriés pour trouver et résoudre les problèmes de performances. La dédicication du personnel aux performances ajoute un coût opérationnel. Si vous avez des ressources de personnel limitées, l’optimisation continue des performances peut prendre du temps loin d’autres tâches opérationnelles.

Évaluer les nouvelles fonctionnalités de la plateforme

L’évaluation des 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, comme les solutions de stockage optimisées, les mécanismes de mise en cache ou les outils de gestion des ressources. Les nouvelles fonctionnalités de la plateforme peuvent ouvrir des voies pour améliorer l’efficacité des performances. Gardez votre plateforme et vos outils à jour pour vous assurer que vous utilisez les dernières innovations et meilleures pratiques. Surveillez en permanence 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 que des problèmes de performances ne surviennent. 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 de la détérioration des composants, 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 du code, des ajustements d’infrastructure ou des mises à jour de configuration.

Hiérarchiser les composants qui se dégradent

Une charge de travail comporte souvent des composants tels que des bases de données et des composants réseau qui sont sujets à des dégradations des 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 de la charge de travail. L’augmentation des données dans les bases de données peut entraîner des temps d’exécution des requêtes plus longs et ralentir la récupération des données. Les modifications apportées aux modèles d’utilisation peuvent entraîner une conception de requête non optimale. Les requêtes qui étaient autrefois 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é, ce qui entraîne des problèmes de congestion et de latence.

Il est important de déployer 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 qui se dégradent, vous pouvez résoudre de manière proactive les problèmes de performances potentiels et garantir le bon fonctionnement de votre charge de travail. Cela peut impliquer l’implémentation de techniques d’optimisation des performances, l’optimisation de l’allocation des ressources ou la mise à niveau de composants matériels ou logiciels selon les besoins.

Hiérarchiser les flux critiques

Les flux critiques sont les processus ou workflows les plus importants et les plus prioritaires de 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. Savoir quels flux sont critiques 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 chronophages, ce qui leur permet d’être exécutés efficacement. L’automatisation réduit les risques d’erreur humaine et garantit la cohérence de l’exécution des tâches d’optimisation. En automatisant ces tâches, vous pouvez également permettre aux utilisateurs de se concentrer sur des activités plus complexes et des activités qui ajoutent de la valeur. Vous pouvez appliquer l’automatisation à diverses tâches, telles que les tests de performances, le déploiement et la supervision :

  • Tests de performances automatisés : utilisez des outils de test de performances automatisés comme 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 lorsque vous les utilisez pour effectuer des tests sur des points de terminaison, case activée des états HTTP et même valider la qualité et les variations des données.

  • Surveillance et alerte : configurez des systèmes de supervision 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 notifier les équipes ou les individus appropriés.

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

  • Diagnostics automatisé : développez des outils ou des scripts de diagnostic automatisés capables d’analyser les données de performances et d’identifier les causes premières des problèmes de performances. Ces outils peuvent aider à identifier des zones ou des composants spécifiques du système qui sont à l’origine de 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 autoréparants : créez des fonctionnalités d’auto-réparation 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 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 d’identifier et de résoudre 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. Vous avez peut-être introduit une dette technique pour respecter une échéance, mais vous devez résoudre la dette technique en optimisant 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 : des instructions SQL mal écrites peuvent dégrader les performances de la base de données. Des conditions JOIN inefficaces peuvent entraîner un traitement inutile des données. 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 d’accélérer les requêtes.

  • 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 comprend 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 les 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, le cas échéant. Ces fonctionnalités incluent la création automatique d’index manquants, la suppression des index inutilisés et le plan de correction. 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 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 leur importance ou de leur fréquence d’accès, et le stockage des 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 d’examiner l’utilisation des données au fil du temps pour s’assurer que les données se situent dans le niveau correct. À mesure que les priorités de données changent, les données doivent passer d’un niveau à un autre.

  • Implémenter la durée de vie : le temps de vie est un mécanisme qui définit un délai d’expiration pour les données. La durée de vie permet de supprimer ou d’archiver automatiquement les données après une certaine période, ce qui réduit les besoins en stockage et améliore la gestion des données. En définissant une durée de vie appropriée, vous autorisez la suppression des données inutiles, ce qui libère de l’espace de stockage et améliore 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 une durée de vie.

Risque : une durée de vie trop courte peut créer des problèmes de performances.

Animation Azure

Automatisation de l’optimisation des performances : Azure Advisor fournit des recommandations automatiques en matière de performances basées sur les données de télémétrie de charge de travail. Vous devez examiner et traiter régulièrement ces recommandations. 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 une diagnostics et une analyse automatisées sur les journaux et les métriques collectés. Des 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 des solutions d’automatisation Azure Automation, Azure Functions ou personnalisées.

Azure permet de tester les performances pour 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. Des outils comme Azure DevOps peuvent automatiser les tests de performances.

Optimisation des bases de données : la famille de produits SQL dispose de nombreuses fonctionnalités intégrées qui vous permettent de surveiller et de corriger les performances des bases 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 en continu 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 leur fréquence d’accès et de leur 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 blob. Les niveaux chauds sont optimisés pour les données fréquemment consultées, les niveaux froids pour les données rarement sollicitées et les niveaux archive pour les données rarement consulté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 efficaces des données.

Liste de contrôle d’efficacité des performances

Reportez-vous à l’ensemble complet de recommandations.