L’équipe Xebia remporte le challenge USI 2011

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 :

Billets sur le même thème :

5 Responses

  • Félicitation à vous !

    Est-ce que vous prévoyez, comme d’autres équipes, de mettre vos sources en ligne ?

    J’attends avec impatience les prochains articles.

  • Chapeau bas ! :)

  • Bravo, ce challenge était loin d’être gagne d’avance. J attends de voir les sources avec impatience

  • Bravo Messieurs

  • Felicitation à l’équipe Xebia!
    Même question : allez-vous publiez les sources, comme d’autres équipes ???
    Merci bcp!

Laisser un commentaire