Recent Posts
Archives

Archive for the ‘fr-FR’ Category

PostHeaderIcon Gestion des incidents : Parler et agir

Lors de Devoxx France 2023, Hila Fish a présenté une conférence captivante de 47 minutes intitulée « Incident Management – Talk the Talk, Walk the Walk » (lien YouTube), proposant une feuille de route pour une gestion efficace des incidents. Enregistrée en avril 2023 au Palais des Congrès à Paris, Hila, ingénieure DevOps senior chez Wix (site Wix), a partagé ses 15 années d’expérience dans la tech, mettant en avant des stratégies proactives et des processus structurés pour gérer les incidents en production. Son discours, enrichi de conseils pratiques et d’anecdotes réelles, a inspiré les participants à non seulement parler de gestion des incidents, mais à exceller dans ce domaine. Cet article explore le cadre de Hila, soulignant comment se préparer et résoudre les incidents tout en préservant la valeur business et le sommeil.

Repenser les incidents avec une mentalité business

Hila a commencé par redéfinir la perception des incidents, incitant à passer d’une vision technique étroite à une approche orientée business. Elle a défini les incidents comme des événements risquant des pertes de revenus, l’insatisfaction des clients, des violations de données ou des atteintes à la réputation, les distinguant des alertes mineures. Sans une gestion adéquate, les incidents peuvent entraîner des temps d’arrêt, une productivité réduite et des violations des accords de niveau de service (SLA), coûteux pour les entreprises. Hila a insisté sur le fait que les développeurs et ingénieurs doivent comprendre le « pourquoi » de leurs systèmes — comment les pannes affectent les revenus, les clients et la réputation.

Citants Werner Vogels, CTO d’AWS, Hila a rappelé que « tout échoue tout le temps », des systèmes de production à l’endurance humaine. Cette réalité rend les incidents inévitables, non des urgences à paniquer. En anticipant les échecs, les équipes peuvent aborder les incidents calmement, armées d’un processus structuré. La mentalité business de Hila encourage les ingénieurs à prioriser les résultats alignés sur les objectifs organisationnels, comme minimiser les temps d’arrêt et maintenir la confiance des clients. Cette perspective pose les bases de son cadre structuré de gestion des incidents, conçu pour éviter le chaos et optimiser l’efficacité.

Un processus structuré pour la résolution des incidents

Hila a présenté un processus en cinq piliers pour gérer les incidents, adapté du cadre de PagerDuty mais affiné par son expérience : Identifier et Catégoriser, Notifier et Escalader, Investiguer et Diagnostiquer, Résoudre et Récupérer, et Clôture de l’Incident. Chaque pilier inclut des questions clés pour guider les ingénieurs vers la résolution.

  • Identifier et Catégoriser : Hila conseille d’évaluer l’ampleur et l’impact business de l’incident. Des questions comme « Est-ce que je comprends toute l’étendue du problème ? » et « Peut-on attendre les heures ouvrables ? » déterminent l’urgence. Si une alerte provient d’une plainte client plutôt que d’outils comme PagerDuty, cela signale une lacune dans la détection à corriger après l’incident.

  • Notifier et Escalader : La communication est cruciale. Hila a souligné l’importance de notifier les équipes de support, les ingénieurs clients et les équipes dépendantes pour maintenir la transparence et respecter les SLA. Les alertes mal classifiées doivent être ajustées pour refléter la véritable gravité.

  • Investiguer et Diagnostiquer : Concentrez-vous sur les informations pertinentes pour éviter de perdre du temps. Hila a partagé un exemple où des ingénieurs débattaient de détails de flux non pertinents, retardant la résolution. Poser « Ai-je trouvé la cause racine ? » assure la progression, avec une escalade si l’investigation stagne.

  • Résoudre et Récupérer : La solution la plus rapide préservant la stabilité du système est idéale. Hila a mis en garde contre les correctifs « rapides et sales », comme redémarrer un service sans traiter les causes sous-jacentes, qui peuvent réapparaître et nuire à la fiabilité. Des correctifs permanents et des mesures préventives sont essentiels.

  • Clôture de l’Incident : Après résolution, informez toutes les parties prenantes, vérifiez les alertes, mettez à jour les runbooks et évaluez si un post-mortem est nécessaire. Hila a insisté sur la documentation immédiate des leçons pour capturer les détails avec précision, favorisant une culture d’apprentissage sans blâme.

Ce processus structuré réduit le temps moyen de résolution, minimise les coûts et améliore la fiabilité des systèmes, en phase avec la philosophie business de Hila.

Traits essentiels des gestionnaires d’incidents

