DEVOXX France 2019

12 minute read

Introduction

Du 17 au 19 avril 2019 a eu lieu la huitième édition de Devoxx France au Palais des Congrès à Paris.

Devoxx se veut la plus grande conférence nationale pour les développeurs passionnés et on peut dire que l’objectif est atteint à chaque nouvelle édition. C’est vraiment the place to be pendant trois jours pour prendre le pouls de l’évolution technologique, faire des connaissances et s’inspirer.

Worldline était bien représenté avec une trentaine de participants. Trois d’entre eux (Alexandre Touret, Raphael Semeteys et Jean-François James) vous proposent de partager leurs impressions et les sujets qui ont retenu leur attention à travers cet article.

devoxxfr2019

Keynotes

Cette année le fil rouge des keynotes étaient le bien être au travail et la bienveillance. Ces notions sont souvent abordées dans les entreprises, mais (trop?) peu dans les conférences technologiques. Elles sont pourtant essentielles et favorisent entre autres la performance.

Christian Fauré (aujourd’hui chez Octo et qui a également travaillé chez Atos) a fait une conférence intitulée Le bonheur au travail, au-delà du bullshit. Il a évoqué la nécessité de (re)donner du sens au travail et a donné une définition intéressante du prolétariat :

Il ne s’agit pas de pauvreté, il s’agit de la perte du savoir.

Autrement dit : si vous ne voulez pas devenir prolétaire, gardez et exercez vos connaissances ! J’ai particulièrement apprécié un autre conseil de sa part :

Gardez un état d’esprit d’amateur, ne prétendez pas devenir “professionnel” !

Oliver Lajous, un ancien amiral, a parlé de La bienveillance en entreprise. C’est toujours intéressant d’entendre un militaire évoquer un sujet humain aussi sensible sur lequel on ne l’attend pas forcément. Il a insisté sur la nécessité de régler ses problèmes personnels (“ne pas perdre sa vie”) pour trouver la bonne distance avec les autres et éviter les paroles blessantes. J’ai bien apprécié son rappel d’une citation de Gandhi face à de telles paroles : “Je ne me laisse blesser que par les personnes que j’autorise”. A méditer …

Le lendemain, Valérie Haccart a parlé de l’accessibilité en animant un atelier sur la déficience visuelle. Puis David Mytton a partagé ses commentaires sur la gestion des incidents.

Pour conclure ces keynotes, Jérôme Petazzoni est venu nous parler du refactoring le plus difficile de sa carrière. Il a présenté dans un premier temps les facteurs qui l’ont mené vers la dépression et le burn out. Bien qu’il connaissait en théorie ces maladies, il n’avait pu y échapper. Ensuite il a présenté les différents facteurs qui l’ont aidé à les surmonter. Enfin, il a évoqué la nécessité d’avoir un bon manager et d’être attentif aux autres.

Les tendances

Nous avons identifié plusieurs grandes tendances cette année :

Java : toujours d’actualité après 25 ans!

Et oui, après près de 25 ans, le langage Java est toujours d’actualité.

Il revient même en force par rapport aux sessions précédentes où les conférences donnaient la part belle aux langages alternatifs tels que Kotlin ou Scala.

Il y a eu plusieurs conférences et universités sur le langage et ses nouveautés. On peut noter les deux données par Mark Reinhold : Modern Java: Change is the Only Constant et Ask the Java Architect ou encore celle donnée par Simon Ritter : JDK From 9 to 12: How Java is Evolving.

Coté serveur, les conférences et universités sur Microprofile avaient cette année la part belle. Ce projet ne cesse d’évoluer et offre aujourd’hui une alternative sérieuse. De même pour Quarkus, le nouveaux framework “supersonique et subatomique”. La conférence donnée par Emmanuel Bernard était très intéressante. Il a présenté la stack technique (CDI, JAX-RS, JPA,…), l’intégration avec GraalVM et l’écosystème Docker.

L’autre pan de Java, le runtime (la Java Virtual Machine), n’est pas en reste. Par exemple, David Delabassée a démontré comment optimiser la JVM avec Docker et Kubernetes avec sa présentation La JVM et Docker, vers une symbiose parfaite !

