Principes de conception de l’efficacité des performances

L’efficacité des performances est la capacité de votre charge de travail à s’adapter aux changements de demandes. Une charge de travail doit être en mesure de gérer une augmentation de la charge sans compromettre l’expérience utilisateur. À l’inverse, en cas de diminution de la charge de travail, la charge de travail doit conserver ses ressources. La capacité, qui indique la disponibilité des ressources (processeur et mémoire), est un facteur important.

La conception de la charge de travail ne doit pas uniquement s’appuyer sur une capacité préprovisionnée, ce qui garantit des performances jusqu’à une certaine limite. Si cette limite est dépassée, la charge de travail peut rencontrer des problèmes de performances ou même des pannes. Lorsque la charge est inférieure à cette limite, les ressources continuent de s’exécuter inutilement, ce qui entraîne des coûts.

Vous avez besoin d’une stratégie complète pour maintenir les objectifs de performances au fil du temps. Les considérations relatives aux performances ne doivent pas être considérées après coup dans le processus de conception, mais uniquement lorsque des problèmes surviennent en production. Au lieu de cela, adoptez un état d’esprit où la performance est une considération clé dès les premières étapes de la conception. Initialement, générez le système sans cibles de performances spécifiques. Mais à partir de là, testez et mesurez les performances à chaque étape du développement pour garantir la progression et l’efficacité. L’optimisation continue de ces objectifs tout au long du processus et l’incorporation des leçons tirées de la production peuvent atténuer considérablement les problèmes potentiels à l’avance.

Ces principes de conception peuvent vous aider à créer votre stratégie de gestion de la capacité des ressources afin de répondre suffisamment aux besoins de votre entreprise pour l’utilisation attendue. De plus, réduisez les déchets pendant les heures creuses. Une fois que vous avez choisi une stratégie, solidifiez votre conception à l’aide de la liste de contrôle Efficacité des performances.

L’efficacité des performances est une question d’utilisation efficace des ressources de charge de travail. Sans une bonne stratégie, vous risquez de ne pas être en mesure d’anticiper et de répondre aux demandes des utilisateurs. Vous devrez peut-être recourir à une approche de prévision à long terme et de capacité pré-provisionnée, ce qui ne vous permet pas de tirer pleinement parti de votre plateforme cloud.

Négocier des objectifs de performance réalistes

Icône Objectif L’expérience utilisateur prévue est définie, et il existe une stratégie pour développer un benchmark et mesurer des objectifs par rapport aux exigences métier préétablies.

Du point de vue des performances, il est idéal d’avoir des objectifs de performances bien définis pour démarrer votre processus de conception. Pour définir ces objectifs, vous devez avoir une bonne compréhension des exigences métier et de la qualité de service attendue que la charge de travail est censée fournir. Définissez les attentes en collaboration avec les parties prenantes de l’entreprise. Au lieu de se concentrer uniquement sur les métriques techniques, déterminez les effets acceptables sur l’expérience utilisateur pour les flux de clés.

Il existe une dépendance circulaire. Vous ne pouvez pas mesurer ce que vous n’avez pas défini et vous ne pouvez pas définir sans mesure. Par conséquent, il est également important de mesurer le rendement de la charge de travail jusqu’à ce que vous obteniez une définition satisfaisante du seuil acceptable avec une convention collective.

Il existe une forte corrélation entre les objectifs de performances et de fiabilité, ce qui permet de déterminer la qualité du service en termes de performances, de disponibilité et de résilience. Sans définition claire, il est difficile de mesurer, d’alerter et de tester les performances. Une fois que vous avez établi les cibles et identifié les nombres réels par le biais de tests au fil du temps, vous pouvez implémenter l’automatisation pour des tests continus sur ces cibles.

Respectez les meilleures pratiques pour définir des cibles au niveau macro, même si elles sont approximatives ou dans une plage.