Hila a détaillé dix traits cruciaux pour une gestion efficace des incidents, proposant des moyens pratiques de les développer :

  • Réflexion rapide : Les incidents impliquent souvent des problèmes inconnus, nécessitant des décisions rapides et créatives. Hila a suggéré de s’entraîner via des sessions de brainstorming ou des exercices d’équipe comme le paintball pour renforcer l’adaptabilité.

  • Filtrer les informations pertinentes : Connaître les flux d’un système aide à distinguer les données critiques du bruit. La familiarité avec l’architecture système améliore cette compétence, accélérant le débogage.

  • Travailler sous pression : Hila a raconté l’histoire d’un collègue paralysé par 300 alertes lors de son premier quart d’astreinte. Collecter des données pertinentes réduit le stress en restaurant le contrôle. Apprendre les flux système en amont renforce la confiance.

  • Travail méthodique : Suivre son processus basé sur les piliers assure une progression constante, même sous pression.

  • Humilité : Demander de l’aide privilégie les besoins business à l’ego. Hila a encouragé l’escalade des problèmes non résolus plutôt que de perdre du temps.

  • Résolution de problèmes et attitude proactive : Une approche positive et proactive favorise les solutions. Hila a raconté avoir poussé des collègues réticents à essayer des correctifs suggérés, évitant la stagnation.

  • Propriété et initiative : Même après escalade, les gestionnaires doivent vérifier la progression, comme Hila l’a fait en relançant un DBA silencieux.

  • Communication : Des mises à jour claires et concises aux équipes et clients sont vitales. Pour les moins communicatifs, Hila a recommandé des lignes directrices prédéfinies pour les canaux et le contenu.

  • Leadership sans autorité : La confiance et le calme inspirent la confiance, permettant aux gestionnaires de diriger efficacement les équipes.

  • Engagement : La passion pour le rôle stimule la propriété et l’initiative. Hila a averti que l’apathie pourrait signaler un épuisement ou un mauvais ajustement professionnel.

Ces traits, affinés par la pratique et la réflexion, permettent aux ingénieurs de gérer les incidents avec clarté et détermination.

Préparation proactive pour réussir ses incidents

Le message central de Hila était le pouvoir de la proactivité, comparé à une écoute active en classe pour préparer un examen. Elle a détaillé des étapes proactives pour le travail quotidien et les actions post-incident pour garantir la preparedness :

  • Actions post-incident : Rédigez des rapports de fin de quart d’astreinte pour documenter les problèmes récurrents, utiles pour la sensibilisation de l’équipe et les audits. Notez immédiatement les observations pour un post-mortem, même sans réunion formelle, pour capturer les leçons. Ouvrez des tâches pour prévenir les futurs incidents, corrigez les alertes faussement positives, mettez à jour les runbooks et automatisez les problèmes auto-réparables. Partagez des connaissances détaillées via des manuels ou des briefings pour aider les équipes à apprendre des processus de débogage.

  • Proactivité quotidienne : Lisez les rapports de fin de quart des coéquipiers pour rester informé des changements en production. Connaissez les contacts d’escalade pour d’autres domaines (par exemple, développeurs pour des services spécifiques) pour éviter les retards. Étudiez l’architecture système et les flux d’applications pour identifier les points faibles et rationaliser le dépannage. Surveillez les tâches des coéquipiers et les changements en production pour anticiper les impacts. Soyez une personne ressource, partageant vos connaissances pour bâtir la confiance et réduire les efforts de collecte d’informations.

L’approche proactive de Hila garantit que les ingénieurs sont « prêts ou non » lorsque les alertes de PagerDuty ou OpsGenie arrivent, minimisant les temps d’arrêt et favorisant le succès business.

Conclusion

La présentation de Hila Fish à Devoxx France 2023 a été une masterclass en gestion des incidents, mêlant processus structurés, traits essentiels et stratégies proactives. En adoptant une mentalité business, en suivant un cadre de résolution clair, en cultivant des compétences clés et en se préparant avec diligence, les ingénieurs peuvent transformer les incidents chaotiques en défis gérables. Son accent sur la préparation et la collaboration garantit des résolutions efficaces tout en préservant le sommeil — une victoire pour les ingénieurs et les entreprises.

Visionnez la conférence complète sur YouTube pour explorer davantage les idées de Hila. Son travail chez Wix (site Wix) reflète un engagement envers l’excellence DevOps, et des ressources supplémentaires sont disponibles via Devoxx France (site Devoxx France). Comme Hila l’a rappelé, maîtriser la gestion des incidents signifie se préparer, rester calme et toujours prioriser le business — car lorsque les incidents frappent, vous serez prêt à agir.

PostHeaderIcon Et si on parlait un peu de sécurité ? Un guide pour les développeurs

Introduction

Julien Legras, expert en sécurité chez SFEIR, livre une présentation captivante à Devoxx France 2023, intitulée « Et si on parlait un peu de sécurité ? ». Dans cette conférence de 14 minutes, Legras démystifie la sécurité des applications pour les développeurs, mettant en avant des mesures pratiques pour protéger les logiciels sans devenir spécialiste en sécurité. S’appuyant sur son travail chez SFEIR, une société de conseil en transformation digitale, il propose une feuille de route pour développer des applications sécurisées dans des environnements rapides.

Points clés

Legras commence par remettre en question une idée répandue chez les développeurs : la sécurité est le travail de quelqu’un d’autre. Il soutient que les développeurs sont la première ligne de défense, car ils écrivent le code ciblé par les attaquants. Chez SFEIR, où les clients vont des startups aux grandes entreprises, Legras a vu comment de petites erreurs de sécurité mènent à des failles majeures.

Il décrit trois pratiques essentielles :

  • Validation des entrées : Nettoyer toutes les entrées utilisateur pour prévenir les attaques par injection, comme SQL ou XSS.

  • Sécurisation des API : Utiliser l’authentification (par exemple, OAuth) et limiter les taux pour protéger les points d’accès.

  • Gestion des dépendances : Mettre à jour régulièrement les bibliothèques et analyser les vulnérabilités avec des outils comme Dependabot.

Legras partage une étude de cas sur une plateforme e-commerce d’un client, où l’implémentation de HTTPS et une gestion sécurisée des sessions ont empêché une fuite de données. Il insiste également sur l’importance des journaux et de la surveillance pour détecter tôt les anomalies. La conférence équilibre conseils techniques et astuces culturelles, comme promouvoir une mentalité « sécurité d’abord » via des formations d’équipe.