Migration Java 8 vers Java 11

Ce sujet revient régulièrement dans les discussions, et génère beaucoup d’interrogations. Java 9, sorti en septembre 2017, a été très disruptif avec deux évolutions majeures :

  • une cadence de livraison accélérée avec une version majeure tous les 6 mois et une LTS (Long Term Support) tous les 3 ans,
  • la modularisation du JDK (qui était devenu un gros monolithe) qui exige beaucoup plus de rigueur en développement (il faut dissocier API internes et externes et expliciter les dépendances entre modules).

Le passage de Java 8 (la précédente LTS) à Java 11 (la nouvelle LTS) devient un enjeu majeur pour les organisations. Lors de cette nouvelle édition de Devoxx France, quelques conférences ont essayé de donner des éléments de réponse. Par exemple De Java 8 à Java 11 sur un gros projet : les pièges à éviter. Elles ont mis en exergue l’importance de maitrîser sa stack technologique en mettant à jour régulièrement ses frameworks. En effet, la majorité des problèmes à la compilation sont résolues en mettant à jour les librairies tierces.

GraalVM, ou comment Java invente… la compilation

Graal VM est un projet Oracle visant à définir une machine virtuelle universelle multi-languages (Java, Kotlin, Scala, Groovy, JavaScript, Python, Ruby, R, C, C++ …). Le but est de mixer les langages au sein d’une même application.

En son coeur, se trouve un compilateur de bytecode qui peut peut fonctionner de deux manières :

  1. de manière dynamique Just In Time en cours d’execution de l’application comme c’est le cas classiquement avec la Java Virtual Machine. Dans ce cas, le compilateur repère les portions de code les plus sollicitées pour les compiler en code natif,
  2. de manière statique Ahead Of Time avant exécution pour générer un “binaire” exécutable. Il s’agit d’un binaire un peu particulier destiné à être exécuté par un runtime nommé Substrate VM qui est en quelque sorte une mini-JVM qui gère toute l’intendance c’est-à-dire le multi-threading, les allocations de la mémoire etc …

Au passage, il est amusant de noter que ce compilateur est écrit lui-même en Java et se trouve beaucoup plus maintenable que les compilateurs d’origine écrit en C++. C’est d’ailleurs la raison pour laquelle Twitter, qui a une forte ingéniérie Java, l’a adopté en production dès l’année dernière.

Grâce aux images binaires, Java devient compétitif sur un terrain où on ne l’attendait plus: les applications Serverless, aussi appelées Funtion As A Service. En effet, celles-ci nécessitent un temps de démarrage très rapide pour exécuter à la volée une “fonction”. La JVM classique et son temps de chauffe ne peut rivaliser avec JavsScript, Go etc ….

Graal VM étend le champ d’usage de Java aux applications Serverless. S’agit-il pour autant d’une “silver bullet”? Oui et non … Graal VM est attrayant pour les traitements unitaires très courts mais la JVM classique reste plus compétitive pour les traitements longs multi-threadés.

Le framework Quarkus a su profiter de cette opportunité pour étendre le modèle de programmation classique Java EE qui permet de couvrir tous les besoins du Cloud moderne.

Sur le front de la data

Outre la plate-forme d’execution de code que nous produisons, celle où nous manipulons les données est une autre composante majeure de nos solutions et systèmes. Deux tendances fortes à ce sujet ont attirées note attention.

Hyperconvergence

Ce mot un peu hype (ce sont bien ses quatre premières lettres…) recouvre un phénomène assez général des fournisseurs de bases de données. En fait nous avions l’habitude de parler en interne de conteneurs de données pour dénommer de manière générique un composant technique en charge de stocker, indexer, requêter, traiter voire dans certains cas restituer des données de tous types. Cela permettait de recouvrir des solutions comme les SGBDR, les solutions Not (Only) SQL orientées documents, colonnes, graphes, time series, etc. Ainsi que des solutions d’indexation de type ElaticSearch.