Approche Avantages
Préparez-vous à une négociation efficace en comprenant les concepts techniques, en explorant les possibilités de conception avec l’infrastructure disponible et en utilisant les résultats d’expérimentations concrètes, le cas échéant.

Utilisez des données historiques pour obtenir une visibilité sur les modèles d’utilisation et les goulots d’étranglement.

Apportez des insights à partir de facteurs externes, tels que les commentaires de l’analyse du marché, des experts et des normes de l’industrie.
Vous pouvez prendre des décisions éclairées basées sur des insights pratiques.

Les objectifs de performance sont axés sur l’expérience utilisateur basée sur ce qui est faisable, les meilleures pratiques du secteur et les tendances actuelles du marché.
Collaborez avec les propriétaires d’entreprise pour comprendre les promesses des utilisateurs, en termes de qualité et de conformité réglementaire, le cas échéant.

Gardez une perspective large et évitez de plonger dans des détails précis à ce stade.

Soyez explicite sur ce qui représente un rendement acceptable, en fonction des investissements.

Comprendre le contexte de l’entreprise et la croissance prévue.
Vous éviterez de faire des hypothèses qui pourraient ne pas correspondre aux objectifs de l’entreprise. Il favorise également la clarté et la motivation au sein de l’équipe de charge de travail.

Le fait d’avoir un contexte métier sur les exigences fonctionnelles et non fonctionnelles peut révéler des modifications de conception dans d’autres piliers Azure Well-Architected et vous aider à faire des compromis éclairés.

La définition précoce des paramètres permet d’éviter les coûts associés à des refontes de solution potentielles ultérieurement.

Il vous permet de vous assurer que les objectifs de performances couvrent les projections futures, ce qui vous permet d’aligner les efforts actuels sur les objectifs à long terme.
Identifiez les flux de charge de travail et hiérarchiser les flux dans le diagramme architectural.

Définissez la tolérance de performances de chaque flux sous la forme d’une plage de performances allant de l’aspiration à l’inacceptable.

Évaluez les points d’entrée et de sortie de chaque flux, en tenant compte de la criticité du chemin, de la fréquence d’utilisation et de l’intensité architecturale.
En hiérarchisant les flux, vous pouvez concentrer vos ressources sur les domaines critiques qui ont le plus d’impact sur les résultats des utilisateurs et de l’entreprise.

En répartissant le système en ses parties et dépendances, vous comprenez la fonction et l’influence de chaque composant sur les performances. Vous prenez également conscience des problèmes potentiels.

Il permet d’établir une base de référence de performances et d’optimiser les lecteurs.
Commencer à créer un modèle de performances Déterminez si les modèles d’utilisation présentent des variations saisonnières ou quotidiennes. Tenez compte du coût, des opérations et de la criticité pour l’entreprise.

Utilisez les normes du secteur pour quantifier les métriques et les méthodes d’agrégation, telles que l’utilisation de centiles.

Évaluez les attentes et les limitations de l’offre et de la demande imposées par les contraintes métier.

Intégrer des perspectives de croissance.
Un modèle de performances fournit des informations sur l’utilisation optimale des ressources et aide à la planification stratégique.

Les normes de l’industrie facilitent l’analyse comparative.

La vérification future garantit que les objectifs de performance restent pertinents et peuvent s’adapter aux changements.

Concevoir pour répondre aux exigences de capacité

Icône Objectif Fournir suffisamment d’offre pour répondre à la demande prévue.

Il est important de mesurer de manière proactive les performances. La mesure des performances implique de mesurer les bases de référence et d’avoir une compréhension préliminaire des composants du système susceptibles de poser des défis. Vous pouvez y parvenir sans effectuer un test de performances complet ou via une optimisation granulaire. En effectuant ces étapes initiales, vous établissez les bases d’une gestion efficace des performances dès le début du cycle de vie du développement.

