What’s Next Paris 2011

whats-next
Nous vous l’avions annoncé ici-même: les 26 et 27 mai derniers se tenait la conférence what’s next au grand rex à paris. organisée par zenika, cette conférence gravitait autour des technologies et des outils de demain pour la plateforme java et son écosystème. vous avez pu suivre l’évènement sur twitter en utilisant le hashtag #wsnparis, mais la revue de presse est l’occasion de vous faire un retour sur cette première conférence du genre en france. un public d’utilisateurs java avancés, des speakers de renommée internationale et même de la bière atlassian, le tout dans une organisation sans faille et un timing parfaitement respecté: bref, ce fut un réel plaisir de participer à l’évènement.

 

Premier Jour 

Tout commence par un petit mot d’accueil de Carl Azoury qui nous parle de l’investissement de Zenika dans l’organisation de l’évènement. Cinq mois de préparation, pour un budget total de 150k euros avec 35k d’entrée et 45k de financement par les sponsors. Bref, Zenika n’a pas ménagé ses efforts pour réussir cette grande première.

C’est ensuite au tour d’Adrian Colyer de venir nous parler des orientations prises par SpringSource. Voici les points marquants :

  • SpringSocial permet de s’interfacer avec les SaaS des différents réseaux sociaux.
  • SpringMobile facilite le développement d’applications Android et de sites web destinés aux WebPhones.
  • SpringData vient faciliter l’utilisation de NoSQL sous toutes ses formes avec des annotations assurant le mapping des beans Java.
  • CloudFoundry — le sujet principal de cette KeyNote — fournit un PaaS open source facile à utiliser permettant de faire du cloud publique, privé ou micro en local sur la machine du développeur.

Boris Bokowski prend la suite pour nous faire une démonstration autour d’Eclipse Orion, un IDE en ligne développé en HTML5. Il s’agit en réalité d’un IDE pour le développement web qui intègre quelques fonctionnalités basiques comme la coloration syntaxique, la recherche, l’auto-complétion des mots clés, l’intégration des SCM comme Git et la possibilité de publier son travail via FTP ou SFTP. L’outil possède un système de plugin que nous n’avons pas pu découvrir pour cause d’effet démo. Boris y voit la possibilité d’intégrer une multitude de petits outils en ligne en définissant un réel standard. Pour ce qui est de l’éditeur en lui-même, il faut reconnaître que les performances sont impressionnantes: le navigateur ne ralentit pas même en éditant de très gros fichiers (15k lignes et plus). Au final, Orion ressemble davantage à un éditeur texte avancé du même type que notepad++ mais pas à un réel IDE. L’idée est intéressante mais il y a encore beaucoup de travail à réaliser pour en faire un outil capable de supplanter nos IDE lourds.

Après une pause déjeuner régime (un sandwich) un peu courte, Howard LewisShip vient nous présenter Clojure. Clojure est un dialecte de Lisp (famille de langages fonctionnels) tournant sur la JVM. La syntaxe est sensée être plus légère que Java qui multiplie les accolades et autres crochets. Attention, le langage est presque purement fonctionnel et ne joue pas la mixité avec le paradigme objet. La présentation est parfaitement maîtrisée et Howard s’avère être un très bon speaker, malheureusement le langage apparait d’une complexité impressionnante avec une syntaxe très difficile d’accès pour les Javaistes que nous sommes. Comme souvent pour ce type de langage, Clojure se distingue dans la manipulation des collections. La grande majorité de l’auditoire est apparue quelque peu perdue dans la syntaxe, peut-être était-ce dû à l’effet digestion.

C’est ensuite au tour de Jevgeni Kabanov de prendre la parole dans une présentation pleine de vie sur la gestion de la mémoire dans la JVM. Tout commence par le CPU qui embarque sa propre gestion de la mémoire dans ses caches, puis Jevgeni nous parle de la mémoire paginée de l’OS pour finir par s’intéresser à la JVM proprement dite. Par exemple, l’utilisation du mot clé volatile empêche la mise en cache CPU de la donnée, tandis que le mot clé synchronized crée des points de synchronisation dans les registres du CPU. Jevgeni enchaîne avec le fonctionnement des différents garbage collectors et le problème des pauses GC qui bloquent la JVM. Il met en avant le ConcurrentMarkSweep qui permet d’obtenir des temps de pause courts mais au prix d’une forte fragmentation de la mémoire alors que le G First permet d’obtenir des temps de réponse courts sans fragmentation.  La conclusion vient enfin avec une courte introduction du travail réalisé par Azul sur la plateforme Zing qui permet de faire tourner des JVM sans pause GC. Une présentation très intéressante par un speaker de grande qualité.

