Tous les articles
19 avril 20236 min de lecture

Les nouvelles tentatives : quand elles vous sauvent et quand elles aggravent tout

Par L'équipe Atflow

lumières décoratives dans une zone sombre
Photo de Aron Visuals sur Unsplash

Relancer une opération en échec est le motif de fiabilité le plus courant, et l'un des plus faciles à faire catastrophiquement mal. Bien fait, les échecs transitoires disparaissent avant que quiconque ne les remarque. Mal fait, vos propres clients achèvent un service qui peinait déjà à tenir.

Ne relancer que ce qui peut l'être

Un timeout mérite une nouvelle tentative ; une erreur 400 non, et ce ne sera jamais le cas. Relancer une panne déterministe revient simplement à échouer plus lentement tout en générant de la charge. La première décision consiste toujours à savoir si cette classe d'erreur peut réussir à une seconde tentative.

Les règles qui comptent

  • Un backoff exponentiel avec jitter — des relances synchronisées forment une avalanche auto-infligée.
  • Un plafond strict de tentatives et une destination définie pour ce qui les a épuisées.
  • L'idempotence, sinon votre nouvelle tentative débite le client deux fois.
  • Un circuit breaker, pour cesser de marteler ce qui est manifestement hors service.

Ce sont des décisions de politique, pas des détails de code — c'est pourquoi elles méritent d'être visibles. Une branche de relance indiquant « +72 h, max 3 » est auditable ; une constante enfouie dans un service ne l'est pas.

FiabilitéIngénierieNouvelles tentatives