<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nicolas GUILHEM</title>
    <description>The latest articles on DEV Community by Nicolas GUILHEM (@nicoguilhem).</description>
    <link>https://dev.to/nicoguilhem</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3396768%2F87311146-6ccb-4a7c-bbe0-242061651de5.jpeg</url>
      <title>DEV Community: Nicolas GUILHEM</title>
      <link>https://dev.to/nicoguilhem</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nicoguilhem"/>
    <language>en</language>
    <item>
      <title>Conférence Dev With AI 2026 : une première édition prometteuse malgré les imprévus</title>
      <dc:creator>Nicolas GUILHEM</dc:creator>
      <pubDate>Thu, 15 Oct 2026 07:52:15 +0000</pubDate>
      <link>https://dev.to/onepoint/conference-dev-with-ai-2026-une-premiere-edition-prometteuse-malgre-les-imprevus-206</link>
      <guid>https://dev.to/onepoint/conference-dev-with-ai-2026-une-premiere-edition-prometteuse-malgre-les-imprevus-206</guid>
      <description>&lt;p&gt;&lt;em&gt;Retour d'expérience co-écrit par &lt;a href="https://www.linkedin.com/in/ivan-b%C3%A9thus-570067b2/" rel="noopener noreferrer"&gt;Ivan Bethus&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/thomas-petit-onepoint/" rel="noopener noreferrer"&gt;Thomas Petit&lt;/a&gt; et &lt;a href="https://www.linkedin.com/in/nicolas-guilhem/" rel="noopener noreferrer"&gt;Nicolas Guilhem&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Intelligence artificielle, mais pannes bien réelles
&lt;/h1&gt;

&lt;p&gt;Nous partons de Bordeaux à l'aube pour assister à la première édition de &lt;a href="https://devw.ai/conference" rel="noopener noreferrer"&gt;Dev With AI&lt;/a&gt;, attirés par une journée autour de l'IA, des retours d'expérience et des échanges entre développeurs. Malheureusement, notre train a près de deux heures de retard : nous arrivons à Paris vers 10h30, juste au moment de la première pause, après avoir manqué les deux premières conférences.&lt;/p&gt;

&lt;p&gt;Alors que nous nous réjouissons de pouvoir suivre notre premier talk, nous avons à peine le temps de prendre un café lorsque l'électricité saute, et pas seulement dans le centre de conférences : dans tout le quartier ! Nous évacuons, déçus...&lt;/p&gt;

&lt;p&gt;Finalement, à 14h, le courant revient et la conférence peut reprendre. Les organisateurs suppriment les questions-réponses pour tenter de rattraper le retard, ce qui sera &lt;em&gt;presque&lt;/em&gt; le cas ; nous manquerons tout de même les derniers talks, qui auront lieu après 18h.&lt;/p&gt;

&lt;p&gt;Heureusement, certaines présentations ont retenu toute notre attention !&lt;/p&gt;

&lt;h1&gt;
  
  
  La Conversation Review : le guide pour faire progresser les équipes AI-native - Marek Kalnik
&lt;/h1&gt;