Examinez le système dans son ensemble, plutôt que de vous concentrer sur des composants individuels. Évitez le réglage précis à ce stade. L’amélioration granulaire des performances entraîne des compromis dans d’autres domaines. À mesure que vous progressez tout au long du cycle de vie et que vous commencez à tester l’acceptation des utilisateurs ou que vous passez à la production, vous pouvez rapidement identifier les domaines qui nécessitent une optimisation supplémentaire.

Approche Avantage
Évaluez les demandes d’élasticité pour les flux identifiés.

Explorez les modèles de conception qui peuvent être implémentés dans la pile technologique, en tenant compte de l’application et des couches de calcul et de données sous-jacentes.
Vous pouvez définir des exigences de scalabilité sur les composants existants qui ont besoin de plus de capacité et les zones où vous avez besoin de composants supplémentaires pour distribuer la charge.

Vous connaissez les goulots d’étranglement potentiels dans le système et concevez des contrôles de compensation, tels que l’ajout de fonctionnalités de mise en cache pour réduire la latence et la charge du système.
Choisissez les ressources appropriées dans la pile technologique, ce qui vous permet d’atteindre les objectifs de performances et de vous intégrer au système.

Tenez compte des fonctionnalités qui peuvent répondre aux exigences de scalabilité.

Trouvez le bon équilibre entre l’allocation des ressources et la configuration système requise pour gérer efficacement les pics inattendus.
En analysant les différentes fonctionnalités des ressources, vous vous assurez que chaque composant contribue à la fonctionnalité globale et aux performances du système.

Vous pouvez tirer parti des fonctionnalités intégrées qui déclenchent automatiquement des opérations de mise à l’échelle.

Le dimensionnement correct des ressources peut répondre aux changements de la demande sans surprovisionnement, ce qui entraîne des économies de coûts.
Planifiez la capacité en fonction de la demande et de la capacité des ressources sélectionnées pour enrichir votre modèle de performances.

Utilisez des techniques de modélisation prédictive pour prévoir les changements de capacité qui peuvent se produire avec des changements prévisibles et inattendus.

Définissez des objectifs de performances qui peuvent être traduits en exigences techniques.
Vous pouvez utiliser efficacement les ressources et répondre à la demande sans surprovisionnement, évitant ainsi des coûts inutiles.

Vous comprenez comment les choix de conception affectent les performances.
Implémentez une preuve de concept qui valide les exigences techniques et les choix de conception. Une preuve de concept joue un rôle déterminant dans la validation de la conception afin de déterminer si le système peut atteindre les objectifs de performance et si ces objectifs sont réalistes. En fonction de la charge prévue, vous pouvez vérifier si la capacité prévue peut répondre aux objectifs de performances.

Vérifiez également les implications des coûts des choix de conception.
Documentez votre stratégie de test des performances.

Incluez des cas d’usage, différentes méthodologies et la cadence de vos plans de test.

Définissez un processus pour l’opération décrit par le plan de test de performances.

Triez et hiérarchisez les cas de test dans le plan. Concentrez-vous sur les cas qui offrent des insights précieux sur les objectifs de performances et alignent la planification de la capacité.
Vous vous assurez que les bons aspects du système sont testés.

Vous pouvez allouer des ressources efficacement et effectuer des tests d’une manière qui s’aligne sur les priorités et les exigences de l’entreprise.
Documentez votre stratégie d’analyse des performances.

Évaluez les métriques à différents niveaux d’abstraction pour chaque flux identifié.
Vous pouvez suivre la progression vers l’atteinte des objectifs de performance tout au long du cycle de développement.

Atteindre et maintenir les performances

Icône Objectif Protégez-vous contre la dégradation des performances pendant que le système est en cours d’utilisation et à mesure qu’il évolue.

Le développement n’est pas un effort ponctuel. C’est un processus continu. Attendez-vous à des changements de performances à mesure que les fonctionnalités changent. Il existe des variations dans les modèles utilisateur et les profils, même des modifications par rapport aux optimisations dans d’autres piliers d’Azure Well-Architected. Toute modification peut mettre à rude épreuve les ressources de charge de travail.

