Stage R&D Gatling

 

[fusion_builder_container hundred_percent="no" equal_height_columns="no" menu_anchor="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id="" background_color="" background_image="" background_position="center center" background_repeat="no-repeat" fade="no" background_parallax="none" parallax_speed="0.3" video_mp4="" video_webm="" video_ogv="" video_url="" video_aspect_ratio="16:9" video_loop="yes" video_mute="yes" overlay_color="" video_preview_image="" border_size="" border_color="" border_style="solid" padding_top="" padding_bottom="" padding_left="" padding_right=""][fusion_builder_row][fusion_builder_column type="1_1" layout="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" border_position="all" spacing="yes" background_image="" background_repeat="no-repeat" padding_top="" padding_right="" padding_bottom="" padding_left="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="small-visibility,medium-visibility,large-visibility" center_content="no" last="no" min_height="" hover_type="none" link=""][fusion_text columns="" column_min_width="" column_spacing="" rule_style="default" rule_size="" rule_color="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id=""]

 

Présentation

 

          Je m'appelle Amaury Vandemoortele et je suis venu faire de la R&D à Aukfood dans le cadre de mon stage de fin d'année de ma première année à l'EPSI. Mes recherches concernaient Gatling, qui est un outil open-source créé en 2011 et sortie pour la première fois en janvier 2012, téléchargé plus de 3 millions de fois et est utilisé par cent mille entreprises sur une base régulière. Il permet d'effectuer des tests de charges sur des applications  dans un environnement CI/CD. Gatling est spécialisé dans le protocole http/https, mais il n'est pas limite pas à celui-la, il peut prendre également en charge WebSockets, JMS ou MQTT. Il existe également une version entreprise de Gatling : Gatling Frontline, qui possède des avancées d’analyses, d’intégrations et d’automatisation pour les tests de charge dans la « DevOps ère ».

 

Test de Charge

 

          Gatling effectue donc des tests de charge pour pouvoir mesurer les performances d'un site. Mais qu'est-ce que c'est que des tests de charges ? Un test de charge consiste à effectuer un test permettant de mesurer la performance d’un système en fonction de la charge d’utilisateurs simultanées. L’objectif est de prévoir la charge maximale que peut encaisser votre SI. Il permet également de mettre en évidence les points de vigilances du système, de les corriger et enfin de valider les performances du SI, d’un logiciel ou encore d’un site web. Gatling n'utilise pas de thread dédié pour simuler ses utilisateurs mais des messages, ce qui le rend beaucoup plus performant.

 

Avantage et Inconvénient

 

         JMETER est l’alternative à Gatling la plus populaire. Il est également open-source mais étant plus vieux il possède plus d’expérience et une plus grande communauté ainsi que beaucoup plus de soutiens et d’informations que Gatling (ex : Tutoriels, documentations). JMeter prend en charge des centaines de plugins tiers et est capable de gérer des protocoles que Gatling ne prends pas en charge comme TCP, FTP, JDBC. Cependant cet outil ne peut être utilisé qu’avec une interface utilisateur et est moins efficace pour des tests de charge à grande échelle ou en continu.

 

Prérequis

 

          L'utilisation première de Gatling, qui permet d'effectuer une simulation sur un site internet, nécessite JDK 8 (et rien d'autre) et la configuration des variables d'environnement de java. Pour utiliser Gatling dans un environnement CI/CD, il faut se munir de, soit Maven, soit SBT ou soit Gradle (note : avec GitLab ou Jenkins, il n'y en aura pas besoin en local, idem pour JDK 8). Et pour faire son propre scénario, une IDE doit être utilisé, Gatling support IntelliJ et Eclipse.

 

Démarrage rapide de Gatling

 

          On va procéder à un démarrage rapide de Gatling, c'est-à dire que l'on va enregistrer notre comportement sur un site puis le simuler pour pouvoir collecter les données de cette simulation. Il faut commencer par installer et configurer JDK 8. Une fois téléchargé, il faudra : l'extraire et l'installer :

[/fusion_text][fusion_syntax_highlighter theme="" language="x-sh" line_numbers="" line_wrapping="" copy_to_clipboard="" copy_to_clipboard_text="Copy to Clipboard" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id="" font_size="11" border_size="" border_color="" border_style="" background_color="#dddddd" line_number_background_color="" line_number_text_color="" margin_top="" margin_left="" margin_bottom="" margin_right=""]dGFyIC16eHZmIGpkay04dTIxMS1saW51eC14NjQudGFyLmd6CnN1ZG8gbXYgamRrKiAvdXNy[/fusion_syntax_highlighter][fusion_text columns="" column_min_width="" column_spacing="" rule_style="default" rule_size="" rule_color="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id=""]

 

          Puis installez-le :

[/fusion_text][fusion_syntax_highlighter theme="" language="x-sh" line_numbers="" line_wrapping="" copy_to_clipboard="" copy_to_clipboard_text="Copy to Clipboard" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id="" font_size="11" border_size="" border_color="" border_style="" background_color="#dddddd" line_number_background_color="" line_number_text_color="" margin_top="" margin_left="" margin_bottom="" margin_right=""]c3VkbyB1cGRhdGUtYWx0ZXJuYXRpdmVzIC0taW5zdGFsbCAvdXNyL2Jpbi9qYXZhIGphdmEgL3Vzci9qZGsxLjguKi9iaW4vamF2YSAz[/fusion_syntax_highlighter][fusion_text columns="" column_min_width="" column_spacing="" rule_style="default" rule_size="" rule_color="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id=""]

 

          Pour être sûr qu'il s'agit de la bonne version :

[/fusion_text][fusion_syntax_highlighter theme="" language="x-sh" line_numbers="" line_wrapping="" copy_to_clipboard="" copy_to_clipboard_text="Copy to Clipboard" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id="" font_size="11" border_size="" border_color="" border_style="" background_color="#dddddd" line_number_background_color="" line_number_text_color="" margin_top="" margin_left="" margin_bottom="" margin_right=""]amF2YSAtdmVyc2lvbg==[/fusion_syntax_highlighter][fusion_text columns="" column_min_width="" column_spacing="" rule_style="default" rule_size="" rule_color="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id=""]

 

          S’il ne s'agit pas la bonne version, sélectionnez la :

[/fusion_text][fusion_syntax_highlighter theme="" language="x-sh" line_numbers="" line_wrapping="" copy_to_clipboard="" copy_to_clipboard_text="Copy to Clipboard" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id="" font_size="11" border_size="" border_color="" border_style="" background_color="#dddddd" line_number_background_color="" line_number_text_color="" margin_top="" margin_left="" margin_bottom="" margin_right=""]c3VkbyB1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tY29uZmlnIGphdmE=[/fusion_syntax_highlighter][fusion_text columns="" column_min_width="" column_spacing="" rule_style="default" rule_size="" rule_color="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id=""]

 

          Enfin, configurez les variables d'envrionnements :

[/fusion_text][fusion_syntax_highlighter theme="" language="x-sh" line_numbers="" line_wrapping="" copy_to_clipboard="" copy_to_clipboard_text="Copy to Clipboard" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id="" font_size="11" border_size="" border_color="" border_style="" background_color="#dddddd" line_number_background_color="" line_number_text_color="" margin_top="" margin_left="" margin_bottom="" margin_right=""]ZXhwb3J0IFBBVEg9JFBBVEg6L3Vzci9qZGsxLjguMF8yMTEvYmluCmV4cG9ydCBKQVZBX0hPTUU9L3Vzci9qZGsxLjguMF8yMTEKZXhwb3J0IEpSRV9IT01FPS91c3IvamRrMS44LjBfMjExL2pyZS8KZXhwb3J0IEoyU0RLRElSPS91c3IvamRrMS44LjBfMjExCmV4cG9ydCBKMlJFRElSPS91c3IvamRrMS44LjBfMjExL2pyZQ==[/fusion_syntax_highlighter][fusion_text columns="" column_min_width="" column_spacing="" rule_style="default" rule_size="" rule_color="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id=""]

 

          Avant d'utiliser Recorder, il va falloir paramétrer le proxy du navigateur utilisé pour que Gatling puisse l'écouter. Pour ce faire il faut aller dans les paramètre du navigateur, sur Firefox par exemple, rechercher "proxy". Une fois dans les paramètres du proxy, configurer de tel sorte à ce que le HTTP proxy soit : "127.0.0.1" et le port : "8000", et qu'il soit utilisé pour tous les autres protocoles.

 

          Lancer ensuite Recorder de Gatling qui se situe $GATLING_HOME/bin/recorder.sh, une interface utilisateur devrait apparaître, elle doit être remplie comme celle ci-dessous (à gauche) :

[/fusion_text][fusion_gallery layout="" picture_size="" columns="2" column_spacing="10" gallery_masonry_grid_ratio="" gallery_masonry_width_double="" hover_type="" lightbox="yes" lightbox_content="" bordersize="" bordercolor="" border_radius="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id=""][fusion_gallery_image image="https://www.aukfood.fr/wp-content/uploads/2019/06/Recorder_compléter-300x279.png" image_id="17983|medium" link="" linktarget="_self" /][fusion_gallery_image image="https://www.aukfood.fr/wp-content/uploads/2019/06/Recorder_Verso-300x224.png" image_id="17984|medium" link="" linktarget="_self" /][/fusion_gallery][fusion_text columns="" column_min_width="" column_spacing="" rule_style="default" rule_size="" rule_color="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id=""]

 

 

          Une fois la configuration terminé, lancer Recorder avec le bouton "Start!" en bas à droite. Puis entrer l'URL du site à tester dans le cadre "TAG:" (image ci-dessus à gauche). Pour l'exemple, on utilisera l'URL suivante : http://computer-database.gatling.io/computers. Suivre les étapes suivantes puis arrêter la simulation avec le bouton : "Stop & Save" :

[/fusion_text][fusion_syntax_highlighter theme="" language="txt" line_numbers="" line_wrapping="" copy_to_clipboard="" copy_to_clipboard_text="Copy to Clipboard" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id="" font_size="11" border_size="" border_color="" border_style="" background_color="#dddddd" line_number_background_color="" line_number_text_color="" margin_top="" margin_left="" margin_bottom="" margin_right=""]QWxsZXogc3VyIGxlIHNpdGUgd2ViOiBodHRwOi8vY29tcHV0ZXItZGF0YWJhc2UuZ2F0bGluZy5pbwpSZWNoZXJjaGVyIGRlcyBtb2TDqGxlcyBhdmVjICJtYWNib29rIiBkYW5zIGxldXIgbm9tLgpTw6lsZWN0aW9ubmV6ICJNYWNib29rIHBybyIuClJldG91cm5leiDDoCBsYSBwYWdlIGQnYWNjdWVpbC4KSXTDqHJlciBwbHVzaWV1cnMgZm9pcyBkYW5zIGxlcyBwYWdlcyBkdSBtb2TDqGxlIGVuIGNsaXF1YW50IHN1ciBsZSBib3V0b24gU3VpdmFudCAuCkVudHJleiBsYSBiYWxpc2UgJ0VkaXQnLgpDbGlxdWV6IHN1ciBBam91dGVyIHVuIG5vdXZlbCBvcmRpbmF0ZXVyIC4KUmVtcGxpciBsZSBmb3JtdWxhaXJlLgpDbGlxdWV6IHN1ciBDcsOpZXIgY2V0IG9yZGluYXRldXIgLg==[/fusion_syntax_highlighter][fusion_text columns="" column_min_width="" column_spacing="" rule_style="default" rule_size="" rule_color="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id=""]

 

          Une fois la simulation enregistré, elle peut être testée grâce à Gatling, lancer le script $GATLING_HOME/bin/gatling.sh (ne le faites pas en root sinon ça risque de ne pas marcher). Vous devriez voir des simulations apparaître comme ci-dessous :

[/fusion_text][fusion_imageframe image_id="17993|medium" max_width="" style_type="" blur="" stylecolor="" hover_type="none" bordersize="" bordercolor="" borderradius="" align="center" lightbox="no" gallery_id="" lightbox_image="" lightbox_image_id="" alt="" link="" linktarget="_self" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id="" animation_type="fade" animation_direction="left" animation_speed="1.0" animation_offset="top-into-view"]https://www.aukfood.fr/wp-content/uploads/2019/06/Capture-300x82.png[/fusion_imageframe][fusion_text columns="" column_min_width="" column_spacing="" rule_style="default" rule_size="" rule_color="" hide_on_mobile="small-visibility,medium-visibility,large-visibility" class="" id=""]

 

 

          Sélectionnez "[6] computerdatabse.MaSimulation". Une fois celle-ci terminé, ouvrez les rapports présentant les résultats (sous forme de fichier .html) à l'endroit indiqué. Elle sera normalement dans le répertoire $GATLING_HOME/results .

 

          Bravo ! Vous savez maintenant enregistrer une simulation et en récupérer les données !

 

Conclusion du Stage

 

          Pendant ce stage j'ai appris plusieurs choses. La première est tous simplement le travail dans le monde de l'entreprise avec la philosophie du logiciel libre ainsi que le respect en espace de coworking. J'ai gagné de l'autonomie et je me suis amélioré pour rechercher par moi-même les réponses à mes questions. Je sais maintenant ce qu'est un environnement CI/CD, comment ça fonctionne et pourquoi l'utiliser. J'ai également appris à utiliser Gatling, GitLab et Jenkins. Ce stage m'a aussi permis de rencontrer une équipe joyeuse et passionnée possédant une très bonne ambiance de travail avec laquelle il est très agréable de travailler. 

Retrouvez-moi sur mes réseaux LinkedIn et Twitter

[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]