Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
GAMEOPS03-BP03 Testez la charge tôt et souvent
Les tests de charge sont le processus qui consiste à simuler le trafic réel sur un système afin d'évaluer sa fiabilité et ses performances.
Niveau d’exposition au risque si cette bonne pratique n’est pas respectée : élevé
Directives d’implémentation
Les tests de charge sont un facteur clé pour développer une base de performance pour vos ressources et comprendre la capacité de votre système, ce qui peut orienter les prévisions financières, la conception de l'architecture, l'allocation des ressources, les configurations de dimensionnement automatisées et les activités de pré-dimensionnement après le lancement. Les avantages supplémentaires incluent :
-
Infrastructure optimisée : les ressources peuvent être surapprovisionnées ou sous-approvisionnées. Comprendre les ressources nécessaires permettra de réduire les coûts et de réduire l'infrastructure à gérer.
-
Préparation à l'évolutivité : certains mécanismes et fonctionnalités peuvent inciter les utilisateurs à se lancer rapidement dans un jeu. Savoir quand et comment évoluer peut faire la différence entre répondre de manière appropriée à la demande accrue et perdre des joueurs. Utilisez les résultats des tests de charge pour préparer des runbooks avec des seuils système, des points d'alerte et des points d'alerte critiques à différents niveaux d'échelle.
-
Code de meilleure qualité : les problèmes tels que la diaphonie excessive entre les services, les appels de base de données non groupés, les algorithmes inefficaces, les fuites de mémoire et les problèmes de dégradation des services sont parfois plus simples à identifier à grande échelle.
-
Validation du comportement : l'injection de différents types de défaillances dans vos tests peut valider le comportement attendu du système ou découvrir des problèmes de gestion des erreurs qui doivent être corrigés.
Idéalement, les développeurs devraient effectuer des tests de charge à plusieurs moments du processus de développement, car chacun peut apporter des avantages différents : dès le début, ils orientent les décisions architecturales et les efforts de refactorisation, tandis qu'il est moins coûteux et plus simple d'apporter des modifications. À la fin de chaque sprint ou itération, ils valident les performances de l'application à l'aide des fonctionnalités les plus récentes.
Avant le déploiement en production, des tests de charge à grande échelle simulant les modèles d'utilisation attendus dans le monde réel confirment la capacité du système à gérer la charge de travail de production. Après le déploiement, des tests de charge périodiques surveillent les performances du système et identifient les changements ou les goulots d'étranglement qui peuvent survenir au fil du temps.
Pour simuler le trafic de joueurs, vous avez besoin de clients légers ou de robots qui émulent les flux clients du jeu et effectuent des transactions avec le backend du jeu pour simuler le comportement des joueurs dans le monde réel. Ces données sont généralement collectées par le biais de journaux de jeu et de données générées par des tests d'assurance qualité menés par des humains, ainsi que par le biais de tests alpha ou bêta à échelle limitée dans le monde réel où de vrais joueurs sont invités à jouer à une version du jeu en accès anticipé.
Il est important d'enregistrer le comportement du système dans un manuel opérationnel pour aider à résoudre d'éventuelles défaillances à l'avenir et pour conserver les indicateurs de performance auxquels les futurs tests de charge pourront être comparés. Il est également recommandé de faire tester le jeu par un personnel d'assurance qualité humain pendant qu'il est en cours de test de charge, car il pourrait découvrir des problèmes que les robots ne parviennent pas à identifier et que les statistiques ne reflètent pas.
AWS Fault Injection Service
Étapes d’implémentation
-
Configurez un environnement de test de charge distribué à l'aide de Guidance for Kubernetes-Bases Game Load Testing
. -
Personnalisez et déployez les pods Locust Control et Worker au sein du cluster EKS à l'aide des fichiers de déploiement fournis, permettant une génération de charge évolutive et gérable.
-
Enregistrez le comportement et les mesures du système lors des tests de charge dans un manuel opérationnel afin de faciliter les futurs dépannages et d'établir des références de performance.
-
Utilisez des expériences d'injection de défauts pour simuler des perturbations réelles et découvrir des problèmes cachés en matière de performances, d'observabilité et de résilience du système.