Pages

Thursday, February 11, 2010

Bench de framework web service java : Axis2 vs Cxf vs Spring ws

C'est quoi un framework web service? :
Les frameworks web service java ont pour objectif de s'affranchir des problématiques techniques liées à la mise en oeuvre d'un web service pour permettre de se concentrer sur le traitement qui doit être réalisé par celui-ci et de simplifier son appel. Dans les grandes lignes, ils permettent :
  • coté client : de générer les classes à partir d'un WSDL permettant de créer une grappe d'objet correspondant au message SOAP du web service de façon transparente.
  • coté serveur : de récupérer une requête HTTP SOAP, de transformer le contenu du message en une grappe d'objets, d'appeler une méthode java correspondant à la requête puis de récupérer l'objet en retour de l'appel de la méthode et de le transformer en réponse HTTP SOAP.
Plusieurs méthodes de développement sont associées à ces frameworks :
  • Contract first : définir un contrat d'échange et ensuite de s'appuyer sur ce contrat pour développer le service à l'aide du framework.
  • Code first : développer un service java et ensuite s'appuyer sur le framework pour qu'il expose la méthode sous forme de web service.
Ces deux méthodes font débats et je ne vais pas m'attarder dessus dans le cadre de ce bench dont ce n'est pas l'objet. J'y reviendrai peut être dans un autre billet...

Les frameworks testés :
Je me suis attardé sur les frameworks les plus connus :
Objectif du bench:
L'objectif du bench est de mesurer le temps passé dans les couches techniques des frameworks web services en dehors du réel traitement que doit effectuer le web service et cela différent niveau de charge. Le tout est de pouvoir mesurer l'overhead engendré par les frameworks web services par rapport à un appel direct de méthode en java et de comparer cet overhead. Le bench se focalise sur les temps de traitements coté serveur :


Caractéristiques du bench :
  • les web services exposés :
J'ai mis en place le même web service avec les 3 frameworks dans 3 webapps indépendantes. Les temps de réponses sont mesurés coté client. Pour que les temps de réponse coté client correspondent à l'overheard technique coté serveur, le traitement métier est inexistant : Le service java ne fait que renvoyer l'objet récupérer en paramètre :


La requête en entrée ainsi que la réponse en retour sont représentatifs d'un "vrai" web service (dans le sens ou ce n'est pas un simple hello world) : 
    • 60 données unitaires
    • 3 niveaux de profondeur
    • requête SOAP de 3.75 Ko
  • Du coté du client :
J'ai mis en oeuvre un injecteur http maison multithreadé et basé sur commons-httpclient qui envoie directement la requête SOAP prédéfinies et mesure les temps de réponse. J'ai d'abord fait des tests avec SoapUI en local sur mon poste mais je ne voulais pas "pollué" les résultats en saturant le poste client et j'ai donc décidé de mesurer les temps de réponse client à partir d'un serveur plus puissant que mon poste et dédié au bench.
  • Du coté du serveur :
J'ai déployé les 3 webapps dans un JBoss 5.1.0 "out of the box" s'appuyant sur une JVM Sun 1.6.0_18. J'ai simplement augmenté la taille de la JVM.



  • procédure du bench :
J'ai monté en charge les uns après les autres chacun des web services exposés avec : 10, 50 et 100 clients (threads) simultanés effectuant chacun 2000 appels. Le test est répété 4 fois pour vérifier la stabilité des temps  de réponse sur plusieurs essais.

Résultats :




Voici le tableau détaillé : 

Dans le cadre de ce bench, CXF est donc le framework le plus performant suivi d'assez prêt par Spring ws. Axis2 est clairement moins performant indépendamment du niveau de charge coté serveur.

Conclusion :
J'ai été confronté à quelques problèmes de déploiement sur JBoss à cause de librairies utilisées à la fois par les frameworks et par JBoss avec Axis2 et Spring ws. Sur cet aspect là, la communauté et la documentation autour de Spring permettent de résoudre rapidement le problème alors que pour Axis2, il a fallu creuser un peu plus.

Tuesday, February 9, 2010

JBoss : permettre les accès distants

Depuis la version 4.2  de JBoss, la configuration de l'accès aux services réseaux est mappé sur le 127.0.0.1 (la machine en local). Cela rend JBoss complètement hermétique à toutes connexions distantes à ses services. Cette nouvelle configuration a pour objectif de sécuriser le JBoss.

Pour autoriser des accès distants au services de JBoss,  il faut alors démarrer le serveur l'option -b en précisant l'ip que vous désirez autoriser.