Leçons apprises

La présentation de Legras offre des enseignements pratiques :

  • Assumer la sécurité : Les développeurs doivent intégrer la sécurité dans leur travail quotidien, sans la déléguer.

  • Utiliser les outils intelligemment : Les scanners automatisés et linters détectent les problèmes tôt, mais le jugement humain reste clé.

  • Former les équipes : Des ateliers réguliers sur la sécurité renforcent la sensibilisation et réduisent les risques.

Ces idées sont cruciales pour les développeurs travaillant sur des applications publiques ou dans des secteurs réglementés. Le style accessible de Legras rend la sécurité réalisable, pas intimidante.

Conclusion

La conférence de Julien Legras donne aux développeurs les moyens de prendre en charge la sécurité des applications avec des mesures pratiques et actionnables. Son expérience chez SFEIR souligne l’importance de mesures proactives pour protéger les logiciels. Cette présentation est essentielle pour les développeurs cherchant à construire des applications sécurisées et résilientes sans ralentir la livraison.

PostHeaderIcon Ce que l’open source peut apprendre des startups : Une perspective nouvelle

Introduction

Dans sa présentation à Devoxx France 2023, « Ce que l’open source peut apprendre des startups », Adrien Pessu, évangéliste technique chez MongoDB, explore comment les principes des startups peuvent revitaliser les communautés open source. Cette conférence de 14 minutes s’appuie sur son expérience à l’intersection des startups et des logiciels open source. En appliquant des stratégies entrepreneuriales, soutient-il, les projets open source peuvent devenir plus durables et percutants, offrant des leçons précieuses aux développeurs et mainteneurs.

Points clés

Pessu commence par souligner les défis de l’open source : l’épuisement des mainteneurs, les contributions fragmentées et le manque de financement. Il oppose cela aux startups, qui prospèrent grâce à l’agilité, l’orientation utilisateur et la croissance itérative. Chez MongoDB, où des outils open source comme MongoDB Atlas sont centraux, Pessu a observé comment des pratiques inspirées des startups renforçaient l’engagement communautaire.

Il propose trois stratégies inspirées des startups :

  • Conception centrée utilisateur : Impliquer les utilisateurs tôt pour façonner les fonctionnalités, comme les startups valident l’adéquation produit-marché.

  • Itération légère : Publier des fonctionnalités minimales viables et itérer selon les retours, évitant le perfectionnisme.

  • Communauté comme clients : Traiter les contributeurs comme des clients précieux, avec une documentation claire et un support réactif.

Pessu partage l’exemple des pilotes open source de MongoDB, où un processus de contribution simplifié, inspiré de l’onboarding des startups, a boosté la participation communautaire. Il aborde également le financement, suggérant des modèles comme le développement sponsorisé ou les fondations, similaires aux levées de fonds des startups. La conférence met l’accent sur des objectifs mesurables, comme le suivi de la rétention des contributeurs, pour évaluer la santé du projet.

Leçons apprises

Les idées de Pessu sont actionnables pour les mainteneurs open source :

  • Prioriser les utilisateurs : Développer des fonctionnalités répondant à des problèmes réels, validées par les retours communautaires.

  • Simplifier les contributions : Des directives claires et des victoires rapides encouragent une participation soutenue.

  • Assurer la durabilité : Explorer des modèles de financement pour soutenir les mainteneurs sans compromettre les valeurs open source.

Ces leçons résonnent avec les développeurs impliqués dans l’open source ou cherchant à rendre leurs projets plus inclusifs. La perspective startup de Pessu offre un cadre novateur pour relever des défis de longue date.

Conclusion

La présentation d’Adrien Pessu comble le fossé entre startups et open source, montrant comment des tactiques entrepreneuriales peuvent renforcer les communautés. Son expérience chez MongoDB illustre le pouvoir de l’orientation utilisateur et de l’itération pour pérenniser les projets. Cette conférence est incontournable pour les développeurs et mainteneurs visant à rendre l’open source plus vibrant et résilient.

Orateur : Adrien Pessu

PostHeaderIcon [DevoxxFR 2022] Père Castor 🐻, raconte-nous une histoire (d’OPS)

Lors de Devoxx France 2022, David Aparicio, Data Ops chez OVHcloud, a partagé une conférence de 44 minutes sur l’apprentissage à partir des échecs en opérations informatiques. David a analysé les post-mortems d’incidents majeurs survenus chez des géants comme GitHub, Amazon, Google, OVHcloud, Apple, Fastly, Microsoft, GitLab et Facebook. En explorant les causes racines, les remédiations et les bonnes pratiques, il a montré comment tirer des leçons des erreurs pour renforcer la résilience des systèmes. Suivez OVHcloud sur ovhcloud.com et twitter.com/OVHcloud.

Comprendre les post-mortems

David a commencé par expliquer ce qu’est un post-mortem : un document rédigé après un incident pour comprendre ce qui s’est passé, identifier les causes et prévenir les récurrences. Il inclut l’historique de l’incident, les flux d’information, l’organisation (qui a agi, avec quelle équipe), les canaux de communication avec les clients, l’utilisation des ressources et les processus suivis. David a souligné l’importance de la transparence, citant des initiatives comme les meetups de développeurs où les échecs sont partagés pour démystifier les incidents.

