NeoLoad intégré dans la Software factory Accor

Dans un cycle classique de développement, le métier a une idée, puis la transmet à l’équipe de delivery qui la développe avant de la passer à la production. Mais lorsque le métier a beaucoup d’idées, le delivery développe beaucoup de lignes de code. Cette grande quantité d’informations peut être problématique à la production et aboutir à des déploiements extrêmement coûteux.
 
Pour optimiser le développement, Accor a adopté une démarche plus digitale en créant la Software factory. Dans ce processus, dès lors qu’une idée est émise par le métier, celle-ci est développée, testée et envoyée petit à petit à l’équipe de production.

Présenté par:

Entreprise
ACCOR
Secteur d’activité
Hôtellerie
Effectif
280,000
Lieu
France

Michael Djahel -Responsable Méthode et Outils du Groupe Accor présente le fonctionnement de la softaware factory Accor et l’intégration de Neoload.

Michael Djahel
Responsable Méthode et Outils du Groupe Accor
Frank Jarre
Testing Practice Representative for Itecor Paris

En bref : comment fonctionne la Software factory ?

 

Le déroulement de la Software factory suit un processus précis :

  1. Développement des lignes de code ;
  2. Tests unitaires ;
  3. Tests de qualimétrie ;
  4. Packaging ;
  5. Réalisation des tests automatisés ;
  6. Recette ;
  7. Vérification de la sécurité et de la performance .

Après validation de toutes les étapes de la Software factory, l’application est livrée dans des environnements Cloud ou On Premise. Inclus dans une démarche DevOps, le cycle se répète constamment avec des développements qui sont livrés au fil de l’eau.

L’Histoire des tests de performance chez Accor

 

Les débuts des tests de performance

La performance chez Accor date de 1999. À cette époque, LoadRunner était l’un des rares produits sur le marché à couvrir les technologies Web, Sybase et Oracle. Les tests de performance étaient réalisés par les équipes de sécurité, qui souhaitaient valider la qualité des applications. Dans ce contexte, les équipes développement, production et sécurité étaient toutes impliquées dans le processus.

Cette méthode nécessitait beaucoup de coordination ainsi qu’un travail important de scripting. D’autre part, les indicateurs relevés étaient assez généraux et apportaient peu de détails.

Avec l’évolution des technologies, Accor a de moins en moins eu recours aux protocoles Sybase et Oracle, et a recentré les tests de performance principalement sur du Web ou de l’API.

 

Avènement du digital chez Accor

En 2016-2017, une transformation digitale s’est mise en place avec un investissement dans de nouveaux outils. Cette transformation portait d’une part sur la virtualisation des environnements, la mise en place de l’agilité, le début du Cloud, mais aussi la transformation des applications en API.

Pour la partie performances et monitoring, cette transformation a permis d’acquérir plusieurs produits :

  • NeoLoad pour la partie gestion de la performance ;
  • Dynatrace pour la partie monitoring d’application ;
  • Splunk pour tracer le log des applications en production.

La transition

En 2017-2018, Accor a pu bénéficier d’un accompagnement d’Itecor pour une période de transition de trois mois. Pendant cette période, pour chaque projet LoadRunner, le même script était écrit en double pour NeoLoad. De cette façon, la solution a pu être qualifiée, et les équipes se sont rendu compte qu’elles allaient plus vite pour le scripting.

Les projets ont donc définitivement été basculés sur NeoLoad, et Dynatrace y a été intégré pour permettre aux campagnes de test de fournir des informations beaucoup plus détaillées lors des tirs de performance dans l’environnement de recettes.

La fonctionnalité Publication sur le Web de NeoLoad a également été utilisée pour suivre en direct le résultat des tirs.

Comment se passent les tests de performance chez Accor aujourd’hui ?

 

Les tests de performance chez Accor évoluent sur deux axes :

  1. Les utilisateurs : Accor a créé une communauté de test de performance, qui permet de regrouper tous ceux qui ont demandé au moins une fois un test de performance. Ils peuvent utiliser NeoLoad et commencer à travailler sur l’appropriation de l’outil.
  2. L’automatisation : Accor fait un shift left de la performance en intégrant des scénarios dédiés dans Gitlab. Les environnements sont gérés directement depuis la Software factory par l’intermédiaire de Kubernetes. La publication de résultats est faite avec NeoLoad. Enfin, pour obtenir un quality gate dans le pipeline, les équipes ont mis en place des SLA.

Quelles ont été les adaptations à faire pour optimiser les tests de performance ?

 

Avoir une base de données dédiée

Il a d’abord été nécessaire d’avoir une base de données dédiée, qui correspond à la base du système de réservation afin de pouvoir exploiter les données sans déranger qui que ce soit.

 

Générer son propre jeu de données

Par rapport au scripting qui était fait habituellement sur du test classique, il a fallu développer la capacité des équipes à générer leur propre jeu de données. En effet, à partir du moment où on fait du test en continu, le jeu de données ne peut pas être périssable. S’il l’est, il doit être possible de régénérer en amont du test l’ensemble des données qui y participent.

 