Protégez le système contre les modifications afin qu’il ne recule pas sur les objectifs de performances. Intégrer les tests et la supervision dans le processus de développement. Testez les performances du système en production avec une charge réelle et simulez cette charge avec des tests automatisés avant la production. Dans les deux cas, vous devez avoir des pratiques de surveillance en place à des fins de vérification.

Tout au long du cycle de vie du développement, effectuez différents types de tests à différentes étapes. Dans les phases initiales, testez la preuve de concept pour vous assurer que les résultats de performances ne sont pas entièrement inattendus. À mesure que le développement progresse, effectuez des tests manuels à faible effort pour établir des points de référence. Dans la phase de génération, commencez à développer des tests de performances de routine automatisés qui évaluent la latence, les niveaux de contrainte, la capacité de charge et d’autres caractéristiques définies dans les plans de test.

La surveillance doit faire partie intégrante de cet effort, plutôt que d’être un exercice isolé. Vous pouvez voir comment le système et ses ressources fonctionnent au fil du temps. Vous pouvez ensuite les affiner pour optimiser leur valeur et vous assurer qu’ils continuent de respecter les normes de performances.

Gardez à l’esprit que les objectifs de performances varient au fil du temps, en réponse aux modifications. Mettez à jour le modèle de performances en fonction des métriques testées et supervisées. Indiquez clairement l’augmentation, la réduction ou l’absence d’effet sur les performances des flux.

Soyez toujours prêt à renégocier et à réinitialiser les attentes avec les parties prenantes de l’entreprise.

Approche Avantage
Intégrer des tests de performances de routine dans Azure Pipelines.

Choisissez des pipelines pouvant intégrer des tests. À l’inverse, choisissez des outils de test qui peuvent être intégrés dans les pipelines.
Les tests automatisés font gagner du temps et fournissent une cohérence qui facilite la détection des régressions ou des améliorations.

Ces artefacts permettent une surveillance continue des écarts ou des dérives au fil du temps, ce qui vous permet de maintenir des performances et une qualité cohérentes.
Formalisez les tests de performances en tant que portes de qualité qui peuvent approuver ou refuser la promotion de mise en production et le déploiement final en production. Ces points de contrôle garantissent que chaque étape de déploiement répond aux normes de performances requises avant de passer à la suivante. Les points de contrôle permettent d’éviter une régression involontaire des performances.

Par instance, si les performances sont nettement inférieures aux attentes, vous pouvez bloquer une mise en production jusqu’à ce que des améliorations soient apportées.
Configurez un processus reproductible pour surveiller les transactions réelles en production et les écarts par rapport à vos objectifs de performances.

Utiliser des transactions synthétiques en production.

Configurez des alertes de supervision sur les régressions de performances.
Vous souhaitez obtenir des informations sur les performances réelles de votre système sous une charge réelle qui n’a pas pu être simulée par le biais de tests.

Vous pouvez ensuite identifier de manière proactive les problèmes et les domaines d’amélioration tels que les goulots d’étranglement potentiels, les ressources sous-utilisées et d’autres problèmes.
Passez en revue les résultats des tests de performances et les données de surveillance méticuleusement et optimisez jusqu’à ce que vous atteignez les objectifs de performances.

Hiérarchiser les actions dérivées de ces révisions et les ajouter au backlog pour une exécution planifiée.
En fonction des résultats des tests, vous pouvez capturer et comparer des données et commencer à analyser les tendances.

Vos efforts d’optimisation sont pilotés par les données.
Développez des compétences de codage qui se concentrent sur les performances.

Disposer de normes de codage qui illustrent les modèles de codage basés sur les performances.
Le code qui n’a pas de problèmes de performances peut rendre les cycles de test plus efficaces , car les tests peuvent être axés sur des problèmes plus importants.

Les modèles de codage permettent d’éviter les remaniements et de maintenir la cohérence de votre style de codage.
Résolvez l’érosion des performances à mesure que l’utilisation augmente, que les fonctionnalités changent et que les données s’accumulent au fil du temps pour maintenir les performances.