&lt;p&gt;Dans sa conférence, &lt;a href="https://www.linkedin.com/in/marekkalnik/" rel="noopener noreferrer"&gt;Marek Kalnik&lt;/a&gt; propose de repenser l'exercice de la code review à l'ère de l'IA. Son idée consiste à introduire une revue des conversations ayant conduit à la génération du code, au même titre que les revues de code que nous pratiquons déjà.&lt;br&gt;
Puisque nous sommes maintenant presque tous des &lt;em&gt;Vibecoders&lt;/em&gt; (&lt;em&gt;AI native&lt;/em&gt;, je n'ai toujours pas compris ce que ce terme voulait dire) et que nous ne produisons plus le code, pourquoi s'attacher à le relire ? Marek nous invite à relire ce qui a servi à le générer, c'est-à-dire notre propre production : la conversation que nous avons eue avec l'agent de code. Elle consiste à vérifier avec le développeur ses prompts, les différents messages échangés, les outils utilisés par le LLM, etc., afin d'identifier les points d'amélioration et de partager les bonnes pratiques avec le reste de l'équipe.&lt;br&gt;
Cette pratique semble particulièrement adaptée pour faire grandir une équipe de dev, en l'accompagnant de l'adoption des pratiques agentiques à l'industrialisation et à la mutualisation des compétences associées.&lt;/p&gt;

&lt;h1&gt;
  
  
  La guerre des tokens - Philippe Prados
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/pprados/" rel="noopener noreferrer"&gt;Philippe Prados&lt;/a&gt; prend le temps de disséquer ce qu'il y a vraiment dans un prompt d'agent : le System, les Tools, les AGENTS.md, les Rules, les Skills, le Style, la Memory, l'historique. Et une fois que le tableau est posé, on entre dans le détail de la façon d'optimiser sa consommation de tokens.&lt;/p&gt;

&lt;p&gt;Côté outils, l'idée est de ne plus tout charger d'un coup. Les descriptions d'outils (&lt;code&gt;desc + schema&lt;/code&gt;) et les listings MCP saturent vite. Le principe : passer par un &lt;em&gt;Tool search&lt;/em&gt; plutôt que de tout charger, et utiliser un MCP d'indexation (&lt;code&gt;/ide&lt;/code&gt;, &lt;code&gt;ast-grep&lt;/code&gt;, LSP) pour que l'agent trouve directement le fichier, ou son contenu, au lieu de tout lire.&lt;/p&gt;

&lt;p&gt;Pour les &lt;code&gt;AGENTS.md&lt;/code&gt;, du bon sens : les préférences perso restent au niveau utilisateur, et le projet ne contient que ce qui lui est spécifique. Rien de générique qui viendrait alourdir inutilement. Le &lt;code&gt;/doctor&lt;/code&gt; de Claude est là pour auditer tout ça.&lt;br&gt;
Sur le choix du modèle, là aussi, du classique : Opus pour planifier, Sonnet pour coder, Haiku pour le répétitif. Et &lt;code&gt;/model opusplan&lt;/code&gt; quand on hésite : il planifie avec Opus puis bascule en Sonnet pour l'exécution.&lt;/p&gt;

&lt;p&gt;J'ai beaucoup aimé &lt;a href="https://github.com/juliusbrussee/caveman" rel="noopener noreferrer"&gt;Caveman&lt;/a&gt;. C'est un style condensé qui compresse aussi, au passage, les &lt;code&gt;AGENTS.md&lt;/code&gt; et les &lt;em&gt;Skills&lt;/em&gt;, sans toucher au &lt;em&gt;thinking&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;La mémoire, oui, ça coûte, mais à l'échelle d'une équipe, ça s'amortit. Au prix de quelques tokens, elle améliore la recherche et la pertinence. Parmi les outils cités, je retiens : &lt;code&gt;/memory&lt;/code&gt;, &lt;code&gt;/dream&lt;/code&gt;, &lt;a href="https://github.com/zilliztech/memsearch" rel="noopener noreferrer"&gt;Memsearch&lt;/a&gt;, &lt;a href="https://github.com/mempalace/mempalace" rel="noopener noreferrer"&gt;mempalace&lt;/a&gt;, &lt;a href="https://github.com/oraios/serena" rel="noopener noreferrer"&gt;Serena&lt;/a&gt;, &lt;a href="https://github.com/vectorize-io/hindsight" rel="noopener noreferrer"&gt;Hindsight&lt;/a&gt;, &lt;a href="https://entire.io/" rel="noopener noreferrer"&gt;Entire&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On termine sur les sorties de terminal, le piège silencieux par excellence. Un &lt;code&gt;cat&lt;/code&gt; verbeux et c'est tout l'historique qui gonfle. D'où &lt;a href="https://github.com/rtk-ai/rtk" rel="noopener noreferrer"&gt;RTK&lt;/a&gt;, &lt;a href="https://github.com/edouard-claude/snip" rel="noopener noreferrer"&gt;Snip&lt;/a&gt;, &lt;a href="https://github.com/ppgranger/token-saver" rel="noopener noreferrer"&gt;Token-saver&lt;/a&gt; et &lt;code&gt;curl.md/&amp;lt;url&amp;gt;&lt;/code&gt; (&lt;a href="https://curl.md/" rel="noopener noreferrer"&gt;https://curl.md/&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Beaucoup d'éléments de ce talk sont séduisants, et cela donne envie d'auditer sérieusement sa propre consommation.&lt;br&gt;
Ce talk est très instructif, et une formule résume bien le tout :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;le glissement du how to do vers le how to think&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On ne cherche plus à exécuter, mais à &lt;strong&gt;faire penser&lt;/strong&gt; l'agent plus efficacement.&lt;/p&gt;

&lt;h1&gt;
  
  
  Coder plus vite avec l'IA - Florian Bruniaux
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/florian-bruniaux-43408b83/" rel="noopener noreferrer"&gt;Florian Bruniaux&lt;/a&gt; (contributeur de &lt;a href="https://github.com/rtk-ai/rtk" rel="noopener noreferrer"&gt;RTK&lt;/a&gt;) nous a proposé de nous intéresser au nouveau goulot d'étranglement du développement : la code review.&lt;br&gt;
Si les IA produisent du code en grande quantité et rapidement, la review, elle, prend toujours un temps colossal aux équipes de dev. Alors comment tenter de résoudre ce problème ?&lt;/p&gt;

&lt;p&gt;Quelques pistes, tirées de ses propres projets :&lt;/p&gt;

&lt;h3&gt;
  
  
  Pull requests
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Faire générer par l'IA des PRs claires et correctement détaillées, pensées pour des &lt;em&gt;relecteurs humains&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Ajouter un label sur les PRs pour savoir si une relecture humaine est nécessaire ou non (purement technique vs métier / sensible).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Review automatique
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.coderabbit.ai/" rel="noopener noreferrer"&gt;CodeRabbit&lt;/a&gt; -&amp;gt; efficace mais assez cher&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://friendlyreviewer.fr/" rel="noopener noreferrer"&gt;friendlyReviewer&lt;/a&gt; -&amp;gt; Encore jeune, mais moins onéreux et de qualité&lt;/li&gt;
&lt;li&gt;Bot custom -&amp;gt; plutôt orienté métier&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Une fois les reviews effectuées, un skill fusionne les feedbacks des différents outils et les valide ou non, ce qui permet de savoir s'il faut reprendre la PR.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Enfin, Florian nous a exposé sa vision de l'investissement du temps de travail des développeurs de demain :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dans le system design et la planification&lt;/li&gt;
&lt;li&gt;Dans le retravail à la suite de la code review&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;En somme, très peu de temps passé sur la production de code elle-même. C'est un point qui a d'ailleurs été remonté par quasiment tous les intervenants.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Verdict
&lt;/h1&gt;

&lt;p&gt;Nous avons dû quitter la salle avant la fin pour attraper notre train, et nous avons raté les derniers talks, dont celui de &lt;a href="https://www.linkedin.com/in/katiagilguzman/" rel="noopener noreferrer"&gt;Katia Gil Guzman&lt;/a&gt; d'OpenAI, que nous attendions pourtant avec impatience. Cette journée nous laisse de bonnes idées, des pistes à explorer sur nos pratiques de développement avec l'IA et un beau moment partagé entre collègues. Pour les prochaines éditions, nous espérons un peu moins de redondance entre les sujets et peut-être davantage d'espaces pour échanger entre les talks (et oui, nous étions tout de même près de quatre cents personnes).&lt;/p&gt;

&lt;p&gt;C'était une première édition, et elle ne peut que se bonifier !&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devex</category>
      <category>devwithai</category>
    </item>
    <item>
      <title>Langfuse : combler l'angle mort de l'observabilité des agents IA</title>
      <dc:creator>Nicolas GUILHEM</dc:creator>
      <pubDate>Mon, 14 Sep 2026 08:27:04 +0000</pubDate>
      <link>https://dev.to/onepoint/langfuse-combler-langle-mort-de-lobservabilite-des-agents-ia-5dmc</link>
      <guid>https://dev.to/onepoint/langfuse-combler-langle-mort-de-lobservabilite-des-agents-ia-5dmc</guid>
      <description>&lt;h2&gt;
  
  
  Le constat : Grafana, Datadog et consorts ne suffisent plus
&lt;/h2&gt;

&lt;p&gt;Depuis quelques années, nous avons industrialisé le suivi de nos applications avec des outils d'observabilité éprouvés : Grafana, Datadog, Dynatrace, Splunk, ... Ces plateformes excellent pour surveiller l'infrastructure, la disponibilité des services, les temps de réponse HTTP ou la consommation des ressources. Elles restent indispensables, y compris pour les briques qui exposent des fonctionnalités agentiques.&lt;/p&gt;

&lt;p&gt;Le problème, c'est qu'un agent IA ne se résume pas à un service qui répond vite ou lentement. Un agent peut répondre en 800 ms, ne lever aucune erreur applicative, consommer un budget de tokens raisonnable, ... et pourtant halluciner, choisir le mauvais outil, boucler sur une étape, ou tout simplement produire une réponse qui ne satisfait pas l'utilisateur. Ces dysfonctionnements sont invisibles pour un outil d'APM (Application Performance Monitoring) classique, car ils ne se traduisent ni par une erreur HTTP, ni par un pic de latence, ni par une alerte système. Ils se nichent dans le raisonnement de l'agent, dans l'enchaînement de ses appels d'outils, dans la qualité sémantique de sa sortie.&lt;/p&gt;

&lt;p&gt;Sans outillage dédié, la maintenance de ces fonctionnalités agentiques devient vite un cauchemar : impossible de savoir pourquoi un agent a mal répondu à un utilisateur particulier, impossible de mesurer objectivement si une évolution de prompt améliore ou dégrade la qualité perçue, impossible de rejouer un cas problématique pour le corriger durablement. C'est exactement le vide que des plateformes comme &lt;strong&gt;Langfuse&lt;/strong&gt; viennent combler, en se positionnant en complément (et non en remplacement) des outils d'observabilité traditionnels.&lt;/p&gt;

&lt;p&gt;C'est d'ailleurs précisément ce qui distingue un POC d'une application agentique qui tient réellement la distance en production : ce n'est pas la sophistication de l'agent au moment de sa démonstration, mais la capacité de l'équipe à observer, comprendre et corriger ses dérives une fois confronté aux usages réels. Un agent non observé sur ces aspects fonctionnels reste fragile par construction, quelle que soit la qualité initiale de son prompt ou du modèle choisi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Langfuse : une plateforme pensée pour l'amélioration continue
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://langfuse.com/docs" rel="noopener noreferrer"&gt;Langfuse&lt;/a&gt; est une plateforme open source d'ingénierie LLM qui couvre le tracing, l'évaluation, la gestion des prompts et l'expérimentation. Contrairement à un outil d'APM généraliste, Langfuse part du principe qu'une application agentique n'est jamais "finie" : elle s'améliore par itérations successives, guidées par des signaux de qualité réels : feedback utilisateur, scores d'évaluation, comparaison de versions de prompts. C'est cette boucle d'amélioration continue de la satisfaction utilisateur qui structure l'ensemble de la plateforme, et qui se retrouve dans trois fonctionnalités clés.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff4vls7le8skcbhwy4hjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff4vls7le8skcbhwy4hjw.png" alt="exemple de visualisation de trance Langfuse" width="800" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Découpler la gestion des prompts de l'application
&lt;/h2&gt;

&lt;p&gt;Dans la plupart des applications LLM, les prompts sont codés en dur et versionnés avec le reste du code applicatif. Résultat : le moindre ajustement de formulation nécessite une revue de code et un cycle de déploiement complet, alors qu'il s'agit parfois d'une modification uniquement de reformulation ou complétude du prompt.&lt;/p&gt;

&lt;p&gt;La &lt;a href="https://langfuse.com/docs/prompt-management/overview" rel="noopener noreferrer"&gt;gestion des prompts de Langfuse&lt;/a&gt; répond directement à ce problème en centralisant les prompts dans la plateforme plutôt que dans le code :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Versionning natif&lt;/strong&gt; : chaque modification crée une nouvelle version, avec un système de &lt;a href="https://langfuse.com/docs/prompt-management/features/prompt-version-control" rel="noopener noreferrer"&gt;labels&lt;/a&gt; (&lt;code&gt;production&lt;/code&gt;, &lt;code&gt;staging&lt;/code&gt;, &lt;code&gt;latest&lt;/code&gt;...) pour piloter les déploiements par environnement et revenir instantanément à une version antérieure en cas de régression.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mise à jour sans redéploiement&lt;/strong&gt; : les équipes produit ou les experts métier peuvent ajuster un prompt directement dans l'interface, l'application allant chercher la nouvelle version automatiquement, sans redéploiement ni implication de l'équipe technique.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lien avec les traces&lt;/strong&gt; : chaque génération peut être &lt;a href="https://langfuse.com/docs/prompt-management/features/link-to-traces" rel="noopener noreferrer"&gt;rattachée à la version du prompt&lt;/a&gt; qui l'a produite, ce qui permet ensuite de comparer objectivement les métriques (qualité, coût, latence) entre deux versions d'un même prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intégration via SDK officiels&lt;/strong&gt; : les SDK natifs Python et JS/TS récupèrent les prompts avec mise en cache côté client, sans ajouter de latence perceptible à l'application (cf. &lt;a href="https://langfuse.com/docs/prompt-management/features/config#using-the-config" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;). Pour les stacks Java/Spring, le &lt;a href="https://github.com/langfuse/langfuse-java" rel="noopener noreferrer"&gt;client Java officiel &lt;code&gt;langfuse-java&lt;/code&gt;&lt;/a&gt;, expose les mêmes ressources (prompts, scores, datasets...) sous forme d'un client généré à partir de la spécification de l'API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intégration via API&lt;/strong&gt; : lorsqu'aucun SDK officiel ne couvre le langage ou le cas d'usage visé, l'ensemble des fonctionnalités reste accessible en HTTP pur via l'&lt;a href="https://api.reference.langfuse.com/" rel="noopener noreferrer"&gt;API Langfuse&lt;/a&gt;, qui documente le contrat OpenAPI complet (endpoints, paramètres, schémas de réponse) et permet de construire son propre client dans n'importe quel langage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce découplage change fondamentalement la dynamique d'itération : le prompt engineering devient un cycle continu et mesuré, plutôt qu'un sous-produit du cycle de développement classique. Il peut être confié en toute sécurité a des populations non tech.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Suivre le "scoring" en temps réel
&lt;/h2&gt;

&lt;p&gt;La deuxième pierre angulaire de Langfuse, ce sont les &lt;a href="https://langfuse.com/docs/evaluation/scores/overview" rel="noopener noreferrer"&gt;scores&lt;/a&gt;, l'objet universel de la plateforme pour stocker tout jugement de qualité sur une sortie d'agent, qu'il vienne d'un humain, d'un utilisateur final, d'une vérification programmatique ou d'un &lt;em&gt;LLM as Judge&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Trois grandes sources alimentent ce scoring :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Le feedback utilisateur explicite ou implicite&lt;/strong&gt; : un pouce levé/baissé, une note, ou même un signal indirect (ticket résolu ou escaladé) peut être &lt;a href="https://langfuse.com/docs/observability/features/user-feedback" rel="noopener noreferrer"&gt;remonté depuis l'application&lt;/a&gt; et attaché directement à la trace correspondante.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Les évaluateurs "LLM-as-a-judge"&lt;/strong&gt; : Langfuse permet de configurer des &lt;a href="https://langfuse.com/docs/evaluation/evaluation-methods/llm-as-a-judge" rel="noopener noreferrer"&gt;évaluateurs automatisés&lt;/a&gt; qui utilisent un modèle pour juger une sortie selon une grille de critères personnalisée (pertinence, ton, absence d'hallucination...), avec un score et une justification, appliqués en continu sur le trafic de production. &lt;em&gt;Nécessite une &lt;a href="https://langfuse.com/docs/administration/llm-connection" rel="noopener noreferrer"&gt;connexion à un LLM&lt;/a&gt; (en direct ou via une gateway) avec une attention particulière à porter sur la consommation notamment pour les évaluations si les datasets utilisés sont volumineux (cf. § Dataset et expérimentations ci-dessous)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Les évaluateurs par code&lt;/strong&gt; : pour les vérifications déterministes (format, présence de données personnelles, règles métier), Langfuse permet également de brancher des &lt;a href="https://langfuse.com/docs/evaluation/core-concepts" rel="noopener noreferrer"&gt;évaluateurs programmatiques&lt;/a&gt; (Python ou TypeScript uniquement), déclenchés automatiquement selon des règles sur les observations entrantes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'ensemble de ces scores alimente des tableaux de bord et des alertes, ce qui transforme un flux de traces brutes en un signal de pilotage exploitable au quotidien par les équipes produit et technique.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Évaluer et expérimenter les évolutions avant de les déployer
&lt;/h2&gt;

&lt;p&gt;Le troisième pilier permet de sortir du "ça a l'air de mieux marcher" pour objectiver l'impact d'une évolution (nouveau prompt, changement de modèle, nouvelle logique d'orchestration) avant sa mise en production.&lt;/p&gt;

&lt;p&gt;Cela repose sur les &lt;a href="https://langfuse.com/docs/evaluation/experiments/overview" rel="noopener noreferrer"&gt;Datasets et Experiments&lt;/a&gt; de Langfuse :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un &lt;a href="https://langfuse.com/docs/evaluation/experiments/datasets" rel="noopener noreferrer"&gt;Dataset&lt;/a&gt; est une collection d'entrées, avec ou sans sortie attendue, qui sert de jeu de test pour l'application.&lt;/li&gt;
&lt;li&gt;Ces jeux de données peuvent être &lt;strong&gt;importés&lt;/strong&gt; (CSV, JSON) mais aussi et surtout &lt;strong&gt;complétés directement à partir des traces de production&lt;/strong&gt; : un cas réel problématique remonté par un utilisateur peut être transformé en cas de test permanent, garantissant qu'il ne se reproduira pas silencieusement.&lt;/li&gt;
&lt;li&gt;Une &lt;a href="https://langfuse.com/docs/evaluation/experiments/overview" rel="noopener noreferrer"&gt;expérimentation&lt;/a&gt; fait ensuite tourner ce dataset à travers l'application (ou un prompt donné) et applique les méthodes d'évaluation vues plus haut (LLM-as-a-judge, code, revue manuelle) pour comparer objectivement les versions entre elles, via SDK, via l'interface, ou via OpenTelemetry.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cette boucle "production → dataset → expérimentation → déploiement" est ce qui permet de faire évoluer un agent avec confiance, plutôt qu'à l'aveugle.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk1ffdfl4qmamescn28xl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk1ffdfl4qmamescn28xl.png" alt="boucle LangFuse - extrait du site officiel" width="799" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Les autres atouts qui font la différence
&lt;/h2&gt;

&lt;p&gt;Au-delà de ces trois piliers, quelques caractéristiques structurantes justifient l'adoption de Langfuse à l'échelle d'une organisation :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open source, déployable on-premise ou en SaaS&lt;/strong&gt; : Langfuse est publié sous licence MIT et &lt;a href="https://langfuse.com/self-hosting" rel="noopener noreferrer"&gt;peut être auto-hébergé via Docker ou Kubernetes&lt;/a&gt;, sur la même base de code que l'offre Saas. Cela permet de garder les données sensibles (prompts, traces, contenus utilisateurs) dans son propre périmètre, y compris dans des environnements sans accès internet, tout en gardant la possibilité de basculer vers l'offre SaaS si besoin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Une intégration large avec l'écosystème&lt;/strong&gt; : Langfuse s'appuie sur &lt;a href="https://langfuse.com/integrations" rel="noopener noreferrer"&gt;OpenTelemetry&lt;/a&gt; et propose des intégrations natives avec la plupart des frameworks agentiques (LangChain/LangGraph, LlamaIndex, CrewAI, Spring AI, Quarkus LangChain4j, Koog, Embabel, ...) ainsi qu'avec les principales gateways LLM comme &lt;a href="https://langfuse.com/integrations/gateways/litellm" rel="noopener noreferrer"&gt;LiteLLM&lt;/a&gt; ou &lt;a href="https://langfuse.com/integrations/gateways/openrouter" rel="noopener noreferrer"&gt;OpenRouter&lt;/a&gt;, ce qui limite fortement le travail d'instrumentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La visualisation du graphe agentique&lt;/strong&gt; : au-delà de la vue classique en arborescence, Langfuse peut &lt;a href="https://langfuse.com/docs/observability/features/agent-graphs" rel="noopener noreferrer"&gt;représenter graphiquement le flux d'un agent&lt;/a&gt; (délégation entre sous-agents, séquence d'outils appelés), un rendu particulièrement utile pour déboguer des orchestrations multi-agents complexes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Se faire une idée par soi-même, à moindre coût
&lt;/h2&gt;

&lt;p&gt;Avant de généraliser l'usage de Langfuse à une organisation entière, rien ne remplace un premier contact concret avec l'outil. D'autant que les différentes façons d'y accéder permettent de commencer sans un gros investissement initial :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Projet exemple&lt;/strong&gt; : Lagfuse met à disposition un &lt;a href="https://langfuse.com/docs/demo" rel="noopener noreferrer"&gt;projet exemple servant de démonstration&lt;/a&gt;. La plateforme est préchargé avec des traces, des prompts et des évaluations réelles, à explorer librement avant de se lancer sur son propre cas d'usage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Langfuse Cloud (SaaS)&lt;/strong&gt; : la voie la plus rapide pour se faire un avis, via un compte géré par l'éditeur, avec un &lt;a href="https://langfuse.com/pricing" rel="noopener noreferrer"&gt;palier gratuit généreux et sans carte bancaire&lt;/a&gt;. La contrainte à garder en tête est que les données (prompts, traces, contenus échangés) transitent alors par l'infrastructure de Langfuse, ce qui peut être un point d'attention selon la sensibilité des données manipulées.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sur sa machine locale (Docker Compose)&lt;/strong&gt; : la solution la plus simple pour un test rapide en environnement de développement en quelques minutes pour lancer &lt;code&gt;docker compose up&lt;/code&gt; (cf. &lt;a href="https://langfuse.com/self-hosting/deployment/docker-compose#docker-compose" rel="noopener noreferrer"&gt;documentation officielle&lt;/a&gt;). C'est idéal pour explorer les fonctionnalités ou prototyper une intégration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted en production&lt;/strong&gt; : la &lt;a href="https://langfuse.com/self-hosting" rel="noopener noreferrer"&gt;même base de code que le SaaS&lt;/a&gt;, déployable via Docker, &lt;a href="https://langfuse.com/self-hosting/deployment/kubernetes-helm" rel="noopener noreferrer"&gt;Kubernetes/Helm&lt;/a&gt; ou sur les principaux cloud providers. La contrainte est ici opérationnelle : il faut exploiter soi-même les composants de stockage (Postgres, ClickHouse, Redis, object storage), ce qui demande un minimum de maturité DevOps, en échange d'une maîtrise complète de la localisation des données.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5aow9sm29db6yfuosrh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5aow9sm29db6yfuosrh.png" alt="architecture applicative Langfuse" width="800" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dans les trois cas, le coût d'entrée reste donc marginal comparé à l'effort de mise en place d'un outillage maison équivalent, ce qui permet de valider la pertinence de l'outil sur un cas d'usage réel avant d'investir dans un déploiement plus structurant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Langfuse ne remplace pas Grafana, Datadog ou Dynatrace : il vient combler ce que ces outils ne sont pas conçus pour voir. C'est à dire la qualité fonctionnelle et perçue d'un agent IA. Le versionning des prompts découplé du code, le scoring en temps réel des interactions, et l'évaluation systématique des évolutions via des datasets alimentés par la production forment une boucle cohérente et rapide à mettre en place : quelques dépendances Maven ou quelques lignes de configuration OpenTelemetry suffisent généralement pour obtenir les premières traces exploitables.&lt;/p&gt;

&lt;p&gt;C'est précisément cette simplicité de prise en main qui en fait un outil difficile à contourner sur le long terme : dès qu'une fonctionnalité agentique quitte le stade du prototype pour être maintenue dans la durée, l'absence d'un outil de ce type transforme chaque évolution de prompt ou chaque signalement utilisateur en enquête manuelle et non reproductible. À l'inverse, une équipe outillée avec Langfuse dispose d'une mémoire objective de la qualité de son agent, et peut faire de son amélioration continue un processus mesuré plutôt qu'un pari.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Sources : documentation officielle &lt;a href="https://langfuse.com/docs" rel="noopener noreferrer"&gt;langfuse.com/docs&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>observability</category>
      <category>agents</category>
    </item>
    <item>
      <title>Les Cloud Development Environments (CDE) - Embarquement immédiat !</title>
      <dc:creator>Nicolas GUILHEM</dc:creator>
      <pubDate>Thu, 06 Nov 2025 14:56:42 +0000</pubDate>
      <link>https://dev.to/onepoint/les-cloud-development-environments-cde-embarquement-immediat--729</link>
      <guid>https://dev.to/onepoint/les-cloud-development-environments-cde-embarquement-immediat--729</guid>
      <description>&lt;p&gt;Dans le monde du développement logiciel, l'onboarding des nouveaux développeurs peut être un véritable casse-tête. Installation des outils, configuration de l'environnement, résolution des incompatibilités... Autant de problèmes que les Cloud Development Environments (CDE) promettent de résoudre. Mais avant de plonger dans le monde des CDE, il est essentiel de comprendre les technologies qui les sous-tendent : les DevContainers et les DevFiles.&lt;/p&gt;

&lt;h2&gt;
  
  
  DevContainers et DevFiles
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Qu'est-ce qu'un DevContainer ?
&lt;/h3&gt;

&lt;p&gt;Un &lt;strong&gt;DevContainer&lt;/strong&gt; est une spécification qui formalise la description d'un environnement de développement conteneurisé. Initiée par Microsoft en 2022, cette spécification est aujourd'hui adoptée par de nombreux IDE comme VS Code, IntelliJ et bien d'autres. Mais bien avant le financement massif par Microsoft (via Github, VSCode, ...), c'est &lt;strong&gt;Red Hat&lt;/strong&gt; qui en était le précurseur dans le domaine avec ses &lt;a href="https://devfile.io/" rel="noopener noreferrer"&gt;DevFile&lt;/a&gt; via le projet &lt;a href="https://eclipse.dev/che/" rel="noopener noreferrer"&gt;Eclipse Che&lt;/a&gt; (adopté par la &lt;a href="https://www.cncf.io/projects/devfile/" rel="noopener noreferrer"&gt;CNCF&lt;/a&gt; en 2022).&lt;/p&gt;

&lt;p&gt;La philosophie est simple : développer dans un conteneur avec tous les outils nécessaires pré-installés et configurés. Cela permet de :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standardiser les environnements de développement entre tous les développeurs&lt;/li&gt;
&lt;li&gt;Garantir la reproductibilité de l'environnement&lt;/li&gt;
&lt;li&gt;Simplifier l'onboarding des nouvelles recrues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour en savoir plus, consultez les ressources officielles :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site officiel : &lt;a href="https://containers.dev/" rel="noopener noreferrer"&gt;https://containers.dev/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Spécification : &lt;a href="https://github.com/devcontainers/spec" rel="noopener noreferrer"&gt;https://github.com/devcontainers/spec&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  DevContainers vs Docker Compose : Quelle différence ?
&lt;/h3&gt;

&lt;p&gt;On pourrait croire qu'un DevContainer n'est qu'un simple Docker Compose déguisé. En réalité, il s'agit d'une &lt;strong&gt;couche d'abstraction&lt;/strong&gt; au-dessus de Docker (ou d'autres runtimes comme Podman) qui simplifie considérablement la construction et l'exécution du conteneur.&lt;/p&gt;

&lt;p&gt;Les DevContainers apportent des fonctionnalités spécifiques au développement :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Injection automatique de la configuration Git et SSH&lt;/li&gt;
&lt;li&gt;Installation de fonctionnalités supplémentaires via les "features"&lt;/li&gt;
&lt;li&gt;Montage automatique des volumes sources&lt;/li&gt;
&lt;li&gt;Gestion du cycle de vie (build, create, start, stop)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Mise en oeuvre
&lt;/h3&gt;

&lt;p&gt;Pour mettre en place un DevContainer, il suffit de créer un répertoire &lt;code&gt;.devcontainer&lt;/code&gt; contenant un fichier &lt;code&gt;devcontainer.json&lt;/code&gt; qui respecte la spécification. Voici la configuration minimale :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Spacesuits dev container"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"image"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcr.microsoft.com/devcontainers/java:1-21-bullseye"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cette simple configuration suffit à démarrer ! Microsoft propose déjà plus d'une centaine d'images de base prêtes à l'emploi (cf. &lt;a href="https://containers.dev/templates" rel="noopener noreferrer"&gt;templates pre-build&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Les features : personnalisez votre environnement
&lt;/h3&gt;

&lt;p&gt;Les &lt;strong&gt;features&lt;/strong&gt; sont des scripts shell exécutés lors de la construction de l'image. Ils permettent d'installer des outils supplémentaires de manière déclarative :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Spacesuits dev container"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"image"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcr.microsoft.com/devcontainers/java:1-21-bullseye"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"features"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"ghcr.io/devcontainers-extra/features/maven-sdkman:2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"3.9.11"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Plus d'&lt;a href="https://containers.dev/features" rel="noopener noreferrer"&gt;un millier de features&lt;/a&gt; sont disponibles, et vous pouvez même créer les vôtres (privé ou partagé) !&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuration avancée
&lt;/h3&gt;

&lt;p&gt;Les DevContainers permettent une configuration très fine de l'environnement. Notamment par des &lt;strong&gt;hooks&lt;/strong&gt; pour l'exécution de commandes aux différentes étapes de la construction de l'environnement.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Spacesuits dev container"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"image"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcr.microsoft.com/devcontainers/java:1-21-bullseye"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"features"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"ghcr.io/devcontainers-extra/features/maven-sdkman:2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"3.9.11"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"postCreateCommand"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cd backend/space-suit-back &amp;amp;&amp;amp; mvn compile"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"forwardPorts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cette configuration permet de :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exécuter des commandes après la création du conteneur&lt;/li&gt;
&lt;li&gt;Forwarder automatiquement les ports&lt;/li&gt;
&lt;li&gt;Définir des points de montage personnalisés&lt;/li&gt;
&lt;li&gt;Configurer des variables d'environnement&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Personnalisation de l'IDE
&lt;/h3&gt;

&lt;p&gt;Les DevContainers permettent également de personnaliser l'IDE lui-même (structure spécifique à chaque outil implémentant la spécification : &lt;a href="https://containers.dev/supporting" rel="noopener noreferrer"&gt;https://containers.dev/supporting&lt;/a&gt;) :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"customizations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"vscode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"settings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"editor.tabSize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"extensions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="s2"&gt;"redhat.vscode-quarkus"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ainsi, tous les développeurs partagent non seulement le même environnement technique, mais aussi la même configuration d'IDE !&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud Development Environments
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Histoire des CDE
&lt;/h3&gt;

&lt;p&gt;Les environnements de développement dans le cloud ne datent pas d'hier :&lt;/p&gt;

&lt;h4&gt;
  
  
  Les Précurseurs (2010-2014)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud9&lt;/strong&gt; (2010) : Premier IDE cloud majeur, révolutionnaire pour l'époque mais sans conteneurisation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codeanywhere&lt;/strong&gt; (2013) : IDE collaboratif dans le navigateur&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Le Game Changer
&lt;/h4&gt;

&lt;p&gt;En 2014, &lt;a href="https://www.neosoft.fr/nos-publications/blog-tech/eclipse-che-un-ide-sur-le-cloud/" rel="noopener noreferrer"&gt;Codenvy&lt;/a&gt;, en se basant sur la spécification introduite par le projet open source&lt;br&gt;
Eclipse Che, créé le premier IDE 100% orienté cloud. L'idée : pouvoir réaliser le dévelopement et la création d'un livrable uniquement sur des plateformes cloud.&lt;br&gt;
C'est à cette période que le concept des &lt;strong&gt;DevFiles&lt;/strong&gt; a été incubé. En 2019, Eclipse Che supporte officiellement les DevFiles et Codenvy est racheté par RedHat.&lt;/p&gt;

&lt;h4&gt;
  
  
  La Popularisation (2019-2022)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RedHat OpenShift Dev Spaces&lt;/strong&gt; (2019 - DevFiles)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft GitHub Codespaces&lt;/strong&gt; (2020 - DevContainers) : Adoption massive grâce à l'intégration avec GitHub et VScode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Cloud Workstations&lt;/strong&gt; (2022 - DevContainers)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Comment fonctionnent les CDE ?
&lt;/h3&gt;

&lt;p&gt;Il existe deux modes de fonctionnement principaux pour les CDE :&lt;/p&gt;

&lt;h4&gt;
  
  
  1. À la Main
&lt;/h4&gt;

&lt;p&gt;Avec des outils comme &lt;strong&gt;DevPod&lt;/strong&gt; ou &lt;strong&gt;Daytona&lt;/strong&gt;, le développeur lance lui-même son CDE. Ces solutions :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Permettent de choisir le provider (environnement local, cloud, Kubernetes, etc.)&lt;/li&gt;
&lt;li&gt;Configurent automatiquement la connexion SSH&lt;/li&gt;
&lt;li&gt;Démarrent un serveur SSH chez le provider pour router les services&lt;/li&gt;
&lt;li&gt;Le backend de l'IDE tourne sur le provider, le frontend en local&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://devpod.sh/" rel="noopener noreferrer"&gt;DevPod&lt;/a&gt; est particulièrement intéressant car il fonctionne sans paywall et supporte de nombreux providers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F82wzjvh3cf48pqosldke.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F82wzjvh3cf48pqosldke.webp" alt="Diagramme de composant de DevPod" width="800" height="430"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Diagramme de composant de DevPod&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. À Distance
&lt;/h4&gt;

&lt;p&gt;Des solutions comme &lt;a href="https://coder.com/" rel="noopener noreferrer"&gt;Coder&lt;/a&gt;, &lt;strong&gt;Gitpod&lt;/strong&gt; (récemment renommé &lt;a href="https://ona.com/" rel="noopener noreferrer"&gt;Ona&lt;/a&gt;, &lt;a href="https://theia-cloud.io/" rel="noopener noreferrer"&gt;Theia Cloud&lt;/a&gt; ou &lt;a href="https://lap.dev/" rel="noopener noreferrer"&gt;Lapdev&lt;/a&gt; proposent une approche différente où tout est géré à travers une interface web.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coder&lt;/strong&gt; mérite une attention particulière car il peut être totalement self-hosted. Son architecture repose sur :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un service &lt;strong&gt;coderd&lt;/strong&gt; qui gère la création des workspaces et la connexion des machines&lt;/li&gt;
&lt;li&gt;Des workspaces avec durées de vie limitées (configurables par l'admin)&lt;/li&gt;
&lt;li&gt;Une sauvegarde des modifications même si le workspace est arrêté&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq8ftzqktzkrz34gagpl7.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq8ftzqktzkrz34gagpl7.webp" alt="Diagramme d'infrastructure simplifié de Coder" width="800" height="597"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Diagramme d'infrastructure simplifié de Coder&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CDE : Avantages et inconvénients
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Les inconvénients
&lt;/h3&gt;

&lt;p&gt;Soyons honnêtes sur les contraintes !&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;📡 Accès au réseau&lt;/strong&gt; : Nécessite une connexion internet stable (les machines savent se reconnecter en cas de coupure)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🎛️ Complexité initiale&lt;/strong&gt; : Le setup initial peut être complexe selon les solutions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💰 Coût ou infrastructure dédiée&lt;/strong&gt; : Solutions SaaS coûteuses ou nécessité d'une infrastructure self-hosted&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;👶 Technologie récente&lt;/strong&gt; : Encore des progrès à faire sur l'intégration&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Les avantages
&lt;/h3&gt;

&lt;p&gt;En revanche, es bénéfices sont nombreux :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;⚡ Onboarding instantané&lt;/strong&gt; : Les nouveaux développeurs peuvent travailler dès le jour 0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔄 Environnement reproductible&lt;/strong&gt; : Mêmes versions et configurations partout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔒 Isolement&lt;/strong&gt; : Le code source est isolé sur un serveur (même s'il transite forcément sur le réseau)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🛠️ Configuration centralisée&lt;/strong&gt; : Gérée par l'équipe DevOps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💻 Machines légères&lt;/strong&gt; : Plus besoin de machines de guerre pour les développeurs&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pour quel public ?
&lt;/h3&gt;

&lt;p&gt;Les CDE sont particulièrement adaptés pour :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grandes équipes&lt;/strong&gt; : Standardisation à grande échelle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Turnover important&lt;/strong&gt; : Onboarding simplifié&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration complexe&lt;/strong&gt; : Environnements difficiles à reproduire localement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sécurité cruciale&lt;/strong&gt; : Code sensible qui ne doit pas quitter l'infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formation technique&lt;/strong&gt; : Environnement éphémère préinstallé&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Projets open-source&lt;/strong&gt; : Permet aux contributeurs de démarrer rapidement&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Les Cloud Development Environments représentent une évolution majeure dans la façon dont nous développons des logiciels. En s'appuyant sur les DevContainers et les DevFiles, ils offrent une solution élégante aux problèmes d'onboarding et de standardisation des environnements.&lt;/p&gt;

&lt;p&gt;Que vous choisissiez une solution "à la main" comme DevPod pour garder le contrôle, ou une solution managée comme Coder ou GitHub Codespaces pour déléguer la gestion de l'infrastructure, les CDE promettent de transformer radicalement l'expérience de développement.&lt;/p&gt;

&lt;p&gt;La technologie est encore jeune, mais son adoption croissante par les géants du cloud et les entreprises innovantes montre que nous ne faisons qu'entrevoir le potentiel des environnements de développement dans le cloud.&lt;/p&gt;

&lt;p&gt;Il est fort probable que de nouvelles plateformes de développement voient le jour dans les prochains mois incluant nativement des solutions agentiques (à l'image de l'IDE Kiro d'AWS mais transposé dans le cloud) 📻.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pour aller plus loin
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🎬 &lt;a href="https://www.youtube.com/watch?v=S9-C4ToXonw&amp;amp;list=PLuZ_sYdawLiWenx-X315dfZNOaliVnSTY/" rel="noopener noreferrer"&gt;Développe sur un toaster grâce à Coder&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📄 &lt;a href="https://coder.com/docs/admin/infrastructure" rel="noopener noreferrer"&gt;Documentation Coder Infrastructure&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📄 &lt;a href="https://eclipse.dev/che/docs/stable/overview/introduction-to-eclipse-che/" rel="noopener noreferrer"&gt;Introduction à Eclipse Che&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📄 &lt;a href="https://github.com/manekinekko/awesome-devcontainers" rel="noopener noreferrer"&gt;Awesome DevContainers&lt;/a&gt; - Liste de templates&lt;/li&gt;
&lt;li&gt;🌐 &lt;a href="https://containers.dev/" rel="noopener noreferrer"&gt;Spécification DevContainers&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cde</category>
      <category>eclipseche</category>
      <category>codespace</category>
      <category>devpod</category>
    </item>
  </channel>
</rss>
