Rubriques

Intelligence artificielle Automatisation Veille Écosystème lyonnais

Le site

Tous les articles Le média Nous écrire
Automatisation

Gérer les erreurs dans ses workflows : reprises, alertes et journalisation

Personne ne construit la gestion d'erreur avant le premier incident. Détection, alerte utile, reprise sans doublon, journal exploitable : la partie ingrate qui décide de la fiabilité de vos automatisations.

Gérer les erreurs dans ses workflows : reprises, alertes et journalisation

La gestion des erreurs dans un workflow automatisé est la partie que personne ne construit avant le premier incident. On assemble les étapes, on teste le chemin nominal, ça marche, on met en production. Trois semaines plus tard, une API change un format, un jeton expire, un fichier arrive vide, et personne ne s'en aperçoit avant qu'un client ne le signale.

Cette asymétrie est structurelle. Le chemin nominal représente 10 % du travail et 90 % de la satisfaction immédiate ; la gestion d'erreur représente l'inverse. Pourtant, c'est elle qui détermine si votre automatisation devient une infrastructure sur laquelle on s'appuie ou un dispositif que l'on finit par contourner.

Cet article décrit les quatre familles d'échec, puis les quatre briques à construire : détection, alerte utile, reprise sans doublon, journal exploitable. Un chapitre entier est consacré aux erreurs silencieuses, qui coûtent bien plus cher que les plantages francs.

Gestion des erreurs : les quatre familles d'échec d'un workflow

  • L'erreur franche. Une étape renvoie un code d'erreur, le workflow s'arrête. C'est le cas le plus simple, et le seul que les outils gèrent nativement.
  • L'échec partiel. Sur 300 lignes traitées, 12 échouent. Le workflow se termine « avec succès ». Douze clients n'ont rien reçu, et rien ne le signale.
  • L'erreur silencieuse. Tout s'exécute, mais le résultat est faux : un champ vide propagé, un format de date interprété à l'envers, une valeur par défaut prise pour une donnée réelle.
  • La non-exécution. Le workflow ne s'est pas lancé du tout : déclencheur désactivé, quota atteint, instance arrêtée. C'est le cas le plus dangereux, car il ne produit aucun signal par définition.

Retenez cette hiérarchie : un plantage franc coûte une heure de réparation, une erreur silencieuse coûte parfois plusieurs semaines de données à reconstituer.

Une précision utile avant d'entrer dans le détail : les moyens dont vous disposez dépendent de votre plateforme. Une instance que vous administrez vous-même donne accès aux journaux système et à la relance fine ; un service en ligne impose ses propres écrans et ses durées de rétention. Cette différence, souvent découverte au premier incident, est un des critères du choix entre automatisation auto-hébergée et solution en ligne.

Détecter : surveiller l'absence autant que la présence

La surveillance des automatisations repose sur trois mécanismes complémentaires.

  1. Le workflow d'erreur dédié. La plupart des orchestrateurs permettent de désigner un workflow appelé automatiquement lorsqu'un autre échoue ; la documentation de n8n décrit ce mécanisme sous le nom de déclencheur d'erreur. Créez-en un seul, partagé par toutes vos automatisations, qui met en forme et route les alertes. C'est la brique la plus rentable du dispositif.
  2. Le témoin de vie. Chaque workflow périodique signale sa bonne fin à un compteur externe. Si le signal n'arrive pas dans la fenêtre attendue, l'alerte part. C'est le seul moyen de détecter une non-exécution : on ne surveille pas ce qui a échoué, on surveille ce qui n'est pas arrivé.
  3. Le contrôle de vraisemblance. À la fin du traitement, comparez le résultat à une attente grossière : nombre de lignes traitées supérieur à zéro, montant total dans un ordre de grandeur connu, aucune date dans le futur. Trois assertions bien choisies attrapent la majorité des erreurs silencieuses.

Le principe général est celui des systèmes en production : surveiller des symptômes visibles par l'utilisateur plutôt que des causes internes. Un traitement qui rend zéro résultat au lieu de deux mille est un symptôme ; une exception dans une étape intermédiaire n'en est pas nécessairement un.

Alerter sans saturer : l'alerte utile

Une alerte n'a de valeur que si elle est lue. Un canal qui reçoit trente notifications par jour, dont vingt-neuf sans conséquence, ne sert plus à rien au bout d'une semaine. Quatre règles pour éviter ce sort.

  • Regrouper. Cent échecs de la même cause produisent une alerte, pas cent. Un compteur suffit : « 104 échecs sur l'étape Facturation depuis 09h12 ».
  • Hiérarchiser. Deux niveaux suffisent. Le niveau « action immédiate » va sur un canal qui réveille quelqu'un ; le niveau « à regarder » alimente un récapitulatif quotidien. Tout classer en urgent revient à ne rien classer.
  • Rendre l'alerte actionnable. Elle doit contenir le nom du workflow, l'identifiant de l'exécution, l'étape concernée, le message d'erreur brut, l'identifiant de l'enregistrement en cause et un lien direct vers l'exécution. Une alerte qui dit « erreur dans le workflow 12 » impose dix minutes de recherche à chaque fois.
  • Nommer un destinataire. Une alerte envoyée à un canal collectif sans responsable désigné n'est traitée par personne. Le nom peut tourner chaque semaine, il doit exister.

Reprendre sans créer de doublon

C'est le sujet le plus technique et le plus important. Relancer une automatisation après un incident est trivial ; la relancer sans envoyer deux fois la même facture ne l'est pas.

