Building Idempotent Message Handlers in Symfony Messenger | by Krzysztof Słomka | Jul, 2026 | Medium
L’article explique comment concevoir des gestionnaires de messages idempotents dans Symfony Messenger pour éviter les effets indésirables lors de la réception de messages en double, notamment dans des environnements distribués comme Kubernetes avec des files SQS. L’idée centrale repose sur la création d’effets métiers "effectivement uniques" malgré des livraisons multiples, en s’appuyant sur des identifiants stables (comme eventId), des contraintes d’unicité dans la base de données et des mécanismes de déduplication. L’auteur souligne que la fiabilité ne peut être garantie par les simples configurations de tentatives de renvoi, mais nécessite une approche systémique intégrant la gestion des clés d’idempotence et des transactions atomiques.
L’analyse détaille les risques liés à l’absence de transaction atomique entre la validation en base de données et la suppression du message de la file, illustrant comment un crash peut entraîner des doublons ou des pertes. Pour y remédier, il propose des solutions comme l’utilisation de contraintes uniques PostgreSQL, de tables de déduplication ou du Outbox Pattern pour sécuriser la production des messages. Ces méthodes permettent de garantir que, même en cas de livraisons multiples, l’effet métier ne se produit qu’une seule fois, tout en reconnaissant que cette approche ne couvre pas les systèmes externes (API, paiements, etc.), qui nécessitent leurs propres mécanismes d’idempotence.
L’article propose une solution pour gérer les transactions en couche applicative dans une architecture hexagonale, sans dépendre de l’infrastructure comme Doctrine. L’idée centrale est d’introduire un port TransactionManagerInterface dans l’application, implémenté par un adaptateur Doctrine qui utilise wrapInTransaction() pour encapsuler les opérations dans une transaction unique. Cela permet d’éviter les problèmes de cohérence, comme des modifications partielles en cas d’échec, en regroupant plusieurs opérations (persistance, mise à jour) dans un bloc atomique.
L’auteur illustre le problème avec un cas concret : la création d’une commande et la mise à jour simultanée des stocks. Sans gestion centralisée, chaque appel à flush() (via add() ou update()) crée une transaction implicite, risquant des incohérences si une étape échoue. La solution repose sur un service applicatif (OrderService) qui dépend uniquement des interfaces de domaine et du TransactionManagerInterface, isolant ainsi la logique métier des détails d’infrastructure.
Enfin, l’implémentation montre comment le TransactionManager utilise les mécanismes natifs de Doctrine pour gérer les transactions de manière robuste, y compris les erreurs PHP, tout en maintenant une séparation claire des responsabilités. Les méthodes add() et update() des repositories doivent éviter d’appeler flush() directement pour préserver l’intégrité transactionnelle.
Les DTO (Data Transfer Objects) dans Symfony sont des objets simples dont le rôle est de transporter des données entre les couches d'une application, notamment entre le contrôleur HTTP et la couche métier. Contrairement aux entités Doctrine, qui gèrent la persistance et la logique métier, les DTO se concentrent uniquement sur la structure des données nécessaires à un cas d'usage spécifique, sans logique ni dépendances. Par exemple, un DTO comme CreateProductInput peut inclure des annotations de validation pour garantir l'intégrité des données avant qu'elles n'atteignent le domaine métier.
L'utilisation des DTO apporte plusieurs avantages, notamment une meilleure sécurité en évitant les attaques par sur-assignation (mass assignment), une séparation claire entre l'API publique et le modèle de persistance, et une validation précoce des données. Ils améliorent également la maintenabilité en documentant explicitement les besoins d'un cas d'usage et en permettant une évolution indépendante des entités et des DTO. Par ailleurs, les DTO favorisent la testabilité, car ils sont faciles à instancier dans des tests unitaires sans dépendre de comportements spécifiques à l'ORM.
Pour une implémentation efficace, les DTO doivent être simples, explicites et immuables, de préférence en utilisant des classes final readonly en PHP 8.2+. Ils peuvent être adaptés à différents besoins, comme les entrées (input) et les sorties (output), qui peuvent avoir des exigences distinctes. En évitant de mélanger les responsabilités des entités et des DTO, les développeurs réduisent les risques de problèmes de sécurité et de couplage serré entre l'API et la base de données.
Le GitLab MCP Server permet de connecter des assistants IA comme ChatGPT à des dépôts GitLab, qu'ils soient hébergés sur GitLab.com ou en auto-hébergement. Ce serveur, développé avec Symfony, expose des outils MCP pour interagir avec GitLab, offrant des fonctionnalités de lecture (liste de projets, exploration des fichiers, branches) et d'écriture (création de fichiers, commits atomiques jusqu'à 100 modifications). Les opérations destructives (suppression de fichiers ou projets) sont isolées et nécessitent des permissions spécifiques, renforçant la sécurité.
Pour sécuriser l'accès, le serveur utilise un système de permissions granulaires (lecture, écriture, destructif) et privilégie l'authentification OAuth 2.1 en production, avec vérification des jetons JWT et validation des scopes. Une configuration statique est disponible pour les tests locaux. Le transport est stateless via HTTP (Streamable HTTP ou Server-Sent Events), sans stockage de session, et les métadonnées OAuth sont publiquement accessibles pour faciliter l'intégration des clients.
L'installation requiert PHP 8.2+ et Symfony 7.4 LTS, avec une configuration Docker simplifiée. En production, l'OAuth est recommandé, tandis que le mode statique convient au développement. Le projet est conçu pour éviter les risques liés à la diffusion de tokens complets et pour maintenir un contexte à jour des dépôts.
L’article explore l’impact de l’IA générative sur le métier de développeur, soulignant que son adoption massive est désormais incontournable sur le marché du travail. L’auteur, Stéphane Philippart, explique que refuser d’utiliser ces outils peut devenir un frein professionnel, tant pour les recherches d’emploi que dans les entreprises, où la pression pour livrer plus vite est forte. Il compare cette évolution à d’autres révolutions technologiques passées, comme l’arrivée du Web ou des smartphones, où l’adaptation était nécessaire pour rester compétitif.
Plutôt que de parler de déclin, il insiste sur la nécessité de s’adapter, en transformant les pratiques sans pour autant renoncer à la passion ou à la créativité. L’IA ne supprime pas le métier, mais le fait évoluer, comme l’automatisation a pu le faire pour d’autres professions, comme les ébénistes. Certains peuvent choisir de rester sur des méthodes traditionnelles, mais cela devient un choix assumé plutôt qu’une obligation.
Enfin, l’auteur nuance son propos en reconnaissant que l’IA pourrait réduire l’espace dédié à la créativité pure, mais estime que le métier reste viable à condition de se réinventer. Il conclut que l’enjeu n’est pas de lutter contre cette tendance, mais de l’intégrer pour en tirer parti, tout en préservant l’essence du développement.
Ce guide complet présente tmux, un multiplexeur de terminal essentiel pour gérer efficacement les sessions, fenêtres et panneaux dans un environnement Linux. L’outil permet de conserver des processus actifs même après la fermeture du terminal, évitant ainsi la perte de travail en cas de déconnexion. Il offre aussi une meilleure organisation grâce à des sessions isolées, des fenêtres personnalisables et des panneaux divisés, améliorant ainsi la productivité.
L’installation est simple sur les distributions majeures (Debian/Ubuntu via apt, Fedora/RHEL via dnf), et la version 3.x est recommandée pour accéder à toutes les fonctionnalités. Les commandes de base incluent la création, l’attachement et le détachement de sessions, tandis que des raccourcis comme Ctrl+b suivi d’autres touches permettent de naviguer entre fenêtres et panneaux.
Le guide aborde aussi la personnalisation via le fichier .tmux.conf et l’ajout de plugins via TPM, illustrant des cas d’usage concrets comme le pair programming ou la surveillance de serveurs. Un tableau récapitulatif des raccourcis est disponible pour une prise en main rapide.
Ce billet présente deux méthodes pour déployer rapidement un cluster Kubernetes de laboratoire avec Vagrant, via les dépôts Vagrant-kubeadm (Debian 13) et Vagrant-Talos (Talos Linux immuable). Les deux solutions partagent une topologie réseau commune (192.168.56.0/24) et une couche applicative identique, mais diffèrent radicalement par leur approche : l’une utilise kubeadm avec des outils classiques (SSH, apt), tandis que l’autre repose sur l’API Talos pour une gestion sans accès shell. Les deux permettent des configurations variées, du control plane unique au HA complet, avec des outils comme Cilium ou Calico pour le réseau.
Le dépôt Vagrant-kubeadm offre une approche "vanilla" proche d’une installation de production, automatisant les étapes complexes comme la configuration de la VIP ou de containerd. Les scripts détaillent chaque commande kubeadm, facilitant la compréhension et l’adaptation. À l’inverse, Vagrant-Talos illustre les avantages d’un OS immuable, où toute la configuration passe par l’API talosctl, sans accès direct aux nœuds. Les deux projets partagent un fichier de configuration unique (lab.env) pour synchroniser les paramètres entre Vagrant, le bootstrap et la couche applicative.
L’objectif pédagogique est clair : comparer deux philosophies d’exploitation (mutable vs immuable) sur une même plateforme applicative. Les dépôts, disponibles sur GitHub, permettent de tester concrètement les compromis entre flexibilité et sécurité, tout en offrant une base reproductible pour des Proof of Concept ou des explorations techniques.
Cette page propose des méthodes pour désactiver ou limiter les fonctionnalités d'intelligence artificielle jugées intrusives dans divers outils technologiques. L'idée principale est de donner des instructions pratiques pour réduire la présence de l'IA dans des logiciels et appareils courants, comme Adobe Acrobat, Android/Gemini, Apple Intelligence ou les navigateurs Chrome, Edge et Firefox. Elle inclut aussi des astuces pour désactiver des assistants spécifiques comme Siri ou Copilot, ainsi que des extensions pour Firefox afin de bloquer les améliorations basées sur l'IA dans les résultats de recherche.
AAS Core est un contrôleur local axé sur les agents, conçu pour découvrir, valider et planifier des stacks de compétences (skills) via une interface en mémoire et un catalogue de plus de 1 987 compétences agentiques. Il permet aux agents comme Codex ou Claude d’inspecter un projet, de sélectionner des compétences spécifiques depuis un catalogue local, puis de valider ces choix via un outil en lecture seule (compose_stack) avant de générer un plan immuable (aas-stack.json) pour une exécution ultérieure.
Le projet inclut une CLI dédiée, un serveur MCP local (via stdio), des plugins et un Workbench pour faciliter la revue humaine des plans générés. Bien que la validation et la planification soient fonctionnelles, les phases d’application et de récupération restent expérimentales et non couvertes par le support officiel en préversion.
Le dépôt propose également des playbooks réutilisables (SKILL.md), une documentation structurée et des outils de vérification pour renforcer la sécurité et la cohérence du catalogue. La dernière version stable (v15.7.1) intègre des corrections de sécurité et des améliorations de stabilité.
Cet article explique comment les cadres de prise de décision structurent le processus pour éviter la paralysie par l’analyse. Il souligne que le cerveau humain, submergé par des choix complexes, génère des scénarios excessifs et une aversion à la perte, aggravant l’indécision. Les cadres proposés, comme la règle 10/10/10 ou la méthode du pré-mortem, remplacent les ruminations infinies par des étapes claires, réduisant ainsi la fatigue décisionnelle.
L’auteur détaille huit méthodes pratiques, adaptées à différents types de décisions, comme le filtre des cinq ans pour refuser ou la liste pondérée pour comparer des options. Ces outils, accessibles sans outils complexes, visent à identifier les critères essentiels et à clore rapidement les choix, libérant ainsi l’esprit.
Enfin, l’article aborde les erreurs courantes, comme la recherche excessive d’informations ou l’illusion du choix parfait, qui alimentent l’indécision. Il insiste sur l’importance de choisir le bon cadre en fonction du contexte pour maximiser son efficacité.
Le journaling agit comme un outil puissant pour clarifier l’esprit et améliorer le bien-être mental. Des études en psychologie montrent que l’écriture expressive réduit le stress, améliore l’humeur et même renforce le système immunitaire en transformant les expériences floues en récits structurés. En libérant de l’espace mental, elle permet de mieux se concentrer et de mieux dormir, agissant comme une extension de la mémoire.
L’article propose neuf prompts spécifiques pour orienter la réflexion, comme identifier ses émotions, évaluer ce qui nous inquiète ou imaginer les conseils à donner à un ami. Ces questions ciblées évitent les pages vides et génèrent des insights plutôt que des simples notes. Elles aident à prendre du recul sur ses peurs, ses priorités et ses schémas de pensée récurrents.
Enfin, l’auteur souligne que la clé du succès réside moins dans la discipline que dans la régularité et l’adaptation du format. Un carnet simple suffit, et l’habitude se construit en choisissant des moments adaptés, comme le matin ou avant le coucher. Le journal devient alors un miroir longitudinal de soi, révélant des tendances invisibles à court terme.
Cisco a révélé une faille critique (CVE-2026-20316) dans son outil Secure Firewall Management Center (FMC), utilisé pour administrer des pare-feux d'entreprise. Un compte intégré avec des identifiants codés en dur dans le code permet une exploitation à distance, même sans authentification, offrant un accès limité mais exploitable pour des attaques plus poussées. La vulnérabilité, déjà exploitée avant la publication du correctif, touche plusieurs versions du logiciel et nécessite une mise à jour immédiate, car aucun contournement n’est possible.
Le FMC, central dans la gestion des politiques de sécurité, expose un risque majeur si son interface d’administration est accessible depuis Internet, ce qui semble être le cas dans certaines configurations. Cisco souligne que le correctif doit être appliqué sans délai, tout en vérifiant les journaux pour détecter d’éventuelles intrusions. La faille illustre un problème récurrent : l’intégration de secrets dans le code, un défaut persistant depuis des années dans les équipements de sécurité.
L’article souligne aussi l’importance de sécuriser les interfaces d’administration et de ne pas exposer les outils critiques en ligne. Il rappelle que ce type de faille n’est pas réservé aux firmwares : des erreurs similaires peuvent survenir dans des projets web, soulignant la nécessité de bien gérer les identifiants sensibles.
L’article explore l’unité CSS lh, basée sur la hauteur de ligne (line-height), et ses cas d’usage pratiques. Contrairement aux unités fixes comme rem, lh permet un espacement vertical dynamique, proportionnel à la hauteur de ligne du texte, offrant une meilleure cohérence visuelle. Par exemple, appliquer margin-bottom: 1lh aux paragraphes ajuste automatiquement l’espacement en fonction de la taille de la police.
L’auteur illustre aussi l’utilité de lh pour créer des effets comme des lignes de papier (effet paper line), où la hauteur du dégradé CSS est définie en 1lh. Cette méthode évite les ruptures d’alignement lorsque la taille de la police change, contrairement à une valeur fixe en rem ou px. Le code montre comment hériter la taille de police et la hauteur de ligne depuis un parent pour une maintenance simplifiée.
Enfin, l’unité lh facilite l’alignement d’éléments flottants ou d’icônes dans les boutons, en s’adaptant aux variations de hauteur de ligne. Bien que moins connue, cette unité résout des problèmes de mise en page souvent contournés par des solutions complexes ou peu maintenables.
Ce journal de Jérôme Flesch sur LinuxFr.org explore l'auto-hébergement des modèles de langage (LLM) en se concentrant sur le matériel et les optimisations pour l'inférence. L'auteur y détaille des solutions matérielles testées, comme des configurations basées sur des GPU Nvidia ou Intel, ainsi que des outils comme llama.cpp et llama-swap pour optimiser les performances. Il aborde aussi des techniques avancées comme la quantification, le multi-GPU ou l'utilisation de bus PCIe, tout en excluant les IA de génération d'images et certains moteurs d'inférence moins adaptés.
L'article insiste sur l'importance de maîtriser des notions techniques (Linux, Docker, PCIe) et propose des comparatifs de performances entre différentes configurations. Il met en garde contre les pièges matériels et logiciels, comme les limitations des GPU grand public ou les problèmes de compatibilité avec certains outils. L'auteur partage également des exemples concrets de configurations optimisées, notamment pour éviter les débordements mémoire.
En conclusion, le texte encourage l'auto-hébergement des LLM comme alternative aux solutions propriétaires, tout en soulignant la nécessité de bien choisir son matériel et ses optimisations. Il s'adresse à un public technique souhaitant maximiser l'efficacité de ses infrastructures locales.
La durée de vie maximale des certificats TLS publics sera progressivement réduite à 200 jours en 2026, puis à 47 jours en 2029, rendant le renouvellement manuel intenable. Cette décision, adoptée par le CA/Browser Forum, impose un calendrier strict sans dérogation, avec une validation de domaine (DCV) réutilisable seulement 10 jours à partir de 2029. Les autorités de certification, co-sponsors de cette mesure, privilégient désormais des modèles économiques basés sur des souscriptions et des plateformes de gestion automatisée.
Le renouvellement manuel, autrefois annuel, devient ingérable avec des échéances semestrielles dès 2026, trimestrielles en 2027, puis toutes les six semaines en 2029. Les infrastructures automatisées, comme ACM sur AWS ou ACME, deviennent indispensables pour éviter les interruptions de service. Un exemple concret illustre cette contrainte : un certificat wildcard hérité, géré manuellement, a nécessité une intervention urgente en raison de sa durée de vie désormais limitée.
Cette transition, motivée par des impératifs de sécurité (réduction des fenêtres d’exploitation des clés compromises), s’aligne aussi avec les intérêts commerciaux des autorités de certification. Leur modèle évolue vers des abonnements et des solutions de gestion centralisée, rendant les processus manuels obsolètes et coûteux.
L’article explore les solutions pour bloquer les trackers et domaines malveillants via un résolveur DNS menteur, en exploitant le mécanisme RPZ (Response Policy Zone). L’auteur, confronté aux limites d’un adblocker sur son Turris, teste plusieurs résolveurs DNS (Bind9, Knot-resolver, Unbound, Blocky, Pi-hole) pour évaluer leur capacité à filtrer efficacement les requêtes. Il souligne l’importance de RPZ, qui permet de bloquer des domaines, des IP ou des plages d’IP, tout en offrant une alternative aux outils traditionnels comme Pi-hole ou Blocky.
Pour automatiser la gestion des listes RPZ, l’auteur a développé un script Python, rpz-maker.py, capable de combiner, dédupliquer et optimiser des listes de domaines par catégorie, avec des options de personnalisation avancées. Ce script, sans dépendances externes, simplifie la configuration et permet une gestion fine des autorisations et restrictions par réseau client.
Enfin, l’article présente un tableau comparatif des résolveurs testés, évaluant leur simplicité de configuration, leur interface en ligne de commande, leur support des ACL, leur interface web, leur compatibilité avec Prometheus et Redis Sentinel. Blocky et Knot-resolver (version 6) ressortent comme les solutions les plus équilibrées, tandis que Pi-hole et Unbound se distinguent par leur flexibilité mais avec des compromis en termes de complexité ou de consommation de ressources.
L’article de GreenIT propose sept réflexes pour réduire l’impact environnemental de l’intelligence artificielle (IA), en insistant sur l’IA frugale comme solution efficace et économique. L’idée centrale est de questionner le besoin réel d’IA, notamment générative, souvent surutilisée alors que des alternatives plus simples (comme des tableaux de bord) suffisent. Par exemple, une entreprise a remplacé un LLM par un outil classique, économisant 150 kg de CO₂eq par mois, tandis qu’une autre a combiné IA symbolique et générative pour diviser par 100 ses émissions.
L’auteur recommande ensuite d’opter pour le modèle le plus petit possible, car sa taille influence directement sa consommation de ressources. Les modèles massifs, comme ChatGPT (2 000 milliards de paramètres), sont souvent disproportionnés pour des tâches courantes, où des modèles 200 fois plus légers (10 milliards de paramètres) peuvent suffire. Des études, comme celle de Luccioni et al., montrent que des modèles 60 fois plus petits restent performants, voire supérieurs pour certaines applications.
Enfin, l’article souligne que l’IA frugale permet non seulement de limiter l’empreinte écologique, mais aussi de réduire les coûts. En évitant les solutions surdimensionnées et en privilégiant des approches adaptées, les entreprises peuvent concilier performance et durabilité, tout en répondant à leurs besoins réels sans céder à la tendance du "toujours plus gros".
Pour rester motivé face aux échecs, Scott H. Young souligne que la persévérance n’est pas toujours rationnelle : abandonner peut être la meilleure solution si les alternatives sont plus avantageuses. Il explique que les échecs répétés réduisent la motivation, car les progrès positifs comptent moins que les reculs, et que le manque d’efficacité personnelle peut créer un cercle vicieux. Young partage son expérience personnelle, ayant lui-même surmonté des années de doute avant de réussir, tout en insistant sur l’importance d’évaluer objectivement si continuer est justifié.
La « vibecoding fatigue » désigne une lassitude nouvelle touchant les développeurs informatiques, épuisés par l’utilisation intensive de l’IA générative. Cette fatigue, aussi appelée AI brain fry, résulte de la nécessité de valider en permanence le travail des outils d’IA, qui produisent rapidement mais génèrent aussi davantage d’erreurs. Un ingénieur cité dans l’article compare cette situation à « mettre sa bougie de productivité sur un lance-flammes », illustrant l’épuisement accru malgré une cadence de travail soutenue.
Les conséquences de cette tendance sont mesurables : une étude de 2026 révèle que 39 % d’erreurs graves supplémentaires sont générées par l’IA, tandis que 88 % des salariés les plus productifs grâce à ces outils déclarent souffrir de burn-out. Les développeurs, en tant qu’utilisateurs et concepteurs d’outils d’IA, sont en première ligne, mais d’autres métiers du langage, comme les journalistes ou les juristes, pourraient être touchés à leur tour.
Les modèles d’IA actuels, optimisés pour le code en raison de sa vérifiabilité, ont accéléré cette dynamique. Les entreprises du numérique, étudiées dans le cadre de recherches, observent une adaptation difficile à cette nouvelle forme de charge cognitive, soulignant un basculement dans l’organisation du travail.
REX DevLille 2026 : l’IA et le pragmatisme redéfinissent l’ingénierie logicielle
La conférence DevLille 2026 a mis en lumière l’impact croissant de l’IA dans le développement logiciel, au-delà des promesses marketing, ainsi que l’importance du pragmatisme face aux excès d’architectures complexes ou de réunions inefficaces. Les retours d’expérience soulignent une tendance à recentrer les pratiques sur l’efficacité et l’inclusivité, avec des outils concrets pour améliorer la collaboration.
Maxime Clément a abordé la problématique des Pull Requests (PR) interminables, souvent difficiles à relire en raison d’un manque de contexte et d’un ordre de fichiers peu intuitif. Sa solution propose de structurer les commits comme une narration, facilitant la compréhension des modifications. L’IA peut automatiser cette réorganisation, mais son usage doit être encadré pour éviter des commandes risquées, tout en gardant à l’esprit que les commits restent avant tout un outil pour les développeurs.
Par ailleurs, Vanessa Chodaton a évoqué les raisons du départ des femmes de la tech, un enjeu sociétal crucial pour l’industrie. Ces discussions reflètent une volonté de rendre le secteur plus durable et équitable, en intégrant des réflexions sur l’inclusion et les conditions de travail.