Il a illustré son propos avec une histoire fictive d’Elliot, un junior qui, par erreur, supprime une base de données de production en suivant une documentation mal structurée. Cet incident, inspiré de cas réels chez AWS (2017), GitLab et DigitalOcean, montre les dangers d’un accès non contrôlé à la production. David a recommandé des garde-fous comme des approbations manuelles pour les commandes critiques (par exemple, DROP TABLE), des rôles RBAC stricts, et des tests réguliers des backups pour garantir leur fiabilité.

Les incidents personnels : le legacy à l’épreuve

David a partagé une expérience personnelle chez OVHcloud, où il gère le data lake pour répliquer les données internes. Lors d’une astreinte, un week-end d’été, il a été alerté d’un problème sur une infrastructure legacy sans documentation claire. Un service saturait sa file de connexions (1024 clients maximum), provoquant des refus. Sans réponse des développeurs, David a opté pour une solution KISS (Keep It Simple, Stupid) : une sonde vérifiant la connectivité toutes les cinq minutes, redémarrant le service si nécessaire. Ce script, en place depuis un an et demi, a redémarré le service 70 fois, évitant de nouveaux incidents.

Un autre incident concernait une application Java legacy, tombant après 20 à 40 minutes malgré des redémarrages. Les logs montraient des déconnexions ZooKeeper et des crashs JVM. Plutôt que d’ajuster la mémoire (heap tuning), David a découvert un script de nettoyage propriétaire dans l’historique. Appliqué deux fois par semaine, ce script a résolu le problème durablement. Ces cas illustrent l’importance de comprendre le legacy, d’éviter les solutions complexes et de documenter les correctifs.

Les pannes majeures : CDN et réseaux

David a analysé l’incident Fastly de juin 2021, où une erreur 503 a touché des sites comme The Guardian, The New York Times, Amazon, Twitter et la Maison Blanche. La cause : une configuration client déployée sans test le 8 juin, activée par une demande du 12 mai, révélant un point de défaillance unique (SPoF) dans le CDN. Résolu en 45 minutes, cet incident souligne l’importance de tester les changements en pré-production (par exemple, via blue-green deployments ou shadow traffic) et de personnaliser les messages d’erreur pour améliorer l’expérience utilisateur.

Un autre cas marquant est la panne Facebook de septembre 2021, causée par une mise à jour du protocole BGP (Border Gateway Protocol). Les serveurs DNS, incapables d’accéder aux datacenters, se sont mis en mode protection, coupant l’accès à Facebook, Instagram, WhatsApp et même aux outils internes (Messenger, LDAP). Les employés ne pouvaient ni badger ni consulter la documentation, obligeant une intervention physique avec des disqueuses pour accéder aux racks. David a recommandé des TTL (Time To Live) plus longs pour les DNS, des canaux de communication séparés et des routes de secours via d’autres cloud providers.

Bonnes pratiques et culture de l’échec

David a conclu en insistant sur la nécessité de ne pas blâmer les individus, comme dans le cas d’Elliot, mais de renforcer les processus. Il a proposé des tests réguliers de backups, des exercices de chaos engineering (par exemple, simuler une erreur 500 un vendredi après-midi), et l’adoption de pratiques DevSecOps pour intégrer la sécurité dès les tests unitaires. Il a également suggéré de consulter les post-mortems publics (comme ceux de GitLab ou ElasticSearch) pour s’inspirer et d’utiliser des outils comme Terraform pour automatiser les déploiements sécurisés. Enfin, il a encouragé à rejoindre OVHcloud pour expérimenter et apprendre des incidents dans un environnement transparent.

PostHeaderIcon Kafka Streams @ Carrefour : Traitement big data à la vitesse de l’éclair

Lors de Devoxx France 2022, François Sarradin et Jérémy Sebayhi, membres des équipes data de Carrefour, ont partagé un retour d’expérience de 45 minutes sur l’utilisation de Kafka Streams pour des pipelines big data en temps réel. François, technical lead chez Moshi, et Jérémy, ingénieur senior chez Carrefour, ont détaillé leur transition des systèmes batch Spark et Hadoop vers un traitement stream réactif sur Google Cloud Platform (GCP). Leur talk a couvert l’adoption de Kafka Streams pour le calcul des stocks et des prix, les défis rencontrés et les solutions créatives mises en œuvre. Découvrez Carrefour sur carrefour.com et Moshi sur moshi.fr.

Du batch au stream processing

François et Jérémy ont débuté en comparant le traitement batch et stream. La plateforme legacy de Carrefour, datant de 2014, reposait sur Spark et Hadoop pour des jobs batch, traitant les données comme des fichiers avec des entrées et sorties claires. Les erreurs étaient gérables en corrigeant les fichiers d’entrée et en relançant les pipelines. Le streaming, en revanche, implique des flux d’événements continus via des topics Kafka, où les erreurs nécessitent une gestion en temps réel sans perturber le pipeline. Un événement corrompu ne peut être simplement supprimé, car les données historiques peuvent couvrir des années, rendant le reprocessing impraticable.

Kafka Streams, un framework réactif basé sur Apache Kafka, a permis à Carrefour de passer au stream processing. Il exploite Kafka pour un transit de données scalable et RocksDB pour un stockage d’état colocalisé à faible latence. François a expliqué que les développeurs définissent des topologies—graphes acycliques dirigés (DAG) similaires à ceux de Spark—avec des opérations comme map, flatMap, reduce et join. Kafka Streams gère automatiquement la création des topics, les stores d’état et la résilience, simplifiant le développement. L’intégration avec les services GCP (GCS, GKE, BigTable) et les systèmes internes de Carrefour a permis des calculs de stocks et de prix en temps réel à l’échelle nationale.

