• Terry Pitz

Quand l'infrastructure dynamique rencontre Neoload dans le cloud


Les dépenses dues à la maintenance et la configuration de centaines de machines sont aux cœurs des débats dans les entreprises. En effet, afin de faire face à ces problématiques de coûts d’infrastructures et se décharger de certaines contraintes, celles-ci se tournent davantage vers des solutions cloud. Ce mouvement vers le cloud provoque une vague de migrations applicatives dont l’impact doit être mesuré en performance.


Pour réaliser ces mesures, les testeurs doivent être capables à la fois de gérer leur infrastructure d’injection au plus proche des applications cibles (les machines qui pilotent et génèrent l’activité utilisateur), et d’optimiser les coûts des ressources du cloud (RAM, disque, OS, …). Comment réduire le coût d’une infrastructure en migrant dans le cloud, sachant qu’il y aura au moins autant de machines que dans nos anciens data center ? Piloter une infrastructure dans le cloud, et notamment dans différent Cloud Providers (AWS, Azure, GCP, …) peut précisément nécessiter plus de ressources, donc comment gérer autant de machines ? Comment NeoLoad peut-il s’adapter à ce besoin ?


Quand et comment tester ?


Dans le cycle d’intégration continue d’une application, après le développement et le déploiement sur l’environnement de pré-production d’une nouvelle mise à jour, le testeur a pour but de tester plus souvent et d’automatiser au maximum l’exécution des tirs.


Avec un outil comme Neoload, l’automatisation des tests est possible avec Jenkins et il est hautement compatible avec ce mode de fonctionnement itératif. Il peut s’installer sur Linux et offre plusieurs choix en ligne de commande, dont l’installation, la configuration, le lancement de tests, la récupération de résultats, etc.


Les tests peuvent être pilotés par le Neoload Web, qui est à la fois un serveur de licence et une application web permettant de lancer les tirs et de suivre leur évolution en temps réel. Les contrôleurs et les injecteurs y sont connectés à distance et attendent les instructions pour l’exécution. Le projet à lancer est récupéré sur un VCS et envoyé sur les contrôleurs distants automatiquement.


Pour que cela fonctionne, l’infrastructure doit exister au préalable. Afin de pouvoir simuler l’activité utilisateur au plus proche des applications cibles, il existe des outils capables de créer des infrastructures dans des data center différents, de configurer et provisionner les machines afin d’avoir un environnement prêt à l’utilisation.


L’infrastructure dynamique


Terraform est un outil qui permet de construire, modifier et versionner une infrastructure « as code » en communiquant avec plusieurs providers comme Microsoft Azure, le cloud Google, AWS, et beaucoup d’autres.


Il permet de configurer des templates de machine et d’éléments réseau, de les dupliquer et les réutiliser pour d’autres environnements. Les profils DevOps peuvent ainsi maintenir et faire évoluer leurs infrastructures, y ajouter un cluster de machines derrière un load-balancer, ou d’y configurer un nouveau pare-feu pour la gestion de flux, le tout au travers de fichiers de code, versionnés dans un VCS tel que Git.


Terraform rend donc la configuration de l’infrastructure volatile, automatisable et peut facilement s’intégrer avec Jenkins. Au travers de pipeline, il est ainsi possible de provisionner des VMs et de dupliquer les environnements, d’y installer les logiciels nécessaires aux tests, et de les exécuter. Ceci favorise l’intégration des tests de performance et de charge dans le cycle de développement des applications.


Pour finir


La phase de tests de performance prend place à chaque sprint et possède son propre process d’automatisation :

  • Deploy : il faut pouvoir déployer son infrastructure d’injection, au plus près de l’application à tester

Outils : Terraform / Jenkins

  • Installation + configuration : provisionner les machines en y installant les contrôleurs et injecteurs Neoload

Outils : Ansible / Puppet & docker

  • Test exécution : lancement des tests automatisation

Outils : Ansible / Jenkins

  • Save the report : récupération automatique du rapport généré


En alliant la puissance des outils vus plus haut, il est possible de créer un environnement à partir de fichiers versionnés, de provisionner les machines en y installant Neoload, de piloter les tests à partir du Neoload Web, le tout orchestré par Jenkins. La chaîne complète d’automatisation des tests est couverte du début à la fin. Une fois ce système validé et mis en place, la valeur ajoutée du testeur réside essentiellement dans l’expertise qu’il apporte sur l’analyse des tirs et les préconisations.



56 vues

Posts récents

Voir tout