Devoxx 2024 : quelles nouveautés technologiques faut-il retenir ?
Cette année, la conférence Devoxx célèbre sa 12ème édition en France. Née au début des années 2000 au sein du JUG (Java User Group) belge, elle s’est exportée pour la première fois en France en 2012. Destiné à la communauté des développeurs, des éditeurs et des entreprises du développement web, l’événement se concentre essentiellement sur l’écosystème Java. Il offre une occasion de découvrir les nouveautés technologiques en matière de langages et de frameworks, ainsi que les dernières innovations : eh oui, nous aborderons le sujet qui est sur toutes les lèvres… l'intelligence artificielle !
Quoi de neuf au sein de l’écosystème Java ?
Historiquement, Devoxx est avant tout une conférence centrée sur Java et ses nouveautés. Cette année, les conférences ont donc porté sur Java 21, la dernière version LTS (Long-term support ou en français Support à long terme), avec un focus sur son adoption et son optimisation.
Comparé aux éditions précédentes, 2024 a marqué un net recul des technologies Java natives, enregistrant peu de conférences sur ce sujet. En revanche, plusieurs présentations se sont penchées sur le Warmup et l'optimisation, offrant des insights intéressants pour améliorer les performances.
Warmup et optimisation
L'amélioration du processus de Warmup (ou temps démarrage) et l'optimisation des performances globales de l'application, notamment en réduisant son empreinte mémoire, visent principalement à rendre les applications Java plus adaptées aux environnements d'hébergement scalables. Habituellement, une application Java se comporte de manière performante une fois qu'elle est lancée, mais son démarrage peut prendre plusieurs secondes, ce qui la rend incompatible avec des architectures d'hébergement telles que le mode serverless.
L'état actuel des technologies de compilation native pour Java
Au cours des éditions précédentes, les conférences sur les technologies de compilation native (comme Spring Native, Quarkus, Micronaut, etc.) étaient nombreuses. La promesse d'une amélioration significative des temps de démarrage était alléchante, mais cette approche nécessite une adaptation conséquente : toutes les librairies ne sont pas compatibles, des problèmes techniques de réflexion se posent, et le processus de build demande davantage de temps et de ressources qu'une compilation classique.
Cette année, l'attention portée à cet aspect a été minime, ce qui suggère que les technologies de compilation native pour Java ne semblent pas encore avoir trouvé leur position optimale. Les défis techniques associés à cette approche demeurent trop importants pour rendre Java compétitif dans le contexte des applications serverless. En comparaison, des langages concurrents comme Python, Node et Go offrent naturellement des temps de démarrage très rapides sans ajouter de complexité.
Java et l'intelligence artificielle : L'essor de LangChain4J
Cette année, lors du Devoxx, un grand nombre de conférences ont exploré le mariage entre l'intelligence artificielle et Java, mettant en lumière principalement LangChain4J. Qu'est-ce exactement ?
Il se compare à l'Hibernate du traitement du langage naturel pour Java. Il permet l'intégration de plusieurs modèles de langage (LLM) et de traitement du langage naturel (NLP) dans une application Java, en simplifiant leur utilisation sans se soucier de la source. Actuellement, LangChain4J est compatible avec une quinzaine de modèles de langage différents.
Cette tendance montre que Java est désormais mature pour intégrer des fonctionnalités d'intelligence artificielle ; il ne reste plus qu'à explorer et à trouver les cas d'utilisation pertinents.
Les nouveautés technologiques à retenir
En résumé, peu de surprises majeures, à l'exception notable de LangChain4J dont l’adoption est en cours. Java 21 semble donc une version majeure, bénéficiant d'un support public annoncé jusqu'en 2028 et déjà en cours d'adoption par la communauté.
Actuellement, la philosophie de Java est marquée par sa maturité relative par rapport à d'autres langages, ce qui se traduit par une approche pragmatique. Plutôt que de rechercher de nouvelles fonctionnalités à tout prix, Java opte pour une approche de sélection des éléments éprouvés dans d'autres langages.
Quelles nouveautés technologiques dans le domaine de l’Intelligence Artificielle ?
Exploration du RAG pour une meilleure précision des données
Le Retrieval Augmented Generation (RAG) combine le meilleur des deux mondes entre la génération par IA et la précision des données. Mais comment fonctionne-t-il ? Fondamentalement, il s'agit d'une IA, généralement un Grand Modèle de Langage (Large Language Model - LLM), qui, pour construire ses réponses, accède à des données réelles telles que des documents, des bases de données, des fichiers texte, etc. Ces données diffèrent de celles contenues dans le modèle de l'IA. L'accès à ces données réelles rend les réponses plus exactes et sourcées, ce qui signifie que l'on peut retrouver la source des données qui ne proviennent pas de son entraînement initial. Ainsi, le LLM gagne en précision, en actualisation, et il retrace la source de la donnée.
Plusieurs conférences ont donc été dédiées à la présentation, à la création et à la mise en place de RAG dans divers contextes.
L’évolution des LLM dans le domaine de l’IA : vers plus de sagesse et de sécurité
Une autre tendance majeure dans le domaine de l'intelligence artificielle concerne la sécurisation des Langages de Modélisation du Langage (LLM). Les risques associés aux LLM génératifs sont bien réels, ce qui a poussé à la mise en place de protections efficaces. Cela inclut des mesures contre les injections de prompts, la sécurisation des données entrantes et sortantes, etc.
Après l'engouement des années précédentes, une approche plus prudente se dessine désormais, accompagnée de retours d'expérience plus complets et concrets. En résumé, l'intégration d'un LLM dans une entreprise ne se résume pas à une simple mise en place : il faut également prendre en charge la sécurité, la gestion des mises à jour des données, et bien d'autres aspects.
IA et évaluation de la qualité du code
En matière de développement, plusieurs conférences ont exploré la question de la qualité du code et de la documentation, en mettant particulièrement en lumière l'intégration de l'intelligence artificielle dans ce domaine. Pour l'instant, il semble qu'aucune solution miracle n’exploite pleinement les capacités de l'IA dans ce contexte, si ce n'est la vigilance dans la supervision de ce que l'IA génère, tout en continuant de prôner les bonnes pratiques de programmation et de maintenabilité avec du code propre.
Architecture : quels enjeux et tendances ?
L'aspect architectural a été particulièrement captivant cette année. Au-delà des présentations d'outils, de frameworks et de modèles, les retours d'expérience ont été nombreux et instructifs.
Le tout microservices est révolu !
De nombreux retours d'expérience de projets ont mis en évidence la complexité parfois superflue des microservices. Ces divers témoignages ont souligné l'importance d'aligner les besoins fonctionnels avec l'architecture. Cette synchronisation peut être réalisée grâce à l'utilisation de patterns architecturaux tels que les architectures hexagonales ou des techniques comme le Domain Driven Development (DDD). Le message transmis met en avant l'utilisation de monolithes modulaires, qui offrent une flexibilité pour une éventuelle transition vers une architecture en microservices, lorsque cela est nécessaire.
Focus sur le streaming de données
Plusieurs conférences ont mis en avant la mise en place de systèmes de streaming et de file d'attente (queuing). Contrairement aux années précédentes, l'utilisation de Kafka était moins fréquente, ce qui signale un retour au pragmatisme dans l'adoption du streaming généralisé.
La conférence "Apache Pulsar : enfin une alternative à Kafka ?" a bien posé les principes du streaming et de la file d'attente :
Message Queuing :
-
Utilisé pour la communication entre services, avec des tâches de durée variable.
-
Favorise le découplage et ne nécessite pas un traitement séquentiel.
-
L'élasticité est gérée du côté des consommateurs (les consommateurs sont ajoutés dynamiquement).
-
Possibilité de gérer les congestions avec des fonctionnalités telles que Dead Letter Queue.
Message Streaming : -
Idéal pour le monitoring en temps réel, offrant de très bonnes performances.
-
Permet de conserver l'historique des données.
-
Traite les messages dans l'ordre et peut gérer des volumes massifs de messages.
Actuellement, le streaming est souvent utilisé de manière inappropriée pour des cas d'utilisation de file d'attente, ce qui entraîne des complexités importantes, comme l'ajout de partitions.
Concernant Kafka, les conférences se concentraient principalement sur des retours d'expérience, comme celui du système mis en place par PMU pour la collecte, le traitement, le stockage et la mise à disposition des données sur les courses et les paris hippiques. Avec de multiples sources de données émettant à différentes fréquences et sous différents formats, il était primordial d'agréger, de formater et de rendre ces données fiables et disponibles dans des délais relativement courts. Dans ce cas, Kafka a été utilisé via un service managé AWS, ce qui a certainement simplifié son utilisation et son administration.
Focus sur l’observabilité
OpenTelemetry s'est imposé comme une référence incontournable en matière de surveillance. Son intégration dans divers écosystèmes tels que Java, les conteneurs, Kubernetes et Traefik a été remarquée.
OpenTelemetry semble être en voie de devenir un standard pour la collecte de logs, de métriques et de traces. Il s'agit d'un ensemble d'outils, de kits de développement logiciel (SDK) et d'API visant à simplifier la surveillance des applications, couvrant les domaines des logs, des métriques, des traces, etc.
En synthèse : retour au pragmatisme
En résumé, nous constatons une approche plus pragmatique dans les solutions mises en œuvre et recommandées, contrairement à ce que nous observions quelques années plus tôt avec ce que nous pouvions qualifier de "Kube and Kafka for everything". Nous assistons à un retour aux fondamentaux : l'importance d'utiliser correctement les méthodologies de clean architecture, de clean code et de Domain Driven Design (DDD), ainsi que l'utilisation appropriée des outils sans chercher à les détourner ou à suivre les tendances simplement pour le plaisir.
L’expansion de DevOps
La maturité atteinte pour DevOps ?
Nous avons assisté à plusieurs retours d'expérience sur la transition vers le DevOps au sein de grandes entreprises telles que Michelin, BPI, et PMU, notamment du point de vue de l'architecture. Cette évolution suggère que le DevOps est en train de gagner en ampleur au sein de structures importantes. Autrefois, son adoption était plutôt limitée à des projets de petite envergure ou à des startups.
La transition vers le DevOps de ces grandes entreprises implique des changements fondamentaux, allant jusqu'au niveau des fournisseurs de services et d'infrastructure. Cependant, elle permet en fin de compte de réaliser des livraisons plus fréquentes avec moins de défauts, conduisant ainsi à une création de valeur plus rapide et plus efficace.
Evolution de la conteneurisation et de Docker
Dans le domaine de la conteneurisation et de Docker, nous observons un changement de paradigme. Après des années d'engouement pour Kubernetes, les conférences et les présentations se concentrent désormais davantage sur l'adoption et la maturation des outils.
Cela se manifeste notamment avec des initiatives telles que Compose Bridge, facilitant la transition de docker-compose vers Kubernetes. De plus, des outils comme Traefik (un reverse proxy) adoptent ou envisagent d'adopter des normes telles que OpenTelemetry ou WebAssembly.
Bases De Données et Data : l’émergence de la recherche vectorielle
Cette année, un grand nombre de sujets ont été abordés concernant le fonctionnement et l'optimisation des bases de données relationnelles. Cependant, les bases de données NoSQL semblaient moins présentes. Leur adoption dans le domaine du web paraît restreinte à des cas d'utilisation spécifiques tels que le traitement de gros volumes de données, le temps réel ou l'IoT. La popularité des bases de données relationnelles ne donne pas l’impression d’être remise en question, comme le montre leur positionnement dans les classements de popularité.
À l'exception d'Elasticsearch, nous n'avons pas remarqué la présence de bases de données NoSQL cette année. Elasticsearch a de nouveau été mis en avant, notamment avec l'émergence de la recherche vectorielle.
La recherche vectorielle, c’est quoi ?
Prenons l'exemple développé dans la conférence "La recherche sous stéroïdes - une histoire de sémantique", en se basant sur l'application "jolimoi", un site de e-commerce de produits de beauté et cosmétiques. Imaginons que vous recherchiez un produit pour les cheveux bouclés. Une recherche classique vous renverrait uniquement les produits dont la fiche contient explicitement ces termes. Ainsi, vous pourriez passer à côté de produits qui pourraient également vous intéresser, comme ceux destinés aux cheveux crépus par exemple. La recherche vectorielle vient résoudre ce problème.
Comment optimiser la recherche avec le pouvoir des vecteurs ?
Pour ce faire, nous utilisons un modèle de machine learning "embedding" pour passer notre catalogue de produits en revue, le transformant ainsi en vecteurs. Ce modèle rapproche ainsi les vecteurs de produits qu'il considère comme similaires, tels que les produits pour cheveux bouclés et les produits pour cheveux crépus, par exemple. Une fois que notre représentation vectorielle est disponible, la recherche de l'utilisateur est également "vectorisée" par le modèle pour trouver ses voisins les plus proches. Ainsi, nous sommes en mesure de faire correspondre des recherches qui ne correspondraient pas à des requêtes "classiques".
Et la recherche mixte ?
La recherche mixte combine les résultats d'une recherche vectorielle et d'une recherche classique en fusionnant les deux ensembles de résultats. Cette fusion peut s'effectuer de plusieurs manières, notamment en donnant la priorité en fonction des scores de correspondance. Généralement, cette approche garantit que les premiers résultats, s'ils existent, correspondent étroitement à la recherche initiale, tout en incluant les résultats suivants, plus diversifiés grâce à la recherche vectorielle.
Nouveautés technologiques : qu’en est-il de la sécurité ?
Comme précédemment mentionné, la sécurité a principalement été abordée dans le contexte de l'Intelligence Artificielle. Cependant, il est important de noter qu'il y avait également des conférences plus traditionnelles sur la sécurisation des infrastructures, notamment des conteneurs et des clusters Kubernetes, ainsi que sur les pratiques de gestion des secrets. Parmi celles-ci, "La fin des mots de passe partagés avec Vault et Boundary" et "Le cauchemar des attaquants : une infrastructure sans secret" ont été présentées.
Les avancées technologiques permettent aujourd'hui de garantir un niveau élevé de sécurité sans trop impacter les développeurs et les opérationnels. Cette approche favorise un bon niveau de sécurité en proposant des outils moins contraignants et plus facilement adoptés, réduisant ainsi les risques de contournement. Elle contribue également à la productivité et au confort de travail des équipes de développement (devs) et d'exploitation (ops).
Dans l'ensemble, la plupart des sujets abordés intégraient une composante sur la sécurité, ce qui est extrêmement positif !
Cette édition de Devoxx s'est révélée une source précieuse d'apprentissage et de nouvelles perspectives. Nous avons observé une approche pragmatique des technologies, qui met l'accent sur une adoption raisonnée et une optimisation des outils existants. Les discussions animées autour de Java, de l'IA, de l'architecture et du DevOps ont illustré une communauté déterminée à aligner les solutions technologiques sur les besoins réels.
Au-delà des tendances émergentes et des nouveautés technologiques, cette conférence nous rappelle l'importance d'utiliser les technologies de manière judicieuse pour répondre de manière précise aux exigences spécifiques, sans succomber aux engouements passagers. La simplicité et l'efficacité semblent être les valeurs phares pour les années à venir.
Nous sommes impatients de voir comment ces tendances évolueront et sommes motivés à poursuivre le partage de nos expériences et de nos découvertes. Rendez-vous l'année prochaine pour de nouvelles aventures à Devoxx !