Cloud
La gestion des évènements, une brique indispensable au Serverless
Par Laurent Delattre, publié le 05 septembre 2018
Le Serverless est en vogue et l’approche « Function as a Service » séduit de plus en plus d’entreprises et de développeurs pour accélérer les développements d’application purement cloud. Mais cette approche doit s’accompagner d’une vraie gestion des évènements…
Parmi les différentes formes d’informatique sans serveur (ou Serverless), le « Function as a Service » est sans doute l’approche la plus innovante et la plus prometteuse. Il cherche à faire évoluer le PaaS (Platform as a Service) vers une approche de développement 100% née pour le cloud et dans le cloud en éloignant autant que faire se peut les développeurs des problématiques d’infrastructure et de plomberie logicielle pour mieux les focaliser sur la seule logique métier.
Pas de FaaS sans programmation évènementielle
Avec le FaaS, les développeurs ne codent plus que les fonctionnalités clés de leurs applications, tout le reste étant pris en charge par la plateforme cloud et les services associés. Leur code « serverless » est réveillé par des évènements déclenchés par une requête Web HTTP, un minuteur, une modification sur un fichier, l’apparition d’un nouveau billet dans un flux RSS, etc. L’entreprise ne paye que pour les ressources consommées par la fonction durant son exécution, cette dernière étant rendormie (et ses ressources libérées) dès l’évènement traité. Bref, le serverless façon « FaaS » est synonyme de micro-paiement et d’une surprenante faculté de montée en charge sans que ni les développeurs ni les IT opérationnels de l’entreprise n’aient à s’en soucier. Il en résulte une grande agilité.
La « fonction » peut être ici perçue comme la forme la plus minimaliste d’un micro-service. Dès lors, le développement « Serverless » façon FaaS nécessite non seulement d’architecturer les applications dans une pure approche micro-services mais également dans une approche très évènementielle, puisque l’exécution d’une fonction est nécessairement déclenchée par un évènement.
Il en découle une nécessaire gestion des évènements. Celle-ci n’est pas toujours apparente lors d’une première expérimentation de développement FaaS. Mais lorsque l’entreprise commence à multiplier les projets serverless, elles se retrouvent à manipuler de nombreux micro-services (d’un côté) réagissant à une multitude d’évènements (d’un autre côté), sachant qu’en parallèle plusieurs services différents de l’entreprise peuvent être amenés à réagir à un même évènement. Il en résulte une complexité de maintenance des applications et d’optimisation des flux évènementiels.
Des services Cloud pour router et gérer les évènements.
C’est pourquoi le développement Serverless est aujourd’hui indissociable de la gestion des évènements. Et pour les gérer efficacement, les Clouds commencent à mettre à disposition des services spécialisés dans la déclaration, la gestion et le routage des évènements. Ces services permettent d’utiliser des connecteurs prédéfinis pour souscrire à des évènements, puis de définir ce que ces évènements déclencheront : l’appel d’un service Cloud, le déclenchement d’une opération sur l’infrastructure de l’opérateur, l’exécution d’un workflow serverless (comme ceux d’Azure Logic Apps, ou ceux de services d’automatisation comme IFTTT, Zapier ou Office Flow) ou encore l’appel d’une fonction Serverless (FaaS) ! Ces plateformes optimisent les flux évènementiels en les regroupant, évitent aux fonctions Serverless d’être sans cesse à l’écoute d’un ‘event’, et offrent une vue unifiée de tous les évènements gérés par l’entreprise au travers des multiples applications « serverless » qu’elle a développées et autres services clés en main qu’elle utilise.
Autrement dit, la guerre que se livrent aujourd’hui les grands clouds publics autour du Serverless ne se va pas se limiter à la seule implémentation du FaaS. Les entreprises clientes devront aussi prendre en compte l’ensemble des services associés à ce FaaS à commencer par la gestion des évènements. Le routage et la gestion des évènements Cloud va s’imposer petit à petit comme un volet indissociable du Serverless. Le premier à avoir saisi l’importance du sujet n’est autre que Microsoft avec « Azure Event Grid ». On retrouve aujourd’hui la même idée chez « Serverless.com » avec son « Event Gateway ». Les dernières améliorations apportées par AWS à « API Gateway » tendent aussi dans cette direction même si on attend toujours un véritable équivalent dans l’écosystème AWS Lambda.
À noter que ces services ne sont pas dédiés à l’opérateur Cloud. Même si Azure Event Grid supporte bien évidemment nativement les « Azure Functions », rien n’empêche de router les évènements gérés par Event Grid vers des fonctions AWS Lambda. Agissant comme des routeurs d’évènements, ces services évènementiels viennent en complément des services de fiabilisation des collectes de flux de données que sont Azure Event Hubs ou Amazon Kinesis ou des services de bus de messagerie comme Azure Service Bus, AWS SQS, Apache Kafka…
Notre saga « Serverless » :
Partie 1 : Les différents visages du Serverless Computing
Partie 2 : Atouts et limites du Serverless Computing…
Partie 3 : La gestion des évènements, une brique indispensable au Serverless
A suivre, les principaux runtimes FaaS