Surmonter les défis d’adoption

Adopter Kafka Streams chez Carrefour n’a pas été sans obstacles. Jérémy a noté que beaucoup d’équipes manquaient d’expérience avec Kafka, mais la familiarité avec Spark a facilité la transition, les deux utilisant des paradigmes de transformation similaires. Les équipes ont développé indépendamment des pratiques pour le monitoring, la configuration et le déploiement, consolidées ensuite en best practices partagées. Cette approche pragmatique a créé une base commune pour les nouveaux projets, accélérant l’adoption.

Le changement nécessitait une adaptation culturelle au-delà des compétences techniques. La plateforme data de Carrefour, gérant des volumes massifs et des données à haute vélocité (stocks, prix, commandes), exigeait un changement de mindset du batch vers le réactif. Le stream processing implique des jointures continues avec des bases externes, contrairement aux datasets statiques des batchs. François et Jérémy ont souligné l’importance d’une documentation précoce et d’un accompagnement expert pour naviguer dans les complexités de Kafka Streams, surtout lors des déploiements en production.

Bonnes pratiques et architectures

François et Jérémy ont partagé les pratiques clés émergées sur deux ans. Pour les schémas des topics, ils utilisaient Schema Registry pour typer les données, préférant des clés obligatoires pour assurer la stabilité des partitions et évitant les champs optionnels pour prévenir les ruptures de contrat. Les valeurs des messages incluaient des champs optionnels pour la flexibilité, avec des champs obligatoires comme les IDs et timestamps pour le débogage et l’ordonnancement des événements.

Maintenir des topologies stateful posait des défis. Ajouter de nouvelles transformations (par exemple, une nouvelle source de données) nécessitait de retraiter les données historiques, risquant des émissions dupliquées. Ils ont proposé des solutions comme les déploiements blue-green, où la nouvelle version construit son état sans produire de sortie jusqu’à ce qu’elle soit prête, ou l’utilisation de topics compactés comme snapshots pour stocker uniquement le dernier état par clé. Ces approches minimisaient les perturbations mais exigeaient une planification rigoureuse, les déploiements blue-green doublant temporairement les besoins en ressources.

Métriques et monitoring

Le monitoring des applications Kafka Streams était crucial. François a mis en avant des métriques clés : lag (messages en attente par topic/consumer group), indiquant les points de contention ; end-to-end latency, mesurant le temps de traitement par nœud de topologie ; et rebalance events, déclenchés par des changements de consumer group, pouvant perturber les performances. Carrefour utilisait Prometheus pour collecter les métriques et Grafana pour des dashboards, assurant une détection proactive des problèmes. Jérémy a insisté sur l’importance des métriques custom via une couche web pour les health checks, les métriques JMX de Kafka Streams n’étant pas toujours suffisantes.

Ils ont aussi abordé les défis de déploiement, utilisant Kubernetes (GKE) avec des readiness probes pour surveiller les états des applications. Une surallocation de CPU pouvait retarder les réponses aux health checks, causant des évictions de consumer groups, d’où l’importance d’un tuning précis des ressources. François et Jérémy ont conclu en vantant l’écosystème robuste de Kafka Streams—connecteurs, bibliothèques de test, documentation—tout en notant que sa nature événementielle exige un mindset distinct du batch. Leur expérience chez Carrefour a démontré la puissance de Kafka Streams pour des données en temps réel à grande échelle, incitant le public à partager ses propres retours.

PostHeaderIcon [DevoxxFR 2022] Exploiter facilement des fonctions natives avec le Projet Panama depuis Java

Lors de Devoxx France 2022, Brice Dutheil a présenté une conférence de 28 minutes sur le Projet Panama, une initiative visant à simplifier l’appel de fonctions natives depuis Java sans les complexités de JNI ou de bibliothèques tierces. Brice, contributeur actif à l’écosystème Java, a introduit l’API Foreign Function & Memory (JEP-419), montrant comment elle relie le monde géré de Java au code natif en C, Swift ou Rust. À travers des démonstrations de codage en direct, Brice a illustré le potentiel de Panama pour des intégrations natives fluides. Suivez Brice sur Twitter à twitter.com/Brice_Dutheil pour plus d’insights Java.

Simplifier l’intégration de code natif

Brice a débuté en expliquant la mission du Projet Panama : connecter l’environnement géré de Java, avec son garbage collector, au monde natif de C, Swift ou Rust, plus proche de la machine. Traditionnellement, JNI imposait des étapes laborieuses : écrire des classes wrapper, charger des bibliothèques et générer des headers lors des builds. Ces processus étaient sujets aux erreurs et chronophages. Des alternatives comme JNA et JNR amélioraient l’expérience développeur en générant des bindings au runtime, mais elles étaient plus lentes et moins sécurisées.

Lancé en 2014, le Projet Panama répond à ces défis avec trois composantes : les API vectorielles (non couvertes ici), les appels de fonctions étrangères et la gestion de la mémoire. Brice s’est concentré sur l’API Foreign Function & Memory (JEP-419), disponible en incubation dans JDK 18. Contrairement à JNI, Panama élimine les complexités du build et offre des performances proches du natif sur toutes les plateformes. Il introduit un modèle de sécurité robuste, limitant les opérations dangereuses et envisageant de restreindre JNI dans les futures versions de Java (par exemple, Java 25 pourrait exiger un flag pour activer JNI). Brice a souligné l’utilisation des method handles et des instructions d’invocation dynamique, inspirées des avancées du bytecode JVM, pour générer efficacement des instructions assembleur pour les appels natifs.