L’hyperconvergence est aujourd’hui celle de tout ou partie de ces différents usages et types de conteneurs de données. Un bon exemple en est le talk PostgreSQL c’est le nouveau NoSQL, qui - outre un titre un peu provocateur - précise que PostgreSQL sait par exemple effectivement gérer de manière native le format JSON. et cette gestion native fait automatiquement bénéficier cet usage NoSQL des autres fonctions transverse du conteneur de donnés tels qu’indexes, partitionnement, etc.

De même on observe comment peu à peu les solutions NoSQL phares convergent de plus en plus aussi vers des cas d’usages similaires aux SGBDR et proposent des langages de requêtes de type SQL… On ne parle plus de conteneurs mais bien de plates-formes de données hyperconvergées ;)

Streams are the new Database

Autre tendance intéressante, celle mise en avant par un autre type d’acteur manipulant les données… cette fois-ci sous forme de flux. On a suivi en effet comment les Streams ont inondé (ok, j’assume le jeu de mot) l’écosystème Java/JavaScript avec les flux réactifs, les patrons à base dévènements, etc … Désormais une solution comme Kafka, revendique être bien plus qu’un système de transport de données de type bus ou ETL mais finalement d’être également un conteneur de ces données. A ce titre le nombre de talks ayant Kafka dans leurs titres ou comme mot clé est édifiant : pas moins de treize !

Et exactement comme pour l’hyperconvergence présentée plus haut, les gens de Confluent parlent désormais de langage de requête (KQL), de schémas (schema registry) et carrément de stockage de données dans Kafka. On plutôt sur la plate-forme Kafka… Nous verrons peut être demain si cela sera un nouvel axe d’hyperconvergence ! :)

Service Mesh, après les spaghettis les vermicelles

D’abord il y a eu Docker et la containerisation, ensuite Kubernetes et l’orchestration. Voilà maintenant Istio et le concept de Service Mesh.

En deux mots, un Service Mesh permet d’industrialiser la connectivité entre microservices à grande échelle en prenant en compte les aspects:

  • sécurité,
  • résilience, résistance aux pannes,
  • load balancing,
  • monitoring.

Ces aspects sont externalisés et le code des microservices peut se concentrer sur la logique métier sans devoir recourir à des librairies tiers comme Hystrix ou Ribbon.

Pour faire un parallèle avec les systèmes d’exploitation, les services mesh tels qu’ Istio apportent quelques unes de leurs fonctionnalités mais distribuées dans le cloud. Ils s’appuient notamment sur des outils tels que Helm ou Prometheus.

Néanmoins, il n’y a pas encore de standards et normes établis sur cette technologie. Certaines implémentations sont des standards de facto (Istio ou Linkerd) qui ont tendance à éclipser les autres initiatives.

Kubernetes

Docker et a fortiori la conteneurisation font désormais partie intégrante de l’écosystème IT. Beaucoup de sociétés font évoluer leur standards de livraison et déploiement pour intégrer cette technologie. Les conférences données à Devoxx n’ont fait que confirmer cette tendance.

L’université “Cycle de vie des applications dans Kubernetes” par Charles Sabourdin et Jean-Christophe Sirot était de très bonne qualité. Après être revenu sur les bases de Docker (ça ne fait jamais de mal… ), on a abordé le cycle de vie logiciel d’une application Docker orchestrée par Kubernetes en allant de l’intégration continue (CI) vers le déploiement continu (CD). Leur retour d’expérience était également très appréciable. Ils ont insisté sur le fait qu’on ne peut pas directement faire du déploiement continu. La confiance envers cette pratique se fait progressivement en commençant par l’intégration continue (CI) puis la livraison continue (CDE).

Quelques conférences à voir et/ou revoir

D’architecte à Métarchitecte

Si vous êtes architecte, je vous conseille cette conférence D’architecte à Métarchitecte. Elle synthétise avec beaucoup d’humour l’évolution de ce métier au cours de ces dernières années. Rémi Cocula évoque les défis liés à la mutation des méthodes de développement qui poussent vers plus d’agilité (ex. SCRUM) ainsi que les challenges vis à vis des nouvelles technologies (ex. microservices).

