Lorsque vous intégrez un process business dans un projet applicatif, il est très compliqué de transposer la réalité sur un système informatique. Que ce soit au niveau des données, mais surtout au niveau process. C'est pourquoi je vous présente un outil qui est spécialement conçu pour intégrer des process de l'entreprise.
Avez vous eu à intégrer des process multi étapes en programmation ?
Cela peut être :
Tout process qui peut durer dans le temps est difficile à traduire informatiquement, car on a souvent du mal à savoir quand est-ce que les événement vont se produire.
A tel point que, les méthodes mises en place par les sociétés informatiques, consistent souvent à coder plusieurs étapes du process séparément, puis en planifier l’exécution récurrente.
Ainsi il n'est pas rare d'avoir une chaîne de vente qui ressemble à cela :
⚠️ Si une étape est en erreur, c'est l'intégralité du process qui est remis en question.
Pour une pièce défectueuse à remplacer dans la commande avant expédition, il faudra rajouter une étape de réassort etc... Le simple fait de casser le schéma connu de process peut corrompre son fonctionnement. De même que les rattrapages sont souvent gérés à la main, c'est à dire, hors process.
Gérer la complexité d'un process long est un cauchemar pour tout développeur qui l'a déjà fait. Souvent, à cause du fait que chacune de ces étapes passe par un outil ou une passerelle dédié. Chaque équipe de l'entreprise ayant son mode de fonctionnement, il n'est pas rare d'avoir :
Vous voyez où je veux en venir ? Les passerelles sont souvent différentes, et jusqu'à présent, il y a peu d'outils capable d'unifier tout le process, de gérer facilement le prolongement d'une étape dans le temps, un retry de process sans avoir à tout reprendre de 0. J'ai l'air de décrire quelque chose de magique et d'impossible jusque là. Pourtant cet outil existe réellement et il s'appelle Temporal ⚡ !
Temporal est une technologie qui a été créée par le Tech Lead d'Amazon SQS. Et rien qu'avec ça on sait que le bougre en a sous le coude avec les process asynchrones.
SQS pour Simple Queue Service, est un service d'Amazon qui permet à plusieurs briques de code de s'interfacer (via un messaging system) efficacement et à moindre coût. Il s'agit d'un outil taillé pour les architectures micro-service.
Temporal est tout de même différent de SQS, il peut fonctionner de plusieurs façons, même au sein d'un service unique et sera plutôt un orchestrateur de process. Il s'agit d'un moteur de workflow, c'est à dire qu'il va séquencer les étapes les unes après les autres afin de reproduire tout le process de A à Z. Que vous soyez en micro-service ou en monolithique importe peu.
De même, il est très utilisé par des boîtes comme Uber, le géant de la mise en relation du transport pour une raison bien particulière : son extrême résilience vis à vis du long-run.
Lorsque chacune de vos étapes de process peut tourner pendant période difficilement prévisible, il y a plusieurs façon de procéder :
Temporal vous propose la seconde option, mais plutôt que ce soit vos systèmes qui passent en position d'attente, c'est le process de Temporal qui va le faire pour votre système, laisse ainsi de la ressource disponible pour continuer à opérer.
Dans l'idée, vous aurez besoin de coder des micro étapes de votre process. Tant que vous pouvez découper, il faut découper :
Dans Temporal, ces étapes s'appellent des activities.
Si l'on peut découper encore plus finement, il faut le faire, et vous allez comprendre pourquoi. Le principe même de Temporal, c'est de venir Wrapper chacune de ces étapes, de manière à être capable de relancer uniquement celle qui s'est arrêté ou a rencontré une erreur.
Au lieu d'avoir des process qui doivent être rejoué de A à Z en cas d'erreur, ici nous sommes dans une situation ou chacune des étapes peut être jouée l'une après l'autre, et lorsqu'une étape s'arrête, elle peut être reprise à tout moment.
A tel point que si vous avez un bug dans le code, cette fonctionnalité vous permet de redéployer entièrement votre projet. Le processus se relancera comme si rien n'avait bougé, et réexécutera uniquement l'activité en erreur.
Pas de gestion de l'invalidation à faire, pas de rollback à prévoir.
Je m'adresse à tout ceux qui ont déjà codé des process longs ☝️, vous savez de quoi je parle, pas vrai ? 😝
Après rien ne vous empêche de faire le flow sur mesure, qui gère le rollbck ou autre.
Cepandant, il y a quelques principes de base à respecter comme toujours utiliser des fonctions déterministes pour vos activities, car ces inputs vont créer un pattern qui permettra de savoir si oui ou non cette étape a déjà été jouée. Il faut qu'une fonction qui soit appelée avec le même input retourne le même résultat.
Les avantages de Temporal sont légions :
Je pense qu'il y a largement plus d'avantages que d'inconvénients. Vous pouvez même opter pour un modèle SaaS hébergé par la société qui édite Temporal, si vous décidez de déléguer l'administration d'un serveur.
Qu'attendez-vous pour vous y mettre ? Prochainement je vous parlerai de mes expériences avec Temporal.
Développeur passionné depuis plus de 20 ans, j'ai une appétence particulière pour les défis techniques et changer de technologie ne me fait pas froid aux yeux.
Nous utilisons des cookies sur ce site pour améliorer votre expérience d'utilisateur.