View a markdown version of this page

Backend - Tests de charge distribués sur AWS

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.

Backend

Le backend se compose d'un pipeline d'images de conteneur et d'un moteur de test de charge que vous utilisez pour générer de la charge pour les tests. Vous interagissez avec le backend via le front-end. En outre, les tâches Amazon ECS sur AWS Fargate lancées pour chaque test sont associées à un identifiant de test (ID) unique. Ces étiquettes d'identification de test peuvent être utilisées pour vous aider à surveiller les coûts de cette solution. Pour plus d'informations, reportez-vous aux balises de répartition des User-Defined coûts dans le guide de l'utilisateur d'AWS Billing and Cost Management.

Pipeline d'images de conteneurs

Cette solution utilise des images de conteneurs créées avec Amazon Linux 2023 comme image de base. AWS héberge ces images dans un référentiel public Amazon Elastic Container Registry (Amazon ECR). La solution les utilise pour exécuter des tâches dans le cluster Amazon ECS sur AWS Fargate.

L'image utilisée par une tâche dépend du mode de circulation du test. Pour plus d'informations sur les modes, reportez-vous à la section Modes de forme du trafic.

  • Le mode standard utilise une seule image avec le framework de test de charge Taurus installé. Taurus est un framework d'automatisation des tests open source qui prend en charge JMeter, k6, Locust et d'autres outils de test. Il applique les paramètres de charge que vous avez définis dans la console au framework utilisé par le test.

  • Le mode natif utilise une image dédiée pour chaque framework de test (JMeter, k6 ou Locust), sans Taurus. Chaque image exécute son framework directement sur votre script.

Pour plus d'informations, consultez la section Personnalisation de l'image du conteneur de ce guide.

Approvisionnement du cadre de test

Les trois frameworks de test pris en charge sont provisionnés à différents moments du cycle de vie de la solution afin d'équilibrer la taille de l'image et la flexibilité des versions :

  • Apache JMeter  : stocké dans un compartiment S3 de votre compte lors du déploiement de la pile, et extrait lors de l'exécution du test lors de l'exécution d'un test JMeter ou Simple HTTP Endpoint.

  • Grafana k6 — Téléchargé directement depuis le fournisseur du framework et extrait lors de l'exécution du test, uniquement lors de l'exécution d'un test k6.

  • Locust — Installé dans l'image du conteneur au moment de la génération et reste inactif jusqu'à l'exécution d'un test Locust.

Le provisionnement fonctionne de la même manière dans les deux modes de circulation. Les images en mode natif obtiennent chaque cadre au même moment du cycle de vie que l'image en mode standard. Les exigences de réseau et de déploiement ci-dessous s'appliquent donc aux deux.

Note

k6 nécessite un accès réseau sortant à la version Grafana k6 lors de l'exécution du test. Une sortie restreinte entraînera l'échec des tests k6 lors de l'étape de téléchargement.

Infrastructure de test

Outre le CloudFormation modèle principal, la solution fournit un modèle régional pour lancer les ressources requises pour exécuter des tests dans plusieurs régions. La solution stocke ce modèle dans Amazon S3 et fournit un lien vers celui-ci dans la console Web. Chaque stack régional comprend un VPC, un cluster AWS Fargate et une fonction Lambda pour le traitement des données en temps réel.

Pour plus d'informations sur le déploiement de l'infrastructure de test dans d'autres régions, reportez-vous à la section Multi-Region Déploiement de ce guide.

Moteur d'essai de charge

La solution Distributed Load Testing utilise Amazon Elastic Container Service (Amazon ECS) et AWS Fargate pour simuler des milliers d'utilisateurs simultanés dans plusieurs régions, générant ainsi des requêtes HTTP à un rythme soutenu.

Vous définissez les paramètres de test à l'aide de la console Web incluse. La solution utilise ces paramètres pour générer un scénario de test JSON et le stocke dans Amazon S3. Pour plus d'informations sur les scripts de test et les paramètres de test, reportez-vous à la section Types de test de cette section.

Une machine d'état AWS Step Functions exécute et surveille les tâches Amazon ECS dans un cluster AWS Fargate. La machine à états AWS Step Functions inclut une fonction AWS Lambda de vérification des écrures, une fonction AWS Lambda de vérification de l'état des tâches, une fonction AWS Lambda d'exécution de tâches, une fonction AWS Lambda d'annulation de tâches et une fonction AWS Lambda d'analyse des résultats. Pour plus d'informations sur le flux de travail, reportez-vous à la section Workflow d'exécution des tests de ce guide. Pour plus d'informations sur les résultats des tests, consultez la section Explore les résultats des tests de ce guide. Pour plus d'informations sur le flux de travail d'annulation de test, reportez-vous à la section Annulation d'un test de ce guide.

Si vous sélectionnez des données en temps réel, la solution lance une fonction Lambda d'éditeur de données en temps réel dans chaque région à partir des CloudWatch journaux correspondant aux tâches Fargate de cette région. La solution traite et publie ensuite les données relatives à un sujet dans AWS IoT Core dans la région où vous avez lancé la pile principale. Pour plus d'informations, reportez-vous à la section Surveillance avec des données en temps réel de ce guide.