Démonstrations pratiques avec Panama

Brice a démontré les capacités de Panama via du codage en direct, commençant par un exemple simple appelant la fonction getpid de la bibliothèque standard C. À l’aide du SystemLinker, il a effectué une recherche de symbole pour localiser getpid, créé un method handle avec un descripteur de fonction définissant la signature (retournant un long Java), et l’a invoqué pour récupérer l’ID du processus. Ce processus a contourné les lourdeurs de JNI, nécessitant seulement quelques lignes de code Java. Brice a insisté sur l’activation de l’accès natif avec le flag –enable-native-access dans JDK 18, renforçant le modèle de sécurité de Panama en limitant l’accès à des modules spécifiques.

Il a ensuite présenté un exemple plus complexe avec la fonction crypto_box de la bibliothèque cryptographique Libsodium, portable sur des plateformes comme Android. Brice a alloué des segments de mémoire avec un ResourceScope et un NativeAllocator, garantissant la sécurité mémoire en libérant automatiquement les ressources après usage, contrairement à JNI qui dépend du garbage collector. Le ResourceScope prévient les fuites mémoire, une amélioration significative par rapport aux buffers natifs traditionnels. Brice a également abordé l’appel de code Swift via des interfaces compatibles C, démontrant la polyvalence de Panama.

Outils et potentiel futur

Brice a introduit jextract, un outil de Panama qui génère des mappings Java à partir de headers C/C++, simplifiant l’intégration de bibliothèques comme Blake3, une fonction de hachage performante écrite en Rust. Dans une démo, il a montré comment jextract créait des bindings compatibles Panama pour les structures de données et fonctions de Blake3, permettant aux développeurs Java de tirer parti des performances natives sans bindings manuels. Malgré quelques accrocs, la démo a souligné le potentiel de Panama pour des intégrations natives transparentes.

Brice a conclu en soulignant les avantages de Panama : simplicité, rapidité, compatibilité multiplateforme et sécurité mémoire renforcée. Il a noté son évolution continue, avec JEP-419 en incubation dans JDK 18 et une deuxième preview prévue pour JDK 19. Pour les développeurs d’applications desktop ou de systèmes critiques, Panama offre une solution puissante pour exploiter des fonctions spécifiques aux OS ou des bibliothèques optimisées comme Libsodium. Brice a encouragé le public à expérimenter Panama et à poser des questions, renforçant son engagement via Twitter.

PostHeaderIcon Retours du Devoxx France 2016 (4): Gradle: Harder, Better, Stronger, Faster

La conference est animee par Andres Almiray de Canoo Fellow, un Java Champion qui nous vient du Mexique. Officiellement, il s’agit de presenter Gradle pour un usage avance ; neanmoins, Andres dissimule a peine son intention de nous faire quitter Maven pour Gradle.

Read the rest of this entry »

PostHeaderIcon Retours sur Devoxx France 2016 (3): “Retours sur Java 8” par JM Doudoux

L’amphi bleu -le plus grand et confortable- a ete reserve pour une conference ne paie pas de mine a priori: “Retours sur Java 8”. Pourquoi un tel engouement? La raison probable en est le speaker: Jean-Michel Doudoux, connu dans la planete Java francophone comme “jmdoudoux”.

JM Doudoux

Si un developpeur Java francophone a passe les 15 dernieres annees a l’isolement dans un goulag en Coree du Nord, voici un rappel: JM Doudoux est un GRAND monsieur, surtout connu pour ses tutoriels Java, qu’il publie continument depuis 1999. 17 ans, ca fait un bail… Jean-Michel est l’un des Java Champions francais.

Personnellement, je suis redevable a Jean-Michel d’avoir lu des dizaines et meme des centaines de pages de ses tutoriels, quand j’ai commence a utiliser Java en milieu professionnel et non seulement academique, et ce pendant des annees. Je ne compte pas les heures passees dessus, et je repense a la malheureuse imprimante de SGF au 5e etage qui avait la lourde tache d’imprimer chaque jour son lot de papier.

Pour revenir au personnage, premiere observation: Jean-Michel est populaire: l’amphi est plein, avec du monde dehors qui fait du forcing pour tenter de rentrer. Parmi l’assistance, un tiers de la salle n’utilise pas Java 8, et on reconnait des grosses pointures de la communaute…

Jean-Michel est modeste. Il s’etonne qu’on lui ait affecte le grand amphi, et plus encore que cet amphi soit plein.

Jean-Michel est accessible. Il ne refuse pas de parler et faire des selfies apres sa conference et dans les couloirs.

Enfin, Jean-Michel est quebecois ou, du moins, il parle parle comme les habitants de la Belle Province. Il mentionne “fabriques”, “didacticiels” et autres “bonnes pratiques” la ou d’autres cedent aux courants dominants des “factories”, “tutorials” et “best practices”.

(Note: pour ma part je reste sceptique sur certaines traductions, et prefere recourir aux termes originaux)

Retours sur Java 8

