Comment développer une stratégie serverless en 6 étapes

Comment développer une stratégie serverless en 6 étapes Le function as a service s'est démocratisé chez les clients de tous hyperscalers. Conçue pour consommer les ressources machines au plus juste, cette techno implique une méthodologie particulière.

Faut-il encore rappeler la promesse des offres cloud dits "sans serveur" (serverless) tant ces dernières se sont démocratisées ces dernières années ? Ces services dit de Function as a Service (FaaS) permettent de déployer et d'exécuter du code sans avoir à se soucier des serveurs ou machines virtuelles sous-jacentes. En tâche de fond, les ressources machines sont automatiquement dimensionnées. Le code est mis en musique via ce qu'on appelle "des fonctions" en réponse à des événements. Lors de l'appel d'une page web par exemple, elles pourront chacune enclencher des services qui lui sont associés : authentification, interrogation de la base de données, push notification, etc.

1. Découper les applications en composant

Historiquement, l'exécution des fonctions est limitée à une durée comprise entre 5 et 10 minutes selon les providers. Au fil des années, les fournisseurs ont déverrouillé ce cadenas. Le temps d'exécution des fonctions est notamment passée à 15 minutes chez AWS. Résultat : le nombre de systèmes éligibles au serverless a progressé. Reste qu'il est toujours nécessaire de découper son application en composants pour pouvoir l'exécuter au sein des fonctions. Des micro-containers dont la taille est également restreinte. Chez AWS, elle se limite à 10 Gb et 6 vCPU. Principal avantage ? Le tarif est calculé en fonction du temps de calcul utilisé, à la milliseconde près. "Lorsqu'on a des tâches complexes à réaliser, on va les répartir sous forme de micro ou nano-services entre plusieurs fonctions, que ce soit verticalement ou horizontalement", résume Alain Rouen, CTO de Smile.

Une série de fonctions pourra par exemple orchestrer un processus de gestion de commande. Une fois le processus lancé par le client sur le site marchand, une première fonction sera déclenchée pour contrôler la disponibilité du produit en stock, une deuxième pour valider la commande, une troisième pour solliciter le système d'expédition, et ainsi de suite. Autre exemple : au sein d'un intranet cette fois, un FaaS pourra venir gérer l'ensemble des messages et alertes relatifs à un workflow de publication.

2. Bien choisir son FaaS

Pour une direction technique souhaitant débuter avec un premier projet de FaaS, il est recommandé de se tourner vers un cloud déjà utilisé par les équipes. Un choix qui permettra de bénéficier de toute la puissance des services managés du provider, notamment en matière de gestion de données. Et ce en avançant en terrain déjà en partie connu.

"L'un des principaux cas d'usage des fonctions Lambda d'Amazon réside dans la capture d'événements sur les infrastructures d'objets connectés"

Certains clouds conviendront cependant mieux à certains types de projet. C'est le cas par exemple d'AWS pour les chantiers d'IoT. "L'un des principaux cas d'usage des fonctions Lambda d'Amazon réside dans la capture d'événements sur les infrastructures d'objets connectés, notamment du fait de la richesse de l'offre d'AWS pour cette catégorie d'environnement", souligne Alain Rouen. "En termes de cas d'usage, c'est la gestion de données qui sera plutôt plébiscitée du côté du cloud Azure de Microsoft."

3. Mettre en œuvre les bonnes pratiques de développement

Du fait de la granularité de leur architecture, les applications serverless pourront rapidement se révéler complexes à faire évoluer. Comment s'y retrouver en effet au sein d'une galaxie de nombreux microcomposants ? Face à ce défi, les bonnes pratiques relatives au développement et à la maintenance du code se révèlent clés, de la documentation logicielle à la gestion de versions en passant par l'automatisation des tests. Avec le serverless, on gagne en flexibilité au détriment de la simplicité. La multiplication des petits blocs applicatifs accroissant dans le même temps le risque d'erreur d'exécution et de latence.

4. Faire du prototypage rapide

Les offres de FaaS plaisent de par leur efficacité en termes de productivité de développement. "Nous sommes enclins à privilégier ce mode pour le prototypage rapide. Il permet de s'abstraire des problématiques d'infrastructure. On n'a pas besoin d'adjoindre un profil DevOps à l'équipe", explique Mario Arnautou, head of engineering au sein de l'entreprise de services du numérique Neoxia. "Le FaaS est idéal pour mettre en place une squad agile de quatre à cinq développeurs en vue de se focaliser sur un problème métier et de délivrer une application rapidement avec un time-to-market faible. Sachant qu'on a un volume de requêtes gratuit pour commencer qui s'élève à un million d'invocations par mois dans le cas des fonctions Lambda d'Amazon."

En termes de projet, le FaaS pourra convenir au déploiement d'un petit intranet dédié à 30 salariés comme à une plateforme massive ciblant de gros volumes de trafic. "De par ses capacités de dimensionnement et son modèle de facturation à la demande, le serverless est adapté à ces deux extrêmes comme aux applications intermédiaires", constate Mario Arnautou.

5. Se doter d'une architecture standard

A partir d'une certaine masse critique d'applications, il pourra se révéler intéressant d'opter pour une architecture qui rende les fonctions portables d'un cloud à l'autre. "Il existe des surcouches qui permettent de gérer les fonctions soi-même, notamment par le biais de containers Kubernetes (via les frameworks Fisse ou OpenFaaS, ndlr)", explique Alain Rouen. Dans cette configuration, on pourrait imaginer une infrastructure de FaaS agnostique en termes de fournisseurs. Avec à la clé des bus événementiels qui dialoguent de manière transversale, en étant basés sur des clouds différents. "C'est une configuration que nous observons chez certains grands comptes", note Alain Rouen.

6. Mettre le serverless au service de la modernisation d'application

Compte tenu de leur nature événementiel, les architectures de FaaS représentent une solution toute trouvée pour moderniser les applications historiques développées par exemple en Java ou en PHP. "Dans ce contexte, les fonctions sont conçues comme des adaptateurs placés en façade des systèmes traditionnels pour en moderniser les interfaces graphiques. Les flux de données transiteront par des API qui seront appelées depuis les frontaux web", détaille Alain Rouen. Selon le baromètre 2023 de Datadog sur le serverless, les fonctions embarquant du langage Java représentent 10% des requêtes lancées sur le service Lambda d'Amazon au premier semestre.

En amont, les fonctions devront être intégrées à la chaîne de livraison et de déploiement continus (CI/CD). Dans cette optique, elles pourront être prises en charge par un outil d'infrastructure as code comme Terraform. De même, elles pourront rentrer dans la boucle du DevOps en se nichant dans des outils comme GitLab pour outiller la CI/CD d'un bout à l'autre.