FaaS : bien comprendre les modèles de déploiements

Si le modèle Function-as-a-service attire les développeurs, le besoin de bonnes pratiques se fait encore sentir. Le modèle FaaS demande de bien comprendre les modèles de déploiements. Cet article fait le point.

Le FaaS, ou Function as a service, a tout pour séduire les amateurs d’applications natives pour le cloud. Ce concept architectural permet de créer des applications sans état qui réagissent à des événements. Pour cela, il s’adosse aux microservices, qui s'exécutent sur une infrastructure serverless, avec une allocation dynamique des ressources.

Toutefois peu d’équipes de développement savent finalement quand et comment passer au FaaS. Il est donc utile de suivre une feuille de route type. Celle-ci doit tenir compte de deux facteurs principaux : la façon dont les données sont associées aux processus dans l'application et les capacités technique de la plateforme.

Les modèles d’implémentation du FaaS

Il existe deux modèles d'implémentation possibles pour le FaaS. Le premier est le modèle workflow, qui est similaire aux modèles d'application multicomposants traditionnels. Dans ce modèle, on visualise la tâche soit comme une transaction, soit comme une entrée qui doit être traitée pour créer une sortie. Le deuxième type est le modèle flux d'événements, dans lequel chaque tâche représente un événement, un changement de condition ou d'état.

Lorsqu'il s'agit de l'exécution d'une fonction de base dans le cloud ou même dans le data center, le dispositif prévoit qu'un événement déclenche l'exécution d'une fonction spécifique. Ces applications FaaS qui réagissent à des flux d'événements s'appuient sur chaque fonction de la chaîne pour générer un événement secondaire ; cet événement secondaire suit des règles de traitement qui invoqueront ensuite une fonction différente. Cela crée donc une cascade d'événements qui se termine soit par une réponse de contrôle, soit par une transaction en back-end traditionnelle où le flux d'événements sert de front-end à d'autres processus métier.

Les applications qui reposent sur des flux d'événements ne s'appuient pas sur des outils spécifiques car le lien entre un processus et les données est fondamental pour la mise en œuvre de ces fonctions. Les applications sont donc, dans un sens, auto-organisées et auto-dimensionnées. Dans une implémentation pratique, il suffit de s'assurer que la chaîne d'événements est correctement en place et que la latence reste faible pour identifier, charger et exécuter chaque fonction dans la chaîne.

Évaluer les offres du marché

En grande partie, les entreprises n’utiliseront pas les flux d'événements purs parce que leurs applications en place ne se reposent que sur des workflows. La structure d'une application est plus figée lorsqu'elle utilise le modèle FaaS pour les applications de workflow. Parce que l'information suit une séquence de traitement, il est nécessaire de mettre en place un mécanisme qui dirige les traitements vers les processus les uns après les autres, plutôt que de façon automatisée.

Si votre application FaaS est sans état, vous pouvez utiliser Step Functions d’AWS et Logic Apps de Microsoft pour définir et contrôler la structure.

Lambda et Step Functions

La vision d'Amazon en matière d'informatique fonctionnelle est peut-être la plus radicale de toutes. AWS Lambda, son service FaaS, suppose que presque tout chez AWS peut à la fois générer des événements et être déclenché par des événements. On pourrait même dire qu'AWS Lambda s'intéresse davantage au workflow et à l'orchestration des applications métier qu'au traitement des flux d'événements générés en externe. Cependant, Lambda permet aussi d’intégrer des applications aux services AWS via des événements. Il s’agit donc  vraiment d’une application de gestion de flux d'événements en raison du fait qu'elle est automatisée.

Step Functions est une bonne option car elle définit un workflow qui est suivi par des fonctions et des composantes applicatives. Le service fournit un deuxième niveau d'orchestration en plus de Lambda.

Azure Functions et Logic Apps

Microsoft a l'avantage de la base installée Windows et d'une importante population d'utilisateurs Office en environnement professionnel. Toutes ces activités peuvent à la fois générer des événements et être déclenchées par des événements. Ce qui donne à Azure Functions une capacité inégalée pour créer des fonctions qui s'intègrent aux outils existants du legacy. En raison de cet avantage, beaucoup considèrent Microsoft comme le leader sur le marché du cloud d'entreprise.

Azure Logic Apps, qui vous permet de créer des liens d'intégration bâtis sur des événements à l'aide de formulaires, étend d’autant plus cet avantage. Logic Apps optimise l'orchestration des applications par les événements et les fonctions, même auprès des utilisateurs les plus avertis. Logic Apps est particulièrement doué pour intégrer les outils Microsoft et les applications Azure aux médias sociaux - ce qui est un atout pour les entreprises.

Google Cloud Pub/Sub, Functions et Firebase

Google a son propre modèle d'orchestration de fonctions, avec Google Cloud Pub/Sub, Google Cloud Functions et Google Firebase. Firebase et sa capacité à activer des fonctions liées à la base de données, en réaction à des événements, est celle qui intéresse le plus les entreprises.

Cependant, Google n'a pas exposé beaucoup de fonctions à et n'a rien à intégrer avec les outils sur site, à moins que les utilisateurs n'utilisent Google Docs.

Un dernier mot sur la fonction de service

Pour le moment, l'approche prise par les fournisseurs de cloud est beaucoup trop différente pour imaginer pourvoir déplacer les fonctions d'un cloud à l'autre, sans qu’il n’y ait beaucoup de travail à réaliser. Il convient d’abord d’identifier la plateforme qui réponde le mieux à vos besoins à court terme, puis de la tester sur cette plate-forme. Le problème de transfert de données arrivera par la suite.

Pourquoi cette approche ? Parce que les applications fonctionnelles et leurs outils évoluent très rapidement. Il est probable qu’à terme, tous les fournisseurs de cloud computing fournissent les mêmes fonctions. Mais pour l'instant, difficile de prédire. La bonne pratique consiste donc à y aller par étape.

Pour approfondir sur IaaS

Close