Jean-Michel revient d’abord sur les notions de best practice, definie comme une facon de resoudre un probleme meilleure que les autres. Les best practices sont mouvantes (dans les mots: “empiriques, contextuelles et mouvantes”) avec le temps car les methodologies, materiels et logiciels evoluent, et necessitent donc d’etre periodiquement remises en cause.

Ensuite Jean-Michel revient sur les differents apports de Java 8: comme l’Optionnal, les streams, les default methods et la nouvelle API Date, etc.

Si je resume grossierement l’intervention de Jean-Michel: utiliser les Optionnal en faisant attention, idem pour les streams.

With the master

Liens

 

PostHeaderIcon Retours sur Devoxx France 2016 (2): Codenvy

J’ai pu feliciter en direct l’equipe de Codenvy, qui tenait un stand promouvant Eclipse Che.

Histoire personnelle des IDE

Je ne suis pas plus un fan d’Eclipse. Mon opinion est que l’IDE a grandi de maniere anarchique et manque de nombreuses features d’IDEA, bien que le retard se comble avec le temps. La plethore de plugins fait que les incompatibilites sont nombreuses, et l’outil se revele lent au final. A vouloir etre le plus generaliste possible et contenter tout le monde, on finit par ne plus satisfaire meme con coeur de cible.

J’ai commence a coder en Java sous XEmacs ; mon premier IDE etait Sun Forte en 2002 aux Etats-Unis. J’ai continue avec Netbeans chez Philips en 2003 et bascule sous Eclipse en 2005 a mon entree chez Sungard-Finance (alias GP3). A l’epoque, la facilite de mise a jour et d’integration des plugins -en l’occurence Maven 1, Tomcat, Subversion, SOAP et Python- m’avaient conquis. Deja pourtant je devais regulierement passer du temps a gerer les conflits et nettoyer le workspace.

Mes premiers essais avec IDEA en 2007 ont ete laborieux, et sans l’insistance de mon equipe je dois avouer que j’y aurais renonce. J’ai encore du utiliser ponctuellement Eclipse en 2010, quand le support de GWT par IDEA n’etait pas convenable, puis en 2013 a l’occasion de l’ecriture de mon premier ouvrage.

Quant a Codenvy.com, j’ai fait sa connaissance en avril 2015. Je l’utilise regulierement pour de petites operations, lorsque ma machine principale de developpement n’est pas disponible.

Aussi c’est dire que je n’ai pas aborde le stand de la Fondation Eclipse avec un oeil favorable. Mais j’ai vite change d’avis quand je me suis fait aborder par un exposant et lui ai dit que, sans vouloir troller, a part Codenvy je ne comptais pas consacrer du temps a Eclipse pour les mois qui viennent.

Codenvy

La philosophie de Codenvy est que notre code source est heberge sous Github, notre base de donnee est sur le cloud et notre application est deployee chez Amazon WebServices. Alors pourquoi ne pas coder directement sur le cloud?

Codenvy met a disposition un IDE en ligne, ma foi bien pratique. Ne nous leurrons pas, en l’etat actuel Codenvy ne peut pas remplacer IntelliJ IDEA, a moins d’etre pret a sacrifier 50% de sa productivite, ce que peu de monde peut se permettre, surtout en milieu professionnel.

Techniquement, Codenvy se presente comme une application web incluse dans le navigateur. Sous le capot tourne le moteur d’Eclipse Che, le futur de l’IDE de la Fondation Eclipse.

Codenvy ne propose pas qu’un editeur de fichiers. Des clients Git et SVN permettent de recuperer ou modifier le code sur un gestionnaire de versions. Enfin, il offre aussi des espaces d’execution sous Docker. Il est ainsi possible de coder une application web, monter une base de donnees MongoDB dans un Docker et deployer le WAR dans un autre conteneur.

Flow

Use cases

Les use cases de Codenvy sont assez varies. J’en vois deux principaux:

Programmation classique

L’editeur de Codenvy permet de developper en environnement decentralise et distribue. L’IDE en ligne a le meme interet que l’editeur de documents sous Google Drive: il est accessible depuis partout, sans necessite d’installer quelque software que ce soit ; de plus, il est toujours mis a jour, sans intervention de l’utilisateur.

Un interet sous-jacent est que le developpement se fait sous un client leger, et la puissance de l’ordinateur hote n’est pas fortement sollicitee: en effet, les operations fortement consommatrices de resources (comme la compilation ou les divers appels IO) sont effectues sur le cloud. Aussi, il devient possible, comme cela m’arrive de temps en temps, de sortir un netbook de 10 ou 11″ de diagonale, avec un simple Atom et 2Go de RAM, pour corriger un bug, commiter et pusher sur Github puis redeployer une instance de prod. Oui oui, a partir un PC qui n’a rien d’un Core i7/SSD/16Go.

Partage d’espace de developpement

Le second cas d’utilisation est le partage de bug/cas via des plateformes sur le net. En cas de probleme, inutile d’uploader un zip, le recuperer, installer le projet, et les librairies, etc. sur le poste local. Non, la personne levant le bug cree juste un espace sur Codenvy, avec la bonne configuration et le cas de reproduction de bug, cree une issue dans Github et poste un lien sur Stackoverflow. Le reste de la planete developpeur peut acceder a l’espace, eventuellement le dupliquer, et resoudre le probleme. Cerise sur le gateau: le ticket sous Github se met a jour avec les commits.

Limitations

Bien evidemment, Codenvy en tant que client leger vient avec son lot de limitations. Tout d’abord, il n’est pas possible d’installer de plugins, par consequent il devient difficile de gerer les langages exotiques.

