{"id":1893,"date":"2013-04-03T11:30:24","date_gmt":"2013-04-03T09:30:24","guid":{"rendered":"http:\/\/www.alpesjug.fr\/?p=1893"},"modified":"2013-04-03T11:30:24","modified_gmt":"2013-04-03T09:30:24","slug":"compte-rendu-de-la-soiree-tests-de-charge-avec-gatling","status":"publish","type":"post","link":"https:\/\/www.alpesjug.fr\/?p=1893","title":{"rendered":"Compte rendu de la soir\u00e9e Tests de charge avec Gatling"},"content":{"rendered":"<p>Un petit probl\u00e8me de salle, nous a fait d\u00e9couvrir les magnifiques locaux de Col&rsquo;In.Et donc au au final, \u00e7a c&rsquo;est bien pass\u00e9 !<br \/>\nLa pr\u00e9sentation s&rsquo;est d\u00e9roul\u00e9e en trois parties :<\/p>\n<ul>\n<li>St\u00e9phane fait des rappels sur les tests de charge, performance, stress &#8230;<\/li>\n<li>pr\u00e9sentation Gatling en duo avec Pierre<\/li>\n<li>une session de questions \/ r\u00e9ponses et d\u00e9monstration imm\u00e9diate par le code<\/li>\n<\/ul>\n<p  style=\" margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;\">   <a title=\"View Gatling, faites tomber la foudre on Scribd\" href=\"http:\/\/www.scribd.com\/doc\/133776236\/Gatling-faites-tomber-la-foudre\"  style=\"text-decoration: underline;\" >Gatling, faites tomber la foudre<\/a><\/p>\n<p><iframe loading=\"lazy\" class=\"scribd_iframe_embed\" src=\"http:\/\/www.scribd.com\/embeds\/133776236\/content?start_page=1&#038;view_mode=scroll\" data-auto-height=\"false\" data-aspect-ratio=\"undefined\" scrolling=\"no\" id=\"doc_8045\" width=\"100%\" height=\"600\" frameborder=\"0\"><\/iframe><\/p>\n<h2>Ce qu&rsquo;on a particuli\u00e8rement retenu<\/h2>\n<ol>\n<li><strong>L\u2019insoup\u00e7onn\u00e9e influence du [ISP]aaS sur les tests de charge:<br \/>\n<\/strong>C&rsquo;est fini le temps du serveur surdimensionn\u00e9 qu&rsquo;on budg\u00e8te pour le projet. Aujourd&rsquo;hui, avec la location de services, la facture vous rappelle chaque mois que des tests de charges pourraient vous faire gagner de l&rsquo;argent !<br \/>\n<a href=\"http:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.54.50.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.54.50-300x225.jpg\" alt=\"St\u00e9phane Landelle\" title=\"St\u00e9phane Landelle\" width=\"300\" height=\"225\" class=\"alignright size-medium wp-image-1920\" srcset=\"https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.54.50-300x225.jpg 300w, https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.54.50-1024x768.jpg 1024w, https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.54.50-150x112.jpg 150w, https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.54.50-400x300.jpg 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>Le Green-IT est aussi un bon argument pour ces tests.<\/li>\n<li><strong>L&rsquo;effet \u00ab\u00a0intervention ext\u00e9rieure\u00a0\u00bb.<\/strong><\/li>\n<\/ol>\n<p>Oui, c&rsquo;est souvent ce qu&rsquo;il faut pour se rendre-compte que la dette technique est partie \u00e0 la d\u00e9rive.<br \/>\nDonc avant m\u00eame de d\u00e9marrer les tests de charge, il faut s&rsquo;assurer que le frein \u00e0 main est desserr\u00e9:<\/p>\n<ul>\n<li>Regarder ce qui se passe sur le client (Javascript, utiliser Firebug, PageSpeed Insight &#8230;)<\/li>\n<li>Regarder sur le serveur : VisualVM, loguer les requ\u00eates SQL &#8230;<\/li>\n<\/ul>\n<p><em>D&rsquo;un autre cot\u00e9, cela peut \u00eatre l&rsquo;occasion de pr\u00e9senter des am\u00e9liorations de 200%, l\u00e0 o\u00f9 la plupart des projets sont contents de gagner 10%.<\/em><\/p>\n<p>Le projet Gatling est sous une licence Apache tr\u00e8s libre. Ainsi, certaines soci\u00e9t\u00e9s proposent des services de tests de charge en embarquant du Gatling sous le capot.<br \/>\nLe projet est n\u00e9 d&rsquo;un r\u00e9el besoin de consultant r\u00e9alisant des prestations de tests de charge. JMeter a ses limites et avait jusqu&rsquo;\u00e0\u00a0 peu gu\u00e8re de concurrents s\u00e9rieux.<br \/>\nDonc, il y a un an et demi environs, naissance du projet avec 4 points cl\u00e9s:<\/p>\n<ul>\n<li>Asynchrone<\/li>\n<li>Sortir du paradigme 1 utilisateur =\u00a0 1 thread<\/li>\n<li>IO non bloquantes<\/li>\n<li>du texte ! \u00ab\u00a0Un DSL oui, du XML \u00e9ditable \u00e0 travers une interface ad-hoc non !\u00a0\u00bb<\/li>\n<\/ul>\n<p><div id=\"attachment_1923\" style=\"width: 310px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.46.22.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1923\" src=\"http:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.46.22-300x225.jpg\" alt=\"Pierre Dal-pra\" title=\"Pierre Dal-pra\" width=\"300\" height=\"225\" class=\"size-medium wp-image-1923\" srcset=\"https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.46.22-300x225.jpg 300w, https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.46.22-1024x768.jpg 1024w, https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.46.22-150x112.jpg 150w, https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2013\/04\/2013-03-04-19.46.22-400x300.jpg 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1923\" class=\"wp-caption-text\">Pierre Dal-pra<\/p><\/div>Pour l\u2019impl\u00e9mentation, Play! semble avoir \u00e9t\u00e9 une source d&rsquo;inspiration, l&rsquo;\u00e9quipe a donc choisit Scala, le mod\u00e8le Actors et DSL. Puissant \u00e0 l&rsquo;int\u00e9rieur, simple \u00e0 l&rsquo;ext\u00e9rieur.<br \/>\nL&rsquo;API est tr\u00e8s bien pens\u00e9e, Gatling est utilis\u00e9 pour des tests de charge sur HTTP, mais d\u00e8s le d\u00e9part, il a \u00e9t\u00e9 con\u00e7u \u00ab\u00a0protocol agnostique\u00a0\u00bb et donc il existe des modules pour d&rsquo;autres protocoles (h\u00e9las pas disponibles en opensource).<br \/>\nC&rsquo;est d&rsquo;ailleurs sans doute la force de l&rsquo;outil d&rsquo;avoir d\u00e9coupl\u00e9 le DSL, les API et le moteur d\u2019ex\u00e9cution. Cela lui donne beaucoup de marge de progression : il sera possible de remplacer certaines parties sans tout casser.<br \/>\nPar exemple passer de Netty \u00e0 Spray, utiliser le support du clustering d&rsquo;Akka et surtout \u00e9crire des \u00ab\u00a0drivers\u00a0\u00bb pour d&rsquo;autres protocoles: JDBC, LDAP, WebSockets &#8230; et m\u00eame pour des API Java.<\/p>\n<p>L&rsquo;id\u00e9al en terme d&rsquo;outils de tests de charge HTTP serait bien s\u00fbr d&rsquo;\u00e9muler le navigateur. C&rsquo;est l&rsquo;approche de S\u00e9lenium pour les tests fonctionnels. Mais comment passer \u00e0 l&rsquo;\u00e9chelle pour des milliers de navigateurs ? Bien que les performances s&rsquo;am\u00e9liorent pour les outils simulant les navigateurs, mais elles suffisent \u00e0 peine \u00e0 couvrir l&rsquo;\u00e9volution des sites web. Combien d&rsquo;onglets ouverts avant que votre machine ne soit \u00e0 la ramasse: 20 ? 30 ?<br \/>\n<strong>Donc on n\u2019\u00e9chappera pas \u00e0 Gatling.<\/strong><\/p>\n<p>Une question r\u00e9currente avec les tests concerne la maintenance. En quelques jours l&rsquo;\u00e9quipe de developpement peut ruiner des mois de travail. Quelque soit l&rsquo;outil, il existe des solutions simples.<br \/>\nNe pas laisser pourrir la situation:<br \/>\n&#8211; int\u00e9grer les tests de charge au processus de CI. Sans forcement bourriner le serveur, il suffit d&rsquo;une ex\u00e9cution pour v\u00e9rifier que le sc\u00e9nario passe.<br \/>\n&#8211; dans le cadre d&rsquo;une \u00e9quipe agile, les tests de charge ne sont pas isol\u00e9, s\u00e9par\u00e9 du reste des d\u00e9veloppeurs. Ca tombe bien, c&rsquo;est du code, il est versionn\u00e9 comme du code, c&rsquo;est d\u00e9veloppeurs friendly. (Pas clickodrome \u00e0 la JMeter).<\/p>\n<p>Ensuite le DSL de Gatling permet de factoriser les sc\u00e9narios de tests. Une proc\u00e9dure de login ne s&rsquo;\u00e9crit qu&rsquo;une fois. En \u00e9vitant les r\u00e9p\u00e9titions, en utilisant des identifiants clairs, comme \u00ab\u00a0#id-button-ok\u00a0\u00bb au lieu de \u00ab\u00a0\/\/div\/form[7]\/input[3]\u00a0\u00bb, on peut au moins limiter les d\u00e9g\u00e2ts.<\/p>\n<p>Et comme ces questions am\u00e8nent forc\u00e9ment \u00e0 parler de DevOps : mention sp\u00e9ciale \u00e0 Henry Gomez qui n&rsquo;\u00e9tait pas l\u00e0, malheureusement pour recueillir ses \u00e9loges.<\/p>\n<p>Grand merci pour cette conf\u00e9rence \u00e0 la fois proche du terrain et utilisant des techno de pointe.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un petit probl\u00e8me de salle, nous a fait d\u00e9couvrir les magnifiques locaux de Col&rsquo;In.Et donc au au final, \u00e7a c&rsquo;est bien pass\u00e9 ! La pr\u00e9sentation s&rsquo;est d\u00e9roul\u00e9e en trois parties : St\u00e9phane fait des&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[156,53,157,366,33],"class_list":["post-1893","post","type-post","status-publish","format-standard","hentry","category-compte-rendu","tag-gatling-tool","tag-opensource","tag-performance","tag-slides","tag-test"],"_links":{"self":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1893"}],"version-history":[{"count":20,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1893\/revisions"}],"predecessor-version":[{"id":1924,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1893\/revisions\/1924"}],"wp:attachment":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}