Azure Logic App, l'outil de workflow "Cloud" de Microsoft
Dans la série "produits méconnus", je pense qu'il est important de vous faire une petite présentation d'Azure Logic App, l'outil de workflow version "Cloud" de Microsoft.
Lorsque l'on parle d'outils de workflows, on pense très vite à Biztalk Server ou, si vous l'avez connu, à Workflow Foundation (ping Florent Santin, qui en était très fan). Cependant, Workflow Foundation n'existe pour ainsi dire plus et Biztalk Server fait souvent peur aux (jeunes) développeurs à la simple évocation de son nom. Microsoft se devait donc de trouver une solution intermédiaire permettant, de manière simple, la réalisation de workflows pouvant eux parfois être très complexes. Et c'est là qu'intervient Azure Logic App !
Microsoft définit Azure Logic App de la manière suivante: "Logic Apps est un service cloud dans Azure qui simplifie la conception et la création de solutions scalables pour l’intégration d’applications, l’intégration de données, l’intégration de systèmes, l’intégration des applications de l’entreprise (EAI) et la communication entre entreprises (B2B), dans le cloud, localement, ou les deux."
Vu qu'il s'agit d'une définition à la sauce Microsoft, le texte est pour le moins flou donc, si je devais en donner une définition, voici quelle serait ma version: "Azure Logic App est un service d'Azure qui permet de développer des applications permettant, via un ensemble de connecteurs, de faciliter l'intégration de données dans le cloud ou votre système d'exploitation".
C'est toujours un peu flou ? Bon, essayons de voir cela en images alors :)
Déjà, vu qu'il s'agit d'un outil de workflow, tout se passe via un designer graphique. Cela n'en a pas l'air mais c'est très pratique et rapide pour la mise en place ! Bien sûr, vous disposez d'une vue "code" qui vous permet d'avoir la représentation JSON de votre workflow mais c'est tout de suite moins sympa.
Votre workflow se déclenche lorsque qu'une requête POST est effectuée sur le endpoint de votre Logic App. Vous avez la possibilité de définir le schéma du corps de la requête, ce qui vous permettra par la suite de récupérer les informations envoyées et de les manipuler dans le reste de votre workflow :
Ensuite, vous allez pouvoir définir tout un ensemble d'actions qui découleront les unes des autres. Par exemple, vous serez en mesure de faire des conditions (branches) telles que :
- "Si XXX alors sinon YYY"
- Attendre "XXX" minutes avant de faire cela
- Faire XXX et en même temps faire YYY
- Etc...
Sur chacune de ces conditions, vous allez pouvoir venir brancher des connecteurs et c'est là la grande force de Logic App : vous avez déjà tout un ensemble (assez impressionnant) de connecteurs à votre disposition, que ce soit pour s'interfacer avec des produits Microsoft (Azure AD, SQL Server, SharePoint, Office, etc.) et même des produits tiers (SalesForce, Amazon, Adobe, flux RSS, etc.) :
Voici, à titre d'exemple, un workflow qui, lorsqu'on le déclenche, fait un appel HTTP à un serveur OAuth pour s'authentifier puis qui, en fonction de la valeur de retour de l'identification, appelle ensuite 2 autres APIs ou envoie un email :
Le point intéressant est que pour pouvoir appeler les APIs "GetUserByEmail" et "GetUserById", il faut être authentifié et donc passer, dans les headers, un jeton d'autorisation. Qu'à cela ne tienne! Avec Logic App, vous avez accès au headers des requêtes, au corp des requêtes et à tout un ensemble de fonctions de manipulation:
Et voilà, en quelques clics et quelques minutes (et sans une ligne de code), nous sommes en mesure de mettre en place un workflow (allant d'un niveau très simple à une certaine complexité) qui s'interfère avec un ensemble d'outils Microsoft (ou tiers) et qui vous permet de mieux gérer l'intégration de vos données!
S'agissant d'une brique de l'offre Cloud de Microsoft, celle-ci a un coût que je vous laisse découvrir (teasing: 0,000022 € / action / exécution). Il convient donc de faire des estimations afin de déterminer si cette solution est la plus pertinente pour vous ou non.
Bien sûr, en tant que développeur, nous serions tout à fait à même de faire la même chose via une WebAPI et des appels REST vers les différents services. Cependant, parfois, il est bon de prendre du recul et de voir ce qu'il existe autour de nous : réinventer la roue peut ne pas être la meilleure des solutions :)
Happy coding!
Commentaires