Nous avons déjà eu le plaisir d’annoncer sur ce blog que nous figurions parmi les trois équipes finalistes. Et nous sommes fiers d’annoncer que l’équipe Xebia, menée par Julien Buret et Séven Le Mesle, a remporté, mardi dernier, lors de l’USI, le challenge « Et si vous codiez une application qui supporte 1 milliard d’utilisateurs ? ».
Nous sommes certes restés loin du milliard… Mais sur 10 Vms (le challenge devait aboutir à un portage sur 100 vms, qui n’a pu être réalisé, faute de temps), l’application de quizz développée pour l’occasion offrait toujours des temps de réponses acceptables avec plus de 200 000 utilisateurs simultanés (des problèmes d’infrastructure ont empêché de monter la charge plus avant).
L’équipe Jaxio & Friends, ainsi que l’équipe Avricot (2 étudiants branchés C) complètent le podium.
Ce challenge donnera lieu à une rétrospective complète lors d’une soirée du Paris Jug, à la rentrée. Néanmoins, nous pouvons d’ores et déjà révéler certains choix architecturaux qui ont permis d’atteindre ces performances. Tout d’abord, fidèles à notre « ADN », l’application a été développée 100% en Java. Pour le reste, voici quelques uns des choix que nous avons faits :
- un frontal NIO, utilisant Netty. Etant données les contraintes du challenge, une architecture non bloquante était une nécessité. Après un phase d’intense prototypage, Netty est ressorti comme le serveur NIO répondant le mieux à nos besoins en terme d’utilisateurs simultanés et de temps de réponse. Les points qui nous ont fait pencher en sa faveur sont nombreux (100% Java, mise en œuvre simple et rapide, code source disponible et compréhensible, documentation correcte). Nous aurons l’occasion de développer ce choix et les différentes expérimentations que nous avons mené dans un article ultérieur.
- un cache et une persistance distribués reposant sur le produit commercial Gemfire, fournis dans les instances vFabric de VmWare. En utilisant Gemfire en mode peer-to-peer, la persistance et la distribution des données sont gérées de manière quasi transparente pour le client Java, et l’accès aux données n’est pas plus couteux (en terme de performance comme de complexité) que l’accès à une Map en mémoire.
- un choix de ne pas spécialiser les Vms : chacune des 10 Vms utilisées en phase finale était un clone de notre Vm initiale. Nous avons ainsi gagné en facilité de déploiement, d’administration et de débogage (et donc d’optimisation).
Ce challenge a donc été riche d’enseignements, tant au niveau de la technique (avec la mise en œuvre de produits assez inédits dans les architectures d’entreprise standard) qu’au niveau infrastructure (avec le déploiement sur un large cluster virtualisé).
Mais au delà de ces considérations, c’est avant tout une grande joie d’avoir pu exprimer notre savoir faire face à la crème des javaistes français.
Quelques liens :
Cyrille Le Clerc et Pablo Lopez ont le plaisir de vous inviter Jeudi 14 Avril à 19h00 pour une « Soirée Monitoring d’Applications Java avec le Fondateur et CTO d’AppDynamics » .
Nous avons profité du passage en Europe de Jyoti Bansal pour organiser avec les équipes d’AppDynamics un événement autour du monitoring de la « vraie vie » .
A l’heure où l’architecture des applications d’entreprise devient de plus en plus complexe et distribuée, l’outillage dans le domaine du monitoring et du troubleshooting est un élément clé du système d’information. Notre objectif est que chacun en retire des idées immédiatement applicables et se forge une vision des problématiques que les systèmes de monitoring gèrent aujourd’hui et traiteront demain.
Après avoir consulté des Dev et des Ops des secteurs Telcos, Finance, Retail et Voyage, nous avons établi un programme reprenant des cas de notre vie quotidienne illustrés dans une application transactionnelle de eCommerce « réaliste » (1) que nous avons déployée en cluster sur 5 serveurs Amazon EC2., que nous soumettrons à diverses déconvenues courantes.
Lire la suite de cet article »
3ème épisode de notre série. Il est temps pour notre magnifique application de dépasser la barre symbolique de l’utilisateur unique. Mais comme nous nous sentons confiants et forts, nous allons pousser le vice de passer à, tenez vous bien, 5 utilisateurs concurrents. Et comme certains diraient, « Et là, c’est le drame ». Les temps se dégradent à vitesse grand V.
Lire la suite de cet article »
Suite de nos investigations sur l’application PetClinic dégradée.
Après une première passe qui nous a permis de calibrer les logs de manière un peu plus pertinente, il est temps, toujours sans l’aide du code source, de mettre les mains sous le capot de Tomcat (6.0.20).
Et pour cela, rien de mieux que de jeter de nouveau un œil à notre VisualVm.
Tant de threads pour un seul utilisateur.
Pour (re)commencer, penchons nous sur nos threads, juste après le démarrage du serveur (et donc avant la première connexion d’un utilisateur)
Lorsque l’on démarre un serveur Tomcat, un certain nombre de threads sont affectés à sa ‘tuyauterie’ interne (connecteurs RMI, JMX). Mais de là à avoir 165 threads, il y a certainement un souci quelque part !
Creusons un peu, et entrons dans le détail de ces threads en utilisant l’onglet Threads.
Lire la suite de cet article »