Réinitialisez les attentes et établissez de nouvelles cibles, si le réglage précis n’apporte que des avantages à court terme.
Vous pouvez conserver l’état des performances avant que la dégradation ne se transforme en problèmes qui affectent négativement l’expérience utilisateur au-delà de la plage acceptable.

La modification des cibles réinitialise le modèle de performances et vous ne perdez pas de temps à optimiser le système qui a déjà atteint sa capacité.

Améliorer l’efficacité grâce à l’optimisation

Icône Objectif Améliorez l’efficacité du système dans les cibles de performances définies pour augmenter la valeur de la charge de travail.

Les objectifs définis lors de la phase initiale sont basés sur un niveau raisonnable d’expérience utilisateur, en tenant compte de diverses contraintes. Vous devez réévaluer et ajuster les cibles pour améliorer davantage l’expérience. Pour améliorer davantage l’expérience, il nécessite une compréhension claire de la façon dont le système est utilisé, comment il a évolué et comment la plateforme ou la technologie a changé au fil du temps. Le cycle de surveillance, d’optimisation, de test et de déploiement est un processus continu.

Les efforts d’optimisation de l’efficacité permettent à une charge de travail de fonctionner avec une consommation de ressources inférieure. Elles peuvent entraîner une charge de travail dans un état surprovisionné avec une capacité de rechange. Utilisez cette capacité pour améliorer la fiabilité du système. Éliminez la capacité pour améliorer le coût du système. Ou réaffecter la capacité pour prendre en charge de nouvelles fonctionnalités de produit sur les ressources existantes.

Lorsque le système gagne en efficacité, profitez de l’occasion pour définir et maintenir de nouveaux objectifs de performances.

Approche Avantage
Allouez des cycles dédiés pour l’optimisation des performances afin de répondre aux exigences et optimisations non fonctionnelles dans les zones fonctionnelles. Les cibles de cette optimisation sont les ressources, le code, la conservation des données, les requêtes de base de données, etc. Vous pouvez créer une culture d’optimisation basée sur les performances. Vous tenez l’équipe responsable de la surveillance proactive des modèles de performances et ajustez également l’application.
Améliorez l’architecture avec de nouveaux modèles et composants de conception, ce qui peut améliorer les performances, d’une manière que vous n’avez pas prise en compte auparavant en raison d’un temps ou d’un budget limités. La nouvelle conception et les nouveaux composants peuvent optimiser le système, ce qui améliore l’expérience utilisateur. Par exemple, vous pouvez utiliser la mise en cache ou l’ajout d’un composant réseau de distribution de contenu.

Cela peut également entraîner des avantages sur le plan des coûts à long terme.
Utilisez des outils de supervision pour analyser les tendances historiques et identifier les flux et les chemins d’implémentation du code qui bénéficieraient le plus d’un effort d’optimisation des performances. Nous vous recommandons d’utiliser des outils de surveillance des performances des applications (APM) et des profileurs à cet effet.

Identifiez les chemins d’accès à chaud des opérations et d’autres goulots d’étranglement potentiels dans le système.
Lorsque vous identifiez les domaines problématiques récurrents, l’équipe peut se concentrer sur les gains les plus élevés.
Tenez-vous informé et tenez-vous informé des innovations technologiques qui peuvent améliorer les performances.

Tirez parti des nouvelles versions publiées pour les frameworks et bibliothèques dépendants.

De même, utilisez les nouvelles fonctionnalités pour les ressources de plateforme à mesure qu’elles sont mises à jour et corrigées.
L’adoption de nouvelles technologies peut souvent être le facteur de motivation pour rechercher des opportunités d’amélioration.

Le code qui a pu être lent dans le passé peut devenir plus rapide avec ces mises à jour. Vous souhaitez également être conscient de la façon dont certaines mises à jour affectent négativement les performances.

Étapes suivantes