Devoxx France : HTML5 et ElasticSearch au programme

L'événement a été l'occasion de revenir sur les dernières bonnes pratiques en matière de développement HTML5, ainsi que sur la modélisation d'applications.

Voici un résumé des conférences auxquelles j'ai assisté lors de la journée du 19 avril 2012 à Devoxx France.

ElasticSearch - "Your data, your search"
Le principal problème de la recherche textuelle aujourd'hui est le temps : Comment lancer une recherche sur une énorme quantité de données, sans attendre 10 minutes ?
Aujourd'hui, on se contente d'indexer notre base relationnelle, de configurer Hibernate pour améliorer les performances, mais le problème persiste (...), car les SGBD ne sont pas fait pour la recherche. 
C'est là qu'intervient les moteurs de recherches, dont ElasticSearch fait partie.
Fondé sur un couple NoSQL/Apache Lucene, il permet d'indexer une énorme quantité de données (Twitter par exemple), tout en concervant des temps de réponse plus que corrects : 20ms pour une recherche sur 500 000 éléments. Son installation est d'une simplicité enfantine, il n'y a aucune configuration. Il se branche via un connecteur à la base de données de votre application, pour mettre à jour sa base NoSQL.
La notion de facettes (grossièrement l'équivalent des group by en SQL), permet de spécifier ses recherches, et permettra par la suite de proposer une interface riche à l'utilisateur final. Celui-ci pourra naviguer entre différents graphiques ou tableaux, en fonction des référentiels de son choix, et ainsi obtenir la meilleure recherche possible sans que le développeur ai à penser toutes les solutions possibles.
ElasticSearch peut facilement indexer jusqu'à 5 milliards d'éléments, et est actuellement utilisé et/ou soutenu par Fotolia, JBoss, Mozilla, Yfrog, Sony, Klout, ...

HTML5 + Spring + NoSQL + Mobile

Julien Dubois nous présente l'application web Tatami, un Twitter interne conçu à titre de test pour ces différentes technologies. La problématique était la suivante:  "Avec l'abandon de Flash, Silverlight ou Air, comment construire des applications Web riches et dynamique ?"
Pour cela, l'approche du site web change. Où avant l'idée était : Un page = un contrôleur, les pages des nouvelles applications web invoquent plusieurs sources via des appels REST. On a donc une séparation totale entre le front et le back-end.
Le HTML5 se trouve être une très bonne alternative aux technologies en déclins sus-citées, puisqu'il intègre des nouvelles fonctionnalités qui simplifient le développement, que nous aurions du "bidouiller" (champs numériques, validation de formulaire, prise en compte des terminaux mobiles...).
Pour sa part, le NoSQL a de l'intérêt dès que la montée en charge vous fait peur. Par exemple Cassandra, un moteur NoSQL, est beaucoup plus performant pour tout ce qui est écriture qu'une base de données traditionnelle.

Client/Serveur Apps with HTML5 & Java

Suite directe de la conférence précédente, James Ward présente ici sa vision d'une bonne application Web HTML5, qui pourrait se décrire simplement comme ceci :
  •  Stateless, pour des raisons d'extensibilité (scalablility), de facilité de mise à jour et de respect du mode de navigation (retour, rafraichissement, etc.) ;
  • Mise à jour et notifications en temps réel (Facebook, Twitter, etc.)
  • "The browser as an application plateform"
L'exemple phare étant l'application web Trello qui permet à différents protagonistes de gérer des tâches sous forme de board collaboratif. Les changements étant bien évidemment instantanés.

Sencha

Vient ensuite la présentation de Sancha, un framework HTML5/Javascript permettant de créer simplement en Wysiwyg des interfaces mobiles riches. Il répond directement au problème de fragmentation de l'écosystème mobile : Android, iOS, Blackberry, Windows Phone, Nokia, etc. En effet, le point commun entre les 3 grands du mobile est le navigateur basé sur WebKit (on ne parle pas ici de Windows Phone et son IE...). 
L'idée est donc de ne plus coder des applications natives en Java ou Objective-C, mais de créer des applications Web Mobiles (Responsive Design).
Sencha propose un environnement de développement propriétaire et payant pour créer ses interfaces en Wysiwyg, mais le framework est lui-même gratuit et Open-Source.
Pour ma part je reste sceptique sur ce genre de framework généralement lourd et qui ne résout pas le problème des différentes UI et UX entre les plateformes.

Il n'y a pas de bon modèle métier


Grégory Weinbach nous livre son analyse sur la modélisation des applications. Il part du constat que nos applications ne répondent généralement pas suffisamment aux besoins des clients. Une question de complexité accrue ou de mauvaise expression du besoin.
Il est donc plus que jamais nécessaire de concevoir *pour* et *avec* l'utilisateur, chose généralement faite avec les méthodes Agiles et le Domain-driven Design. Il faut avoir un langage commun entre tous les acteurs du projet, ainsi que peu d'intermédiaires entre le client et le développeur.
Parlons maintenant de modélisation, voire de Modélisme. Comme quelqu'un a dit un jour : "Tout est relatif". Et ça s'applique à, eh bien, à tout. A la modélisation aussi. 
Prenons l'exemple d'un livre. Un livre, pour un auteur, peut se réduire à un fichier Word. Un titre, un contenu et c'est tout. Pour l'informatique, un livre c'est un ISBN. Pour un graphiste, c'est une mise en page particulière. Pour un commerçant, c'est un prix. 
Bref, un livre c'est tout cela à la fois, ça dépend du contexte.
En voulant répondre à tous les besoins, on obtient une "chimère", un modèle difficile à implémenter et impossible à maintenir.
Pour résoudre ce problème, changeons notre vision des choses, et commençons par la fin : l'utilisateur, car au final c'est quand même lui qui utilisera notre application. L'utilisateur à des cas d'utilisations bien spécifiques. Eh bien au lieu de construire les actions à partir du modèle, construisons le modèle à partir des actions. Grégory parle de Behavior Driven Development, et encourage à ne pas essayer de modéliser le Réel, mais de rester dans une vision informatique du réel.
Cette présentation à provoqué beaucoup de contestations et d'interrogations, car elle remet en cause tout un mode de pensée ;)

Ces conférences terminées, nous avons fini la journée par l'Android PodCast avec Romain Guy et Nicolas Roard de Google, et par un massage Anma enfin de nous reposer un peu, en attendant la suite demain !