La notion clé est l'idempotence : une opération est idempotente si l'exécuter deux fois produit le même résultat que l'exécuter une fois. Les API sérieuses exposent pour cela une clé d'idempotence, que le client génère et transmet ; l'API reconnaît la clé déjà vue et renvoie le résultat initial au lieu de créer un second objet. La documentation de Stripe décrit précisément ce mécanisme, qui s'est imposé comme un standard de fait.

Quand l'API cible ne propose rien de tel, quatre techniques prennent le relais.

TechniquePrincipeQuand l'utiliser
Clé d'idempotenceUn identifiant stable dérivé de la donnée métier, transmis à l'APIDès que l'API le propose : c'est la solution la plus sûre
Journal de traitementUne table qui enregistre chaque identifiant traité et l'horodatageAPI sans idempotence ; à consulter avant chaque envoi
Marqueur sur la sourceUn champ « traité le » écrit sur l'enregistrement d'origineQuand vous maîtrisez la source (base, fiche CRM, ligne de tableur)
Reprise par lot bornéRejouer uniquement les identifiants en échec, listés explicitementCorrection manuelle après incident : on ne rejoue jamais tout le lot

Trois règles complètent le dispositif. N'appliquez de nouvelles tentatives automatiques qu'aux erreurs temporaires (délai dépassé, code 429, code 503), avec un délai croissant entre chaque essai, et jamais aux erreurs de validation, qui échoueront identiquement. Limitez le nombre de tentatives, sous peine de transformer un incident chez le fournisseur en attaque involontaire. Enfin, prévoyez une file d'attente des éléments définitivement en échec, à traiter à la main : sans elle, ces éléments disparaissent.

Journaliser pour pouvoir expliquer

Un journal exploitable n'est pas un fichier de messages en vrac. Chaque ligne devrait permettre de répondre à quatre questions : quoi, quand, sur quelle donnée, avec quel résultat.

  • Un identifiant de corrélation propagé du début à la fin, qui permet de suivre un enregistrement à travers toutes les étapes et tous les systèmes.
  • L'identifiant métier de la donnée traitée (numéro de commande, référence client), sans lequel le journal est illisible.
  • Le résultat de chaque étape et sa durée, pour repérer les dégradations avant la panne.
  • Une durée de conservation décidée, et pas de données personnelles inutiles dans les journaux. Un journal est un traitement de données comme un autre.

Ce travail rejoint directement celui décrit dans notre article sur la manière de documenter ses automatisations : sans schéma des flux à côté du journal, la lecture des traces reste une enquête.

Le chapitre des erreurs silencieuses

Un plantage franc se répare en une heure. Une erreur silencieuse se découvre trois semaines plus tard et coûte beaucoup plus cher, parce qu'il faut identifier la période affectée, corriger les données produites, et prévenir les tiers concernés.

Un exemple courant : une synchronisation quotidienne entre un formulaire et un CRM. Le formulaire ajoute un champ, l'ordre des colonnes change, et le workflow continue de s'exécuter « avec succès » en écrivant le code postal dans le champ téléphone. Les chaînes de connexion d'un CRM à ses autres outils sont particulièrement exposées, parce que les schémas de données y évoluent sans préavis des deux côtés. Rien n'échoue. Six cents fiches sont abîmées avant qu'un commercial ne s'en étonne. La reprise demande alors de retrouver les valeurs d'origine, ce qui n'est possible que si vous avez conservé la charge utile brute reçue.

Quatre parades, par ordre d'efficacité.

  • Valider le format en entrée. Un contrôle de schéma sur les données reçues (champs attendus, types, valeurs obligatoires) arrête le traitement dès la première anomalie, au lieu de la propager.
  • Conserver la charge utile brute reçue à chaque exécution, pendant une durée définie. C'est ce qui rend une reprise possible, et c'est presque toujours ce qui manque le jour de l'incident.
  • Comparer aux volumes habituels. Un traitement qui produit 12 lignes là où il en produit 300 en moyenne mérite une alerte, même s'il s'est terminé normalement.
  • Refuser les valeurs par défaut silencieuses. Un champ absent doit provoquer une erreur explicite, pas une chaîne vide qui traversera toute la chaîne sans faire de bruit.

La checklist avant mise en production

  1. Un workflow d'erreur global est branché sur toutes les automatisations.
  2. Chaque traitement périodique émet un témoin de vie surveillé.
  3. Trois contrôles de vraisemblance sont posés en fin de traitement.
  4. Les alertes contiennent l'identifiant d'exécution et un lien direct.
  5. Les envois externes disposent d'une clé d'idempotence ou d'un journal de traitement.
  6. Les nouvelles tentatives sont limitées et réservées aux erreurs temporaires.
  7. Une file des échecs définitifs existe et quelqu'un la relit chaque semaine.
  8. Un identifiant de corrélation traverse toute la chaîne.

Ce qu'il faut retenir

La gestion des erreurs d'un workflow ne consiste pas à empêcher les pannes : elles arriveront, souvent à cause d'un tiers sur lequel vous n'avez aucune prise. Elle consiste à garantir trois choses : que vous saurez qu'il s'est passé quelque chose, que vous pourrez reprendre sans faire de dégâts, et que vous pourrez expliquer ce qui s'est produit.

Si votre parc d'automatisations n'a pas encore de filet, commencez par les deux briques les moins chères : un workflow d'erreur global qui route toutes les alertes vers un seul canal, et un témoin de vie sur chaque traitement périodique. Une demi-journée de travail, et vous aurez éliminé la catégorie d'incident la plus coûteuse, celle qu'on découvre trois semaines trop tard.

Sources

Laisser un commentaire

Votre commentaire

Jamais publiée, jamais transmise à des tiers.

Les commentaires sont relus avant publication. Voir la politique de confidentialité.