<?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>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>
