Spoiler : eBusiness Information développe Gatling

Késako?

Gatling est un projet open-source sponsorisé par eBusiness Information.
Il s’agit d’un outil de stress d’application nouvelle génération, visant à être beaucoup plus performant que les standards du marché.

L’origine du commencement

L’idée de ce projet est venue d’une frustration accumulée au cours de mes projets lorsqu’il s’agissait de réaliser des tests de charge. Impossible de trouver un outil satisfaisant.
Quelques exemples vécus :

  • “On ne va pouvoir tirer que 3 fois car on paie la licence LoadRunner au tir et ça coûte un rein!”
  • “La css a changé, plus aucune de nos regex ne marche et il va falloir repasser sur tous nos scripts via l’interface-clicodrôme de JMeter”
  • “Le sous-traitant a choisi de tester avec OpenSTA et maintenant il faut monter des VM avec des Windows”
  • “JMeter monte mal en charge (un comble) si bien qu’il faut monter des clusters pour pouvoir simuler 3000 utilisateurs et les monitorer afin de contrôler que ce n’est pas eux qui galèrent plutôt que l’appli”
  • “TheGrinder plante à grand coups de fuites mémoire, et à débugger quand on n’est pas un Python fan boy, ça n’a rien d’évident…”

Pour synthétiser, il m’aurait fallu une solution :

  • open-source, et donc installable et testable sans avoir à se faire harceler par un commercial pour récupérer une licence d’évaluation ou même juste avoir accès à la documentation
  • portable et qui s’appuie sur un socle “standard” qui ne fera pas bondir les équipes d’exploitation, typiquement une JVM
  • dont les scripts soient écrits dans un vrai langage de programmation, avec une API ouverte, et qu’il va donc être possible de gérer en configuration avec les sources de l’application stressée, et non pas des tartines de XML illisible par un humain
  • optimisée en termes de gestion des I/O : utiliser des I/O non bloquantes plutôt que d’attendre patiemment les réponses
  • optimisée en termes de gestion des threads et en finir avec ce paradigme “1 user = 1 thread” si largement répandu : tous le monde sait qu’entre la mémoire occupée par les stacks et le context switching, une JVM n’est pas faite pour faire tourner des centaines de threads, et encore moins des milliers!

Ne trouvant pas mon bonheur répondant à ce cahier des charges, il ne restait qu’une solution : la développer!

Du côté de la technique

Chose appréciable : les solutions cherchant à tirer parti des multicores et les frameworks d’I/O non bloquantes se sont multipliés ces dernières années, inutile donc de réinventer la roue.
Gatling s’appuie donc sur les technologies suivantes :

  • AsyncHttpClient + Netty pour la couche HTTP asynchrone
  • Akka pour l’orchestration des traitements
  • Scala pour la réalisation du moteur, du DSL et l’interprétation des scripts

Exemple

Les scripts Gatling sont écrit en Scala. L’API se veut ouverte pour faciliter le développement d’extensions. Cependant, inutile d’être un expert Scala, le DSL rend l’écriture de scripts très accessible. Voici un exemple très simple :

1
2
3
4
5
6
7
8
9
val sc = scenario("Test")
        .doHttpRequest(
            "Excilys Labs",
            get("http://labs.excilys.com"),
            checkRegexpEquals("<title>(.*)</title>","Excilys Labs"))

val scConfiguration = configureScenario(sc) withUsersNumber 1

runSimulations(scConfiguration)

Avancement

A ce jour, le moteur et le DSL sont opérationnels, et les tests comparatifs Gatling vs JMeter, aussi bien à très forte charge (plusieurs dizaines de milliers de users) que dans des conditions courantes (environ 400 transactions/sec) donnent Gatling vainqueur par KO.

Les prochaines semaines vont être consacrées à la génération des rapports, au développement d’un composant d’aide à la création des scripts, et la rédaction de la documentation.
L’idée est de stabiliser l’API et le DSL et de sortir une version stable courant novembre.

Pour plus d’information, vous pouvez nous suivre sur Github : http://github.com/excilys/gatling

PS

Le projet est actuellement développé par Romain Sertelon et moi-même, avec un renfort de Yassine Ben Khaled, Hugo Cordier et Nicolas Maupu (un grand bravo et merci à tous au passage!).
Nous sommes preneurs de coups de main, de retours et de bonnes idées, à bon entendeur…

VN:R_U [1.9.22_1171]
Rating: +1 (from 1 vote)
Share
Ce contenu a été publié dans Non classé. Vous pouvez le mettre en favoris avec ce permalien.

Une réponse à Spoiler : eBusiness Information développe Gatling

  1. Ce spoiler fait en plus office de teaser, j’aime :D

    Gatling FTW :D

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)

Laisser un commentaire