Tests de performances
Les tests de performances aident à maintenir le bon fonctionnement des systèmes et à résoudre les défauts avant que les problèmes n’atteignent les utilisateurs du système. Cela contribue à maintenir l’efficacité, la réactivité, la scalabilité et la vitesse des applications par rapport aux besoins de l’entreprise. Lorsqu’ils sont correctement effectués, les tests de performances doivent vous fournir les informations de diagnostic nécessaires pour éliminer les goulots d’étranglement qui entraînent des performances médiocres. Un goulot d’étranglement se produit lorsque le flux de données est interrompu ou s’arrête en raison d’une capacité insuffisante pour gérer la charge de travail.
Pour éviter d’être confronté à des performances médiocres, consacrez le temps et les ressources nécessaires aux tests des performances du système. Deux sous-ensembles de test de performances, de test de charge et de test de contrainte peuvent déterminer la limite supérieure (proche de la limite de capacité) et la limite maximale (point d’échec), respectivement, de la capacité de l’application. En effectuant ces tests, vous pouvez déterminer l’infrastructure nécessaire pour prendre en charge les charges de travail anticipées.
Une meilleure pratique consiste à planifier une mémoire tampon de charge pour prendre en charge des pics aléatoires sans surcharger l’infrastructure. Par exemple, si une charge système normale est de 100 000 demandes par seconde, l’infrastructure doit prendre en charge 100 000 demandes à 80 % de la capacité totale (c’est-à-dire, 125 000 demandes par seconde). Si vous pensez que l’application continuera de traiter 100 000 demandes par seconde, et que la référence SKU actuelle introduit de la latence à 65 000 demandes par seconde, vous devrez probablement mettre à niveau votre produit vers la référence SKU supérieure. S’il existe une région secondaire, vous devez vous assurer qu’elle prend également en charge la référence SKU la plus élevée.
Selon l’échelle de votre test de performances, vous devez planifier et gérer une infrastructure de test. Vous pouvez utiliser un outil basé sur le cloud tel que Azure Load Testing (préversion) pour réduire l’infrastructure nécessaire à l’exécution de vos tests de performances.
Établir des bases de référence
Tout d’abord, établissez des bases de référence pour les performances de votre application. Ensuite, établissez une cadence régulière pour l’exécution des tests. Exécutez le test dans le cadre d’un événement planifié ou d’un pipeline de build d’intégration continue (CI).
Les bases de référence permettent de déterminer l’état d’efficacité actuel de votre application et de l’infrastructure qui la prend en charge. Les bases de référence peuvent fournir de bons insights pour les améliorations et déterminer si l’application atteint les objectifs métier. Vous pouvez créer des bases de référence pour n’importe quelle application, quelle que soit sa maturité. Le moment auquel vous établissez la base de référence n’a pas d’importance, car vous mesurez les performances par rapport à cette base de référence pendant le développement continu. Quand le code et/ou l’infrastructure changent, l’effet sur les performances peut être mesuré activement.
Test de charge
Le test de charge mesure les performances du système à mesure que la charge de travail augmente. Il identifie l’emplacement et le moment où votre application s’interrompt, ce qui vous permet de résoudre le problème avant l’envoi en production. Pour ce faire, il teste le comportement du système avec des charges lourdes et courantes.
Le test de charge a lieu à certaines étapes de la charge. Ces étapes sont généralement mesurées par des utilisateurs virtuels ou des demandes simulées, et se produisent à des intervalles donnés. Les tests de charge fournissent des insights sur quand et comment votre application doit être mise à l’échelle pour continuer à honorer le contrat SLA garanti à vos clients (internes ou externes). Les tests de charge peuvent également être utiles pour déterminer la latence entre les applications distribuées et les microservices.
Voici les points clés à prendre en compte pour le test de charge :
Connaître les limites du service Azure - Des limites logicielles et matérielles sont associées aux différents services Azure. Les termes limite logicielle et limite matérielle décrivent la limite de service actuelle ajustable (logicielle) et la limite maximale (matérielle). Comprenez les limites des services que vous consommez afin de ne pas les bloquer en cas de dépassement. Consultez Abonnement Azure et limites, quotas et contraintes de service pour obtenir la liste des limites Azure les plus courantes.
L’exemple ResourceLimits montre comment interroger les limites et les quotas pour des ressources couramment utilisées.
Mesurer les charges standard - Connaître les charges standard et maximales de votre système vous aide à comprendre quand une opération sort des limites pour lesquelles elle est conçue. Surveillez le trafic pour comprendre le comportement de l’application.
Comprendre le comportement de l’application à différentes échelles - Effectuez un test de charge de votre application pour comprendre comment elle fonctionne à différentes échelles. Tout d’abord, testez les performances de l’application avec une charge standard. Ensuite, testez ses performances avec une charge à l’aide de différentes opérations de mise à l’échelle. Consultez les Meilleures pratiques de mise à l’échelle automatique pour obtenir des informations supplémentaires sur l’évaluation de votre application à mesure que la quantité de trafic qui lui est envoyée augmente.
Tests de contrainte
Contrairement au test de charge, qui garantit qu’un système peut gérer ce qu’il est conçu pour gérer, le test de contrainte se concentre sur la surcharge du système jusqu’à la rupture. Un test de contrainte détermine la stabilité du système et sa capacité à résister aux augmentations de charge extrêmes. Pour ce faire, il teste le nombre maximal de demandes d’un autre service (par exemple) qu’un système peut traiter à un moment donné avant que les performances ne soient compromises et échouent. Trouvez cette valeur maximale pour comprendre le type de charge que l’environnement actuel peut supporter correctement.
Déterminez la demande maximale que vous souhaitez placer sur la mémoire, le processeur et l’IOPS du disque. Une fois qu’un test de contrainte a été effectué, vous connaissez la charge maximale prise en charge et la marge opérationnelle. Il est préférable de choisir un seuil opérationnel afin que la mise à l’échelle puisse être effectuée avant que le seuil ne soit atteint.
Une fois que vous avez déterminé une marge opérationnelle et un temps de réponse acceptables sous des charges standard, vérifiez que l’environnement est correctement configuré. Pour ce faire, assurez-vous que les références SKU que vous avez sélectionnées sont basées sur les marges souhaitées. Veillez à rester aussi proche que possible de vos marges. Une allocation trop importante peut augmenter les coûts et la maintenance inutilement ; une allocation trop faible peut entraîner une mauvaise expérience utilisateur.
Outre le test de contrainte via une charge accrue, vous pouvez effectuer un test de contrainte en réduisant les ressources pour identifier ce qui se produit lorsque la mémoire de l’ordinateur est insuffisante. Vous pouvez également effectuer un test de contrainte en renforçant la latence (par exemple, la base de données prend 10 fois plus de temps pour répondre, les écritures sur le stockage prennent 10 fois plus longtemps, etc.).
Tests multirégion
Une architecture multirégion peut offrir une meilleure disponibilité qu’un déploiement dans une seule région. Si une interruption de service régionale affecte la région primaire, vous pouvez utiliser Front Door pour utiliser la région secondaire. Cette architecture peut également se révéler utile en cas de défaillance d’un sous-système spécifique de l’application.
Testez la durée nécessaire pour que les utilisateurs soient redirigés vers la région jumelée afin que la région n’échoue pas. Pour en savoir plus sur le routage, consultez Méthodes de routage Front Door. En règle générale, un basculement de test planifié peut aider à déterminer le temps nécessaire à la mise à l’échelle complète pour prendre en charge la charge redirigée.
Configurer l’environnement en fonction des résultats des tests
Une fois que vous avez effectué les tests et trouvé une marge opérationnelle et une réponse acceptables sous des niveaux accrus de charge, configurez l’environnement pour maintenir l’efficacité des performances. Effectuez un scale-out ou un scale-in pour gérer les augmentations et les diminutions de charge. Par exemple, vous savez peut-être que vous rencontrerez des niveaux élevés de trafic pendant la journée et des niveaux faibles pendant le week-end. Vous pouvez configurer l’environnement pour effectuer un scale-out pour les augmentations de charge ou effectuer un scale-in pour les diminutions avant que la charge ne change.
Pour plus d’informations sur la mise à l’échelle automatique, consultez Conception pour la mise à l’échelle dans le pilier Efficacité des performances.
Notes
Assurez-vous qu’une règle a été configurée pour mettre à l’échelle l’environnement une fois que la charge atteint les seuils définis. Cela vous permet d’économiser de l’argent.