Jags Ramnarayan vient nous présenter SQLFire, qui n’est ni plus ni moins qu’un moteur SQL pour Gemfire. La solution permet de travailler en SQL sur la grille de mémoire. Parmi les points intéressants, on pourra noter que cela permet de travailler directement en JDBC sans avoir à utiliser une nouvelle API spécifique à la mode des NoSQL standards. La solution propose des transactions distribuées sans réaliser de verrouillage globale. SQLFire utilise quelques modifications du DDL pour gérer la distribution des données comme la réplication, et la co-localisation pour les données liées. Bref une solution intéressante qui peut avoir l’avantage de réduire le temps de prise en main des NoSQL pour ceux qui sont prêts à en payer la licence.

Le dernier slot est présenté par Brad Drysdale qui vient nous présenter les WebSockets d’HTML5. Cette nouvelle technologie portée par le W3C permet de réaliser des communications Full Duplex entre le serveur et le navigateur. Le gros avantage de cette solution par rapport aux autres techniques comme le polling et le long-polling, est de ne pas reposer sur le protocole HTTP qui est par essence très verbeux. Brad nous indique que cela permet de réduire drastiquement la consommation de bande passante pour les échanges client-serveur. La présentation est très didactique et sans démonstration, le but n’est pas de mettre en avant les solutions de Kaazing mais bel et bien la technologie en elle même. Brad est très convaincant, et la grande majorité de la salle semble vouloir se mettre aux WebSockets.

La journée se termine par une soirée organisée par Atlassian avec boisson et gâteaux apéritif, l’occasion idéale pour discuter de cette première entre auditeurs ou avec les speakers qui sont tous présents et disponibles.

Deuxième jour

Neal Gafter ouvre le bal de cette deuxième journée par une présentation retraçant l’histoire de Java et son avenir « proche ». Nous ne décrirons pas ici la chronologie complète de Java. Depuis la première release en 95, la technologie connaît un succès croissant jusque dans le début des années 2000 ou le nombre de participants à la JavaOne commence à fluctuer à la baisse. Les évolutions du langage sont très importante jusqu’en 2004 à la sortie de la J2SE 5.0.
Là, Neal en profite pour nous parler de Java Puzzler publié en 2005 et nous donne 2 exemples tirés du livre ; l’assemblée se prête volontier à cet exercice amusant. Puis viens 2006 avec la publication de Java 6, de JEE 5 et la distribution de la JVM HotSpot sous GPLv2. Les nouvelles versions se sont enchainées tous les deux ans, mais en 2007 alors que SUN travaille à l’OpenJDK sous licence GPL, Apache annonce Harmony, son implémentation de Java sous licence ASF. La discorde commence entre SUN et Apache au sujet de la licence du TCK qui n’est pas compatible avec la licence d’Harmony, interdisant du même coup la validation du projet Harmony comme compatible Java 5. Oracle demande d’ailleurs courant 2007 à SUN de supprimer les limitations de la fameuse licence pour permettre la validation d’Harmony. A noter tout de même qu’en 2002 SUN avait annoncé être prêt à ouvrir la licence du TCK. En 2009, JEE 6 est finalement approuvé malgré de nombreuses discordes. Pour en finir en 2010, année du rachat de SUN par Oracle, qui fait bouger les choses, en forçant le JCP à approuver les futures version 7 et 8 de la J2SE. IBM le contributeur principal va aussi abandonner Harmony au profit de l’OpenJDK. Apache claque la porte du JCP, Oracle lance un procès contre Google au sujet de Dalvik la VM d’android qui repose en partie sur Harmony et confirme que la licence du TCK ne changera pas. Voilà pour la chronologie, Neal passe ensuite naturellement aux évolutions embarquées dans Java 7 et 8 avec des exemples de code source à l’appui, petit rappel utile de ce qui nous attend pour 2011 et 2012. Il conclut que le progrès et l’innovation fonctionnent mieux quand il y a quelqu’un pour tenir la barre.