Utiliser des outils de bouchonnage

S’il n’y a pas de nécessité d’utiliser des jeux de données, il est possible d’utiliser des outils de bouchonnage pour limiter l’impact du test et ne pas perturber un service qui pourrait être appelé au travers de l’application.

 

Conteneurisation de l’application

Cette étape n’est pas indispensable, car il est tout à fait possible d’installer l’application On premise et de faire les tests depuis la Software factory, donc depuis le Cloud.

Concrètement, comment ça se met en place ?

L’objectif

Quand on pense performances, on pense à une application qui est déjà toute livrée. On met donc en place des tests de performance en fin de chaîne, quand tous les tests automatisés ont été réalisés. Mais quand l’application ne fonctionne pas en fin de chaîne, il n’y a plus le temps de faire différents développements, car la fonctionnalité doit sortir rapidement. C’est pourquoi il est essentiel de pouvoir intégrer les tests de performance le plus tôt possible dans le développement de la fonctionnalité.

Le but est de se focaliser sur des fonctionnalités clés pour avoir des baselines, voir comment les tendances dérivent de build en build et s’il y a des régressions.

 

La méthode

  • Accompagner les équipes projet : cette démarche a été facilitée par NeoLoad Web, car elles peuvent retrouver les résultats des tests, suivre les tests en cours… Aujourd’hui, chez Accor il y a plus de 50 utilisateurs de NeoLoad Web, dont 80 % des développeurs qui se connectent une quinzaine de fois par semaine.
  • Rendre les tests moins exigeants : réduire le nombre d’utilisateurs nécessaire permet d’être sûr que la plateforme ne rencontre pas de problèmes lors de l’exécution. Pour cela, il faut se concentrer sur des user stories vraiment critiques en se focalisant sur les fonctionnalités importantes.

 

Les résultats

  • Suivre et monitorer plus tôt : possible avec l’arrivée de Dynatrace et l’intégration dans NeoLoad, cela permet de remonter les métriques systèmes et de voir plus tôt s’il y a des dérives des métriques dans le temps.
  • Partager : NeoLoad Web facilite le partage des différents constats entre les intervenants du Dev jusqu’à l’Ops, en passant par la sécurité.
  • Standardiser des KPI (Keys Performances Indicators) de qualité : pour réaliser des tests de performance efficaces, il est nécessaire d’entreprendre des discussions pour parvenir à des accords avec les équipes projet.

Quels sont les outils utilisés dans la Software factory Accor ?

 

La Software factory est une structure complète qui nécessite différents outils :

  • Amazon AWS pour l’architecture, avec les environnements développement, qualification et production pour réaliser des tests de performance ;
  • GitLab pour les scénarios réalisés avec YAML
  • Nexus pour le dépôt ;
  • NeoLoad pour la charge ;
  • CheckMarx, SonarQube et Selenium pour les tests automatisés.

L’idéal serait un pipeline entièrement automatisé de bout en bout, mais à l’heure actuelle, les projets menés par Accor en sont rarement à ce stade. Une action humaine est généralement nécessaire à un certain stade pour valider et passer à la suite des opérations.

Comment ça marche ?

 

  1. Le code est réalisé sur NeoLoad en YAML ;
  2. Depuis GitLab, on planifie le scénario qui va être lancé. Pour cela, on démarre l’instance AWS et l’Image Docker de NeoLoad ;
  3. On récupère la licence sur le team server ;
  4. On commence à charger l’application à tester.

Dès que le test démarre, les résultats sont envoyés sur NeoLoad Web, et des notifications sont envoyées à l’équipe projet pour l’informer que le test de performance est en cours ou qu’il est terminé. Celle-ci peut ainsi en suivre l’avancée et prendre immédiatement connaissance des résultats.

Que trouve-t-on dans le fichier YAML NeoLoad ?

 

Dans le fichier YAML NeoLoad, on trouve d’abord toute la partie description du texte, qui comprend le nom du projet, le nom de l’environnement, les informations sur le Docker avec les paramètres utilisés (login, mot de passe, licence), la durée du test et le résultat final.

Dans le test on positionne les SLA pour définir le quality gate. À l’issue du test, si les SLA sont bonnes, l’équipe reçoit une notification pour lui signaler que le test est validé. Dans le cas contraire, le rapport d’erreur est envoyé avec des données détaillées.

Un modèle simplifié pour l’équipe projet

 

N’importe quelle équipe projet qui veut utiliser NeoLoad dans son pipeline a juste à faire appel au fichier YAML dans lequel les différents arguments ont été enregistrés par la Software factory.

Un fichier simplifié est accessible, dans lequel l’équipe projet n’a qu’à modifier trois variables pour lancer un test :

  • Le nom du projet ;
  • Le scénario utilisé ;
  • L’environnement utilisé.

Essayez NeoLoad, la plateforme de test de performance la plus automatisée, conçue pour les entreprises testant continuellement APIs et Applications critiques.