Le premier XKE dans nos nouveaux locaux a donné lieu à de bien curieuses scènes : des bisounours ont hué des poubelles sous le regard moqueur de pokemons ! Et, non, les cartons de déménagement ne nous sont pas tombés sur la tête. Ce n’était là que quelques uns des noms choisis par des équipes de 3 à 4 consultants, qui se sont mesurés dans un concours de tuning de performance, sur une application Java EE standard, buggée (volontairement, pour une fois) par les maîtres de cérémonie, Guillaume Bodet et Cyrille Le Clerc. Tous les participants se sont vus remettre une VM, contenant un Tomcat, une application (PetClinic de Spring, revue et « corrigée ») et des scripts de performance JMeter. Le code source n’a, dans un premier temps, pas été fourni.
Pour tous, un seul but : faire diminuer les temps de réponses de l’application.
Les règles étaient les suivantes :
- Un bug n’est considéré comme trouvé que lorsqu’il a été identifié, qu’un correctif a été proposé et que la preuve est faite que ce correctif permet d’améliorer significativement les temps de réponse.
- Il existe trois niveaux de difficulté, allant du bug évident à l’anomalie la plus fourbe.
- Le choix des outils est libre.
A vos marques… Prêts ? Débuggez !
Lire la suite de cet article »

Depuis un peu plus d’un mois, Google a lancé un test grandeur nature (on parle de 100 000 bêta testeurs) de sa plate-forme de communication centralisée, Wave. Après une grande frénésie de chasse à l’invitation, le soufflet retombe peu à peu : on sent bien qu’il y a quelque chose à tirer de cet agrégat d’outils devenus ‘temps réel’, mais on ne sait pas encore quoi. On voit apparaître de nombreux prototypes (traduction temps réel, interfaçage avec des mobiles…), mais peu de choses très concrètes. Il faudra pour cela attendre d’atteindre une masse critique (si plusieurs entreprises décident par exemple de remplacer l’intégralité de leurs outils de communication par Wave) mais aussi compter sur la communauté pour explorer les possibilités d’extension de Wave et proposer des robots attractifs.
Malgré tout, l’outil de Google a attisé notre curiosité, principalement grâce à son architecture ouverte et à ses possibilités d’extension.
Lire la suite de cet article »
Etrange titre pour une conférence …
En fait, ce titre est celui d’un livre qu’Ed Burns (spec leader de JSF 2.0, travaillant chez Sun) a consacré aux traits de caractères principaux des grands noms du monde du développement logiciel (James Gosling, Adrian Colyer, Rod Johson, mais aussi Chris Wilson (architecte d’IE) ou Max Levchin (ancien CTO de Paypal)). Malgré l’aspect publicitaire de cette présentation (« je ne vous présente ici qu’une toute petite partie du matériel à ma disposition, pour le reste achetez mon livre »), nous n’avons pas regretté d’y avoir assisté.
Cette conférence était l’occasion de découvrir des extraits d’interviews (audio) qui ont servies à la réalisation du livre, et de percer les secrets de ces grands noms qui trustent conférences et honneurs.
Lire la suite de cet article »
Hier avait lieu la dernière journée de Jazoon.
Et pour changer, l’opening keynote n’était pas tenue par Sun, mais par Adrian Colyer, CTO de SpringSource. Et le moins que l’on puisse dire, c’est que le changement de ton a été radical.
Par une analogie avec la forêt primaire, A. Colyer a annoncé la chute de Sun, et la très prochaine émergence de nouvelles firmes leader dans le monde JEE (on imagine bien que SpringSource fait partie de ces nouvelles pousses).
Il a expliqué la chute de Sun sous un angle différent de celui du pur rachat financier : selon lui, les acteurs du monde JEE ne veulent plus suivre les recommandations (dogmes) énoncés par Sun, et c’est pour cela que nous voyons apparaitre de nouveaux langages, mais aussi de nouvelles volontés de modulariser la monolithique stack JEE.
Lire la suite de cet article »
Hier, on a encore beaucoup parlé de JavaFX. Danny Coward, dans la conférence d’ouverture de la journée, annonçait que Sun comptait rattraper le temps perdu, en continuant sa politique de releases rapides, et que JavaFX connaîtrait une nouvelle version avant la fin de l’année (même si les fonctionnalités de cette version restent encore mystérieuses). Il faisait aussi son top 5 des fonctionnalités offertes par la version 1.2 :
- Plus de plate-formes : un prototype de téléviseurs montré à JavaOne, le support (partiel) de Linux et Solaris, et la promesse de voir les téléphones de LG, HTC et Sony arriver bientôt sur le marché public
- Plus de composant UI, tous skinnable à l’aide de CSS
- L’ajout de layouts
- De meilleures performances
- Un meilleur accès et un meilleur usage des données
Etrange top 5 à vrai dire, puisque quelques uns de ses points ne sont que partiellement implémentés.
Lire la suite de cet article »
Difficile de résumer la closing keynote de Neal Ford, « forger le 21ème siècle ». Il a balayé tellement de concepts pour nous faire partager sa vision des technologies du futur qu’il est délicat de vous faire partager sa présentation brillante en quelques lignes.
Nous allons cependant essayer d’en aborder les grandes lignes :
- Prédire le futur est un exercice délicat, car notre cerveau n’est pas correctement armé pour le faire, en particulier au niveau des statistiques. Cependant, dans nos métiers, quelques signes peuvent nous mettre sur la voie : il faut tout d’abord rechercher les « paradigm changers« , ceux qui par leur vision novatrice révolutionnent certains concepts, par exemple l’iPhone. Autre signe, les technologies réchauffées : parce qu’elle n’était pas sorti au bon moment, la VM de pascal n’a pas pris, alors qu’elle était antérieure à la JVM inventée par James Gosling.
- Les sujets sensibles dans les prochaines années devraient être le multi threading, la programmation fonctionnelle et les langages dynamiques. Ce qui fait de Clojure (ie LISP dans une JVM) un bon candidat pour la future technologie star.
- Nos technologies devraient s’appliquer à un nouveau domaine fonctionnel, la robotique. Nous voyons d’ailleurs les prémisses avec le robot garde frontière Corée du Nord / Corée du Sud (qui n’hésite pas à abattre les contrevenants) développé par Samsung. Attention à ne pas basculer dans les visions SF de Matrix, Terminator et autres scénarios catastrophes à base de robots intelligents et autonomes.
- Les tendances récentes le montrent, la syntaxe du langage importe : on ne pense bien que ce que l’on peut formuler. C’est pour cela qui nous vivons une « renaissance des langages », avec l’apparition de nouvelles syntaxes qui collent au besoin. D’ailleurs, il serait ridicule de vouloir se contraindre à n’utiliser qu’un seul langage quand au final tous ces langages sont compilés et exécutés au sein de la JVM sous forme de bytecode. Vive la programmation polyglotte.
- Les réseaux sociaux proposent de nouveaux modes de consommation, et même la plus « stupide » des applications (Ocarina pour iPhone) peut rapporter des millions de dollars si elle propose une expérience sociale originale.
- Si la bataille des RIA fait rage à coup de millions de dollars, c’est pour reproduire le schéma de Microsoft qui a « obligé » tout le monde à coder avec l’API win32 pendant des années. Gagner ce « jeu de plate-formes », c’est imposer ses standards à la concurrence durablement.
- Les téléphones mobiles font aussi, de par leur absence de standard, partie de ce « platform play« . Et à ce petit jeu, Apple, en imposant son terminal, est devenu par la même occasion le premier fournisseur de musique au monde. Et d’ailleurs, si Apple parvenait à facturer tout type de service en utilisant l’AppStore, ne deviendrait-il pas rapidement la plus grande banque mondiale ?
Lire la suite de cet article »