Devoxx 2009, une synthèse 1/2

Devoxx 2009 s'est tenu comme chaque année à Anvers les 18, 19 et 20 Novembre. Octo était présent pendant cet évènement important.

Le but de ce billet en deux parties, est de revenir sur les thèmes phares de cet évènement, de les synthétiser et d'apporter un regard critique.

Les thèmes qui seront abordés sont :

  • Les keynotes
  • Le cloud computing
  • Java comme une plateforme
  • Java plus simple et plus productif
  • La SOA
  • L'OSGI
  • Les sessions méthodologiques, avec par exemple Pomodoro et "development is social?"

Voici donc la première partie de notre billet.

Les keynotes

Les keynotes se sont ouvertes avec un titre prometteur : "Java, the platform for the future", présenté par Oracle.

Tous les participants à Devoxx attendaient donc impatiemment qu'Oracle exprime sa vision et ses plans pour Java. Le public est resté sur sa faim car rien de ceci n'a été évoqué. Oracle s'est contenté de dresser l'historique de la plateforme et les perspectives à court terme déjà connues : JEE6 et JDK7.

La keynote suivante menée par Sun a eu l'effet d'une piqûre de rappel sur les nouveautés de Java EE 6, dont la release finale sera pour le 10 décembre 2009. A noter la sortie le même jour de Netbeans 6.8. Parmi les nombreuses nouveautés de cette version de Java EE, voici celles qui nous semblent les plus importantes :

  • La tendance à la simplification des développements Java EE : le plus frappant est le fait que la réalisation des EJB, qui était très complexe dans les versions précédentes, devient beaucoup plus légère dans la nouvelle spécification EJB Lite : une seule classe annontée suffit. La version précédente Java EE 5 allait déjà dans ce sens, la version 6 va encore plus loin, ce qui est une très bonne nouvelle pour les développeurs
  • Une plateforme plus simple : l'introduction des profils permet de développer sur des plateformes adaptées à des besoins précis. Par exemple, le Web Profile 1.0 n'embarque que les spécifications nécessaires au développement d'applications web, en omettant par ex. les spécifications liées aux webservices ou aux EJB "non-lite"
  • De nouvelles spécifications ont été ajoutées, notamment pour standardiser le développement simple de webservices REST

Notons que l'introduction d'un système d'injection de dépendances, et le modèle de codage de composants d'entreprise via des classes simples, rapproche finalement le développement Java EE standard et le développement avec Spring. Tout ceci nous semble une bonne nouvelle pour la productivité des développements. Nous attendons avec impatience que la plupart des éditeurs de serveur d'applications implémentent cette spécification.

Le bal des keynotes de cette première journée s'est fermé avec Adobe. Cette keynote a été intéressante. On y a vanté les nouveautés du player Flash 10.1, qui supporte les smartphones, et qui leur offre toutes les fonctionnalités déjà disponibles pour les ordinateurs. Catalyst nous a paru être une solution intéressante pour faire travailler ensemble les designers web et les développeurs.

A retenir parmi les keynotes du second jour : l'inoubliable keynote de Robert C. Martin plus connu sous le nom d'Uncle Bob qui fait partie des auteurs du Software Craftsmanship Manifesto. Le sujet de cette keynote était le professionnalisme dans le développement logiciel, dans le sens du terme professional en anglais qui est un faux ami. Uncle Bob considère que le développeur doit avoir une éthique professionnelle, comme un avocat ou un médecin.

Uncle Bob nous rappelle les principes sur lesquels un professionnel ne doit pas transiger: faire des tests, surveiller sa couverture de tests, ne jamais livrer quelques chose dont on n'est pas fier, la recette ne doit pas trouver d'erreurs, la MOA doit faire des spécifications fonctionnelles exécutables et non vérifier a posteriori ce que l'application fait ce qu'elle doit faire.

Rien de nouveau dans le discours, mais un show à l'américaine très amusant et des messages clairs et percutants. Parmi les développeurs présents, à notre grand désarroi, seulement 20% ont répondu positif à la question faites-vous du TDD. Pour encore beaucoup d'équipes, ce discours qui nous est classique chez Octo n'a pas encore porté : nous avons donc encore beaucoup de travail de coaching à réaliser!

Le Cloud Computing

Parmi les sessions traitant du cloud computing, il y avait Architecting Robust with Amazon EC2 de Chris Richardson et Google distribution way par Google. Le ressenti général que nous avons eu suite à ces sessions, et spécialement la première, est que le cloud est un thème qui passionne, offrant d'ors et déjà des solutions matures et utilisables aujourd'hui comme Amazon EC2.

Architecting Robust with Amazon EC2