Pour illustrer la dette technique et son évolution, Rémy Cocula a dit dans un de ses slides :

La dette technique du monolithe a épuisé vos développeurs.

La dette technique distribuée épuisera vos architectes.

En plus d’avoir le sens de la punchline, il n’a pas forcément tort …

Bref, je trouve qu’il a bien synthétisé l’évolution que subit actuellement ce métier. Si bien que nous nous sommes retrouvés (Worldline et autres) à discuter sur ce sujet après la conférence avec le speaker.

Les conférences “Back To Basics”

Depuis quelques temps, plusieurs conférences nous permettent de voir ou revoir les bases. Devoxx France n’a pas échappé à cette tendance. Il y a eu quelques conférences #BackToBasics qui nous ont permis de nous replonger dans différents sujets : les API REST ou encore la gestion des dates.

A titre d’exemple, la conférence Concevoir une API REST nous a permis de revoir entre autres l’idempotence des opérations REST (et oui le DELETE est idempotent) ainsi que différents standards tels que JSON-PATCH.

Nos impressions

Vous avez compris que cette édition 2019 a répondu à nos attentes. Les conférences étaient en très grande partie de qualité. Il était même difficile de faire un choix sur un créneau tellement il y avait de sujets intéressants !

Maintenant laissons la place à Jean-François qui était conférencier cette année.

Une expérience de speaker

Cette édition fut un peu spéciale pour moi (Jean-François James) : j’ai en effet eu l’opportunité d’être sélectionné comme conférencier. Le titre de ma présentation était Oubliez Java EE, voilà Jakarta EE ! Je m’étais donné pour objectif de faire un bilan de l’évolution des standards Java côté serveur et de démontrer concrètement l’usage de MicroProfile et Java/Jakarta EE 8. La transition Java EE de Oracle vers la Foundation Eclipse, démarrée en septembre 2017, est encore en cours, c’est un sujet auquel je m’intéresse depuis son origine, et partager un point de situation me semblait nécessaire et intéressant. J’ai eu la chance d’avoir Sébastien Blanc de Red Hat comme partenaire. Sébastien, est un conférencier à la notoriété établie, dont la présentation Le jaillissement de l’esprit avec ses enfants, Lois et Saskia, a suscité beaucoup d’attention l’an dernier.

Etre conférencier à Devoxx est une expérience intéressante qui donne une résonance différente à l’ensemble de l’évènement. Cela a commencé par le repas speaker mercredi soir qui m’a permis de cotoyer des personnalités comme Clément Escoffier, Emmanuel Bernard (les concepteurs de Quarkus), Mark Reinhold (architecte en chef de la plateforme Java), Lilian Benoit (président du JUG Bordeaux) ainsi que d’anciens collègues comme Guillaume Gillon (aujourd’hui chez Décathlon) et Sébastien Deleuze (aujourd’hui chez Pivotal).

Avant l’événement, plusieurs rendez-vous téléphoniques avec Sébastien nous avaient permis de caller les slides et le discours. Trois répétitions sur place ont également été nécessaires pour ajuster le timing. Le principal challenge pour moi était la réussite de ma démo. J’ai voulu aller au delà du “Hello Word” classique et proposer une application de paiement en architecture microservice (simplifiée mais néanmoins significative).

J’avais identifié 4 challenges:

  1. éviter l’effet démo (le cauchemard du présentateur),
  2. éviter l’effet cliquodrome (la nausée du spéctateur),
  3. tenir en 12 minutes maximum,
  4. faire tourner à coup sûr l’application sur le poste de Sébastien.

Fort heureusement, tout s’est bien déroulé et les retours ont été positifs et encourageants. Pour vous faire une idée de l’ambiance, vous pouvez consulter la vidéo. Notre binôme a visiblement bien fonctionné. Une expérience à renouveler …


Written by

Jean-François James

Still passionate after more than 30 years of experience in IT! DevOps advocate, head of the Expert Network at Worldline France

Raphaël Semeteys

Software architect, Open Source expert, Atos Distinguished Expert

Alexandre Touret

Architect #java #api #ci #software_craftmanship