Il passe enfin la parole à un collègue qui nous présente rapidement Windows Azure – le cloud par Microsoft – qui supporte beaucoup de plateformes de développement. L’offre permet de déployer ses applications sans se soucier de la scalabilité ou des VM qui font tourner le service. La solution rappelle fortement CloudFoundry, mais c’est encore un système propriétaire. Parmi les service embarqués on retient la mise à disposition d’une base SQL. Il y a un plugin eclipse Azure4J, la base est disponible en SQL par JDBC, elle serait d’ailleurs compatible avec JPA (étonnant pour une base distribuée). La solution a l’air intéressant et il est agréable de constater les efforts fournis par Microsoft pour les développements Java. Pour plus d’information consultez le site Waz4j

C’est ensuite Rob Harrop qui prend la parole et nous présente RabbitMQ ce bus de message multi-protocole basé sur AMQP. RabbitMQ supporte la plupart des langages Java, Python, Ruby, NodeJs et j’en passe. Il développe sous nos yeux un petit système envoyant le cours des actions de plusieurs groupes, il développe ensuite des consommateurs en Python en Ruby et va jusqu’à se connecter en Telnet sur son instance RabbitMQ pour recevoir les messages. Le système permet de convertir les messages vers STOMP, XMPP et HTTP en transmettant toujours le même contenu. Rob Harrop développe un serveur web NodeJs qui reçoit les messages du bus et les transmet dans une WebSocket. Après quelques passages d’un terminal à l’autre, Rob affiche la page dans son navigateur et les chiffres défilent instantanément à l’écran. La démonstration est vraiment convaincante et l’assemblée l’accueille avec enthousiasme. 

Après un déjeuné frugal, nous accueillons Theo Schlossnagle qui vient nous parler d’architecture. Il commence par prendre le contre-pied de la mode cloud et NoSQL en avançant que nous avons déjà bien assez de puissance de calcul chez nos clients et qu’il faut commencer par faire fonctionner nos systèmes avec les ressources dont nous disposons. Les systèmes distribués n’empêchent pas les défauts d’une architecture. Dans la majorité des cas, il faut repenser les systèmes. Le conseil majeur de Theo est d’éviter la complexité, les systèmes simples sont bien plus faciles à développer, tester et déployer. Il faut donc découpler les services afin de les maintenir simples et isolés.  Là, il nous met en garde, car cela nécessite l’utilisation de bus de messages, ce qui s’avère complexe. Voici quelques uns de ces conseils avisés :

  • Utilisez des traitements asynchrones.
  • Simulez l’ensemble du système en développement pour le faire tomber au plus tôt, car une architecture finit toujours par casser.
  • Mettez en place du code défensif (timeouts, heartbeat, …)
  • Assurez la supervision complète du système (Temps de réponses, Nombre de clients, Taille des files d’attente, …)

Pour tout dire une présentation riche et instructive.

Michaël Chaize, prend la suite pour nous présenter la plateforme Flex, dont nous avons déjà parlé sur le blog. Il nous présente d’abord quelques applications réalisées par Adobe, avec des interfaces tres graphiques et interactives.  Une petite pique au HTML5, puis il passe à une démonstration mobile en développant une application listant les Tweets #wsnparis. Michaël utilise FlexBuilder pour son développement, rapidement il lance l’application dans un simulateur Android. Il nous liste les plateformes supportées (Android, BlackBerry, ios). Un auditeur le rejoint sur la scène et nous présente une application développée par ses soins, déployée sur deux téléphones et une tablette. L’interface s’adapte bien à chaque taille d’écran et chaque définition. Les démonstrations ont l’air fluide sur les mobiles et Michaël insiste sur les efforts fournis pour optimiser les performances de la machine virtuelle. La présentation est convaincante et l’argument de la portabilité mobile pèse dans la balance, comme nous l’avions vu lors du XKE d’avril.

Jonas Bonér vient ensuite nous parler d’AKKA le framework développement orienté acteur.  Il nous présente d’abord ce que sont les acteurs à savoir des unités de traitements isolées orientées messages. Chaque acteur possède un état, une mémoire propre et s’exécute dans un Thread réservé. Akka tente de résoudre trois problèmes essentiels des systèmes informatiques :

  • Scalabilté (fonctionnement réparti et distribué).
  • Tolérance à la panne
  • Concurrence d’exécution

Les acteurs sont asynchrones par essence, mais il est possible d’attendre le résultat du traitement d’un message via l’utilisation d’un Future. Les acteurs distants permettent d’assurer la distribution et la scalabilité. Le mode cluster sera disponible en version 2.0, il repose sur l’utilisation de ZooKeeper et permet de créer des grilles sans connaître la topologie réseau à priori. Jonas nous parle ensuite de la tolérance à la panne en nous expliquant la detection des noeuds cassés, et le système de recouvrement automatique. Sur le slide, le système à l’air réellement fiable, en cas d’erreur les noeuds sont d’abord tués puis redémarrés.  La présentation donne vraiment envie de tester cette technologie émergente issue de Scala et qui d’ailleurs fait parti de la stack TypeSafe

Shay Banon prend maintenant la parole pour nous présenter ElasticSearch une solution d’indexation et de recherche construite au dessus de Lucene avec la particularité de fonctionner en cluster avec la distribution des index et leur réplication sur un ou plusieurs noeuds du système. Tout se déroule dans un terminal dans lequel le speaker lance des requêtes en curl sur le serveur qu’il a lancé en local. Petit à petit il nous montre des exemples de plus en plus complexes, en commençant par la création d’un serveur simple puis d’un cluster. Il enchaîne ensuite avec une indexation basique en augmentant la complexité régulièrement. Tous les échanges sont réalisés en Rest Json. La recherche utilise directement la syntaxe Lucene, il est même possible d’utiliser des requêtes pré-définies avec Percolator. La démonstration est intéressante bien que cela manque un peu de vie, je ne suis pas vraiment convaincu par l’outil, la plus-value par rapport à Solr n’est pas évidente.

Pour conclure cette journée de conférences, Kohsuke Kawaguchi se lance dans une présentation sur l’avenir de l’intégration et des outils du développeur en général. Il constate que nous avons de plus en plus de machines de plus en plus puissantes, le développeur est le berger d’un troupeau d’ordinateurs. Il faut donc aider le berger à tirer partie au mieux de toute cette puissance de calcul. Pour choyer le développeur qui est une denrée rare par rapport au datacenter, Kohsuke nous donne quelques pistes: 

  • Distribuer les builds
  • Augmenter et améliorer le parallélisme (Compilation, Test unitaires, Parallel Junit, TestNG, …)
  • Utiliser un SCM distribué

Cette liste n’est pas exhaustive et il faut bien reconnaître que Kohsuke a beaucoup d’idées pleines de bon sens. Il propose même de déporter définitivement la compilation et les tests sur le serveur d’intégration pour éviter au développeur la perte de temps considérable que cela représente. J’avoue avoir encore quelques doutes, mais en exécutant les tests unitaires avant de pousser vos sources sur Git ou Mercurial pourquoi pas.

Conclusion

La conférence est une réussite de mon point de vue d’auditeur, le contenu était dense mais cela nous a assuré deux jours de veille technologique fort sympathiques. L’ambiance était bonne et puisque Zenika l’a annoncée, ce sera un plaisir de venir à la prochaine édition. Voilà pour l’ambiance et l’organisation, mais je ne peux m’arrêter là sans faire le tour des grandes tendances ressenties à la What’s Next. La scalabilité est sur toutes les lèvres, l’idée ne semble pas nouvelle mais il n’est pas possible de parler de cette conférence sans écrire ce mot magique. Il faut aussi noter la presque omniprésence des langages fonctionnels, Scala et NodeJS en tête. Les systèmes sont de plus en plus polyglottes et il faudra compter avec ces nouveaux langages pour les futurs développements. Remarquez aussi, pour ceux qui ne l’avait pas encore en tête, que le standard HTML5 devient de plus en plus incontournable. Enfin, notez que le cloud est lui aussi sur le devant de la scène, les solutions PAAS de SpringSource et Microsoft annoncent à mon sens une démocratisation de ce type d’architecture. C’est aussi une démocratisation assez globale de l’utilisation des NoSQL ou plus exactement des bases de données distribuées. Après ces deux derniers points, je reprendrai les conseils de Theo Schlossnagle : avant de penser au cloud, commencez par résoudre les problèmes que vous rencontrez sur vos architectures en pensant aux traitements asynchrones, à la programmation défensive et à la simplicité avant tout.

2 commentaires

Laisser un commentaire