Si on ne doit retenir qu'une ou deux phrases, ce sera Agile deployment et The future is cloudy. Amazon EC2 est une plateforme et un ensemble de web services fournis par Amazon permettant de lancer un serveur à distance, de déployer un Mysql, un Tomcat, un apache, une application web, etc. Le but est évidemment de virtualiser l'infrastructure de test et de prod, de sous-traiter les problématiques liées au matériel physique, le fail-over, l'installation de serveurs, etc. Un second intérêt est l'auto-scalabilité ou comment adapter le nombre de serveurs au trafic qu'on a. Imaginons un exemple : nous sommes un site web de vente de bière et nous avons un pic de trafic très important les week-ends de matchs de football. Pour faire face à ce pic, nous devons augmenter le nombre de serveurs :

  • immédiatement
  • à ce moment là uniquement, pour une courte durée.

Mettre en production une nouvelle version d'une autre application peut être fait de façon à minimiser le risque de non disponibilité de l'application. Beaucoup d'avantages donc, mais des limitations tout de même. On ne peut déployer que des serveurs supportant du multicast, typiquement Tomcat. Les serveurs de bases de données supportés sont uniquement Mysql et Oracle. Si nous possédons des données ultra-sensibles, des numéros de carte bleues par exemple, Amazon déconseille de les externaliser, même si tout est correctement crypté.

Le bon compromis reste donc pour une entreprise d'une certaine et/ou ayant des données sensibles, de mettre en place un cloud computing "privé" en utilisant des technologies de virtualisation comme VMWare. D'après les informations que nous avons recueillies lors de la conférence, aujourd'hui, seules des petites structures utilisent les services d'Amazon aujourd'hui.

Google programming distribution way

Toujours sur le cloud computing, une présentation des principales notions de l'architecture Google : Google File System, BigTable, l'algorithme Map reduce, et le langage Sawzall. Le contenu se trouve déjà ici. Le plus intéressant est le fait que cette architecture est taillée pour le besoin de Google. Pas de transaction, ils n'en ont pas besoin. En revanche, ils ont besoin de scalabilité, et de disponibilité permanente de la donnée. Un modèle qui marche donc dans leur cas, d'ailleurs les exemples tournaient toujours autour de la recherche de mots dans du texte. Finalement, comme le disaient Olivier Malassi et André Nédelcoux dans leur session à l'USI, il faut parfois remettre en question ses réflexes d'architecte quand le besoin n'est pas en adéquation.

OSGI

La grande tendance des serveurs web modulaires s'est confirmée à Devoxx. Oracle a présenté durant sa keynote WebLogic DM (au stade de prototype), Sun était de la partie avec Glassfish v3 (disponible depuis plusieurs mois), tous les 2 basés sur OSGi. Cette technologie apporte des avantages indéniables sur le middleware : démarrage en quelques secondes, chargement uniquement des modules nécessaires, branchement à chaud de nouvelle fonctionnalité, etc. On nous promet donc un environnement plus léger sur le poste du développeur et plus administrable en production. C'est l'application d'OSGi au niveau du middleware.

Mais côté application, que peut nous apporter OSGi?

Une session de Andy Wilkinson de SpringSource nous a donné quelques réponses, avec la présentation du projet Slice qui a vu le jour il y a à peine 6 mois, actuellement au stade de prototype. L'approche de ce framework permet un découpage d'une application en couches (ou slices) verticales et non plus horizontales. On a en effet l'habitude de séparer les couches par domaines technique (généralement présentation, services métier, services d'accès aux données) et d'affecter un développeur ou une équipe à chacun de ces domaines. Cette spécialisation entraine bien souvent des incompréhension et même des tensions, et c'est la conformité de l'application avec l'attendu qui en pâtit. Ce que nous prônons dans les approche agile et qui est proposé par Slice est un découpage par domaine métier. L'exemple qui était cité consistait en un site de réservation de voyage, où les services de réservation de vol et d'hôtel étaient séparés. Slice permet de séparer l'application en 3, un module général, parent de 2 autres modules assurant chacun un domaine métier. Les fonctionnalités de Slice permettent de réagir selon la présence ou non d'un module, comme par exemple l'affichage dynamique d'un menu permettant d'accéder à chaque fonctionnalité. Au sein de chaque module, on peut également bénéficier des apports d'OSGi en rechargeant à chaud une couche horizontale comme le service d'accès aux données par exemple.

Ce projet est intéressant dans son approche, car il offre un outil permettant d'appliquer des principes plus pragmatiques de découpage d'application. Le prototype actuel ne fonctionne que sous dm Server, mais il est prévu d'étendre son utilisation à tout conteneur Web. On perdrait au passage les bénéfices d'OSGi (chargement à chaud), pour ne garder que les avantages du web modulaire qui nous intéressent.

Meriem Berkane, Sébastien Guerlet et Julien Jakubowski