Voici la commande de lancement pour autoriser toutes les ips (qui est la configuration par défaut des versions antérieures de JBoss) :
run.sh -b 0.0.0.0

Friday, October 16, 2009

Formation certifiante Scrum Master avec Jeff Sutherland

J'ai participé à la formation certifiante Scrum Master du 1er et 2 Octobre dernier organisé par Xebia à Paris La Défense avec Monsieur Jeff Sutherland (le papa de Scrum).

Je ne peux que trop vous conseiller de faire cette formation!

J'étais déjà convaincu par ce peut apporter Scrum (couplé avec XP par exemple), et après la formation, ça ne s'est pas arrangé.

Il faut par contre, à mon avis avoir, déjà débroussailler le terrain sur Scrum et les grands concepts pour assister à cette formation. Je vous conseille par exemple : "Scrum and Xp From the trenches" de Henrik Kniberg. C'est une bonne première approche. Le livre est disponible gratuitement en version numérique. Prenez la version original en anglais, ça vous aidera aussi si vous voulez assister à la formation qui est en anglais :-).

Pour en revenir à la formation, Jeff ne s'attarde pas plus que ça sur les grands concepts en début de formation. Il les aborde tout au long de la formation. En revanche, il insiste plus sur ces retours d'expériences et sur le fait que cette méthode, pardon ce framework, est sacrément efficace. Jeff est un bon évangéliste sur le sujet :-). Les références sont quand même Google, Apple ainsi que de très grand groupe.

J'ai bien aimé la partie concernant les projets en échecs et qui disent utiliser Scrum et qui en grattant très légèrement ne l'utilise pas vraiment, voir pas du tout.


J'ai bien aimé le planning poker avec l'application sur mon Iphone :-). C'est totalement "In".

J'ai bien aimé le léger focus sur le rôle de Product Owner qui est très très très important.
Il nous a d'ailleurs posé la question : "Who is the best Product Owner in the World?" la réponse ici. J'adore...

J'ai bien aimé enfin le fait qu'on ai réellement le temps de poser toute nos questions. pas de langue de bois.

Les mises en situation tout au long des 2 jours de la formation sont très intéressantes. Le XP game en fin de formation est top.

La prochaine session en France est normalement prévu le 3 et 4 décembre 2009. Vous trouverez plus de détails ici.

J'ai rarement vu une formation où tout le monde veut prendre sa petite photo avec le formateur à la fin de la formation. C'est peut être une preuve de la qualité de la formation... ou pas... bon ok j'ai été faible, j'ai la mienne aussi...



Bon maintenant le problème, c'est que je ne vois pas comment je vais faire rentrer Scrum chez mon client autrement qu'en allant voir le CEO :-).

Le ch'ti Jug du 21 Septembre

Avec un peu de retard, mais il vaut mieux tard que jamais, voici un petit retour sur le Ch'ti Jug du 21 Septembre sur Bean validation et Hibernate Search.


La salle était pleine malgré le lieu de la session (assez éloigné du centre de Lille...).

Je ne suis pas forcément très objectif sur la qualité de cette session vu que je faisais partie des organisateurs coté Norsys. Voici en revanche un retour d'Arnaud Bailly sur la session sur son blog.

La soirée s'est poursuivie par le petit coup à boire classique de fin de session et par un resto sur Lille pour les irréductibles :

Les slides de la présentations sont disponibles sur le blog du cht'ti Jug ici.

La session a été filmée par Arnaud Buisine (qui a passé pas mal d'heures aussi sur le montage...). Voici la vidéo en preview :


Je tenais à remercier Emmanuel pour la qualité de sa présentation. Ainsi que Didier, Tom, Pascal, Mathilde et Denis pour leur aide précieuse!

ps : Servir de la bière à partir d'une pompe à bière à 5 bar de pression dans des gobelets en plastique, c'est très très sport :-)

Monday, September 7, 2009

Ch'ti Jug : session du 21 Septembre

Ca y est les inscriptions pour la session du Ch'tiJug hébergée par Norsys sont ouvertes!
http://chtijug.org/session-21-septembre-hibernate-search-validation-norsys/

C'est effectivement Emmanuel Bernard, leader technique chez JBoss sur Hibernate Annotations, Hibernate EntityManager, Hibernate Search et Validator, qui animera la présentation.

Si vous désirez y participer, n'hésitez pas à vous inscrire assez rapidement car les places sont limitées et ont l'air de partir assez vite...