Les principaux reproches que je fais a Codenvy sont les suivants:

  • pas de completion automatique. Il faudra connaitre ses APIs! 😀
  • support assez limite de Git: les merges sont une galere.
  • raccourcis claviers non configurables. Une vraie torture quand on doit tout faire a la souris.
  • support limite des projets Maven multimodules. Il faut ruser pour pouvoir deployer un WAR.
  • pas de support des telephones mobiles et des tablettes. L’experience est vraiment penible.

Stevan Le Meur, qui travaille (EDIT: dirige?) dans l’equipe de developpement m’a fait une presentation de la version actuellement beta. Elle corrige de nombreux problemes. J’espere pouvoir acceder rapidement a la beta pour me faire une idee plus precise, mais ce que j’ai pu voir etait enthousiasmant.

L’interface de la version beta

Liens

PostHeaderIcon Retours sur Devoxx France 2016 (1): generalites

Je demarre une serie d’articles sur Devoxx France 2016.

Je n’ai pas pu assister a DevoxxFR en 2015, aussi c’est ma premiere fois experience au Palais des Congres a Porte Maillot. Connaissant cet endroit pour avoir participe a d’autres salons et conferences, je ne suis pas totalement perdu.

Quelques remarques a chaud, en vrac:

General

Les sacs ne sont pas distribues a l’entree, mais a l’interieur, dans un stand “goodies”, aux horaires d’ouverture aleatoires pendant les pauses… Resultat: n’ayant pu me procurer mon sac et le cahier que tard, et je n’ai pu prendre de note ce premier jour.

D’autre part, il faisait chaud dans chaque salle, surtout en amphi Maillot… Je compatis avec les speakers qui ont du parler sous les spots de lumiere :-D.

Choix des sujets

Bien sur, la plupart des conferences etait reellement interessante ; neanmoins, il faut le reconnaitre, somme toute assez limitee dans la diversite: les sujets tournent principalement autour des microservices, Android, devops, BigData, etc.

Je ne crains pas que quiconque se soit ennuye. Cependant, si ces sujets sont “tendance” (et concernent les “hipsters” selon les mots de Matt Raible), concretement ils ne parlent pas forcement a tous les developpeurs. En effet, en France la structure du marche du travail fait que, pour une large part d’entre eux, les developpeurs travaillent chez des “grands comptes”, de type banques, assurance, telecom, etc. Je doute que chez les “grands comptes”, beaucoup de monde travaille en 2016 en mode agile sur des micro-services deployes sur des conteneurs Docker heberges sur un cloud orchestre par Kubernetes, pour traiter du BigData en temps reel dont les resultats sont pushes vers une tablette Android via un API REST securisee en HTTPS 2…

De mon cote j’ai la chance de travailler chez une grande variete de clients (finance, assurance, mais aussi PME et startups), donc pas trop de frustration. Cependant, si j’approuve l’ouverture a d’autres technologies et sujets, je regrette que Devoxx s’eloigne peu a peu de ses fondamentaux: l’ecosysteme Java.
Je suis bien conscient qu’il est impossible de contenter tout le monde. Mais peut-etre faudrait-il prevoir plusieurs “niveaux”, pour permettre d’avoir a la fois des ouvertures sur le futur, des initiations pour debutants pour certaines technologies, ou bien des retours d’experience sur comment pousser dans ses retranchements un “vieux” framework utilise sur du code legacy (sachant que dans nos metiers, “vieux” signifie “age de plus de 2 ans”).

Stands et goodies

Ca allait du minimal (stand petit, pas d’interlocuteur technique) avec quelques stylos, au plus original, en passant par les classiques distributions de tee-shirts. Cette annee, la couleur dominante etait le noir.

Opinions personnelles:

  • les stands les plus grands ne sont pas forcement les meilleurs.
  • en general, les geeks preferent parler a des ITs, plutot qu’a des administratifs/recruteurs/commerciaux qui sont persuades qu’AJAX est un club de football des Pays-Bas.

Sponsors

On remarque l’absence de Google et Oracle pour les “gros”, et d’Octo et Xebia du cote des SSII francaises. Evidemment, les entreprises communiquent beaucoup quand elles sont sponsors, beaucoup moins lorsqu’elles ne le sont pas. Nous en sommes donc reduits a speculer sur le “desinteret” de ces entreprises pour Devoxx: reel retrait strategique, desaccords sur ce que doit etre Devoxx, ou simple question de business/marketing.

Parmi les presents, Zenika et TalanLabs ont reussi a s’imposer dans le carre de sponsors platinium, augmentant leur aura aupres de la communaute, aux cotes d’IBM et d’Amazon. J’ai apprecie l’idee du “Startup Village”: cela donne un apercu de nos jeunes pousses francaises.
En dehors de ca, les autres SSII qui se qualifient de “specialistes” de Java (a mon humble avis, il conviendrait plutot de les decrire comme “specialisees en Java”: aucune SSII n’emploie que des specialistes, et encore moins des cadors, du Java): Ippon, Mirakl, 42, Arolla, Aneo, etc.

Enfin, de nombreux editeurs et intervenant de la galaxie Java etaient presents: citons Jahia, IntelliJ, Sonar, Github, StackOverflow, etc. J’en ai profite pour remercier directement les equipes pour le travail et leurs apports a la communaute.

PS

Merci a TalanLabs de faire en sorte que ses consultants puissent assister a Devoxx 😉