Retour aux articles
  • 04.06.2021

Qu’est ce que le serverless computing ?

Qu’est ce que le serverless computing ?

Le serverless computing est un style de développement de logiciels sur des plateformes cloud qui libère les développeurs des complexités du déploiement du code, du provisionnement de l'infrastructure et de la gestion de la disponibilité du code dans le cloud.  Amazon l'a popularisé avec Lambda en 2014.  Depuis, tous les fournisseurs de cloud ont suivi le mouvement avec des capacités similaires, Azure Functions, et Google Cloud Functions.

 

De la même manière que les développeurs devaient se préoccuper des serveurs bare metal avant l'arrivée de la virtualisation, ils n'ont pas eu à se préoccuper spécifiquement des machines virtuelles avec l'avènement des conteneurs.  De même, les développeurs n'ont pas à se soucier des conteneurs en raison de l'intérêt croissant pour le serverless computing, le nouveau paradigme pour le développement, le déploiement et l'exécution du code.

 

Qu’est ce que le serverless computing ?

Il existe de nombreuses définitions du "serverless" : certaines parlent de "Functions as a Service" (FaaS), d'autres de "Backend Services" (BaaS), qu'il s'agisse de bases de données (DBaaS) ou de services de sécurité.  Ils partagent tous deux des caractéristiques similaires, à savoir l'abstraction d'une plateforme ou d'une couche fonctionnelle à l'aide d'un modèle de coût basé sur l'exécution ou la consommation.

La plupart de l'intérêt pour le serverless se porte sur la fonction en tant que service, ce qui ne doit pas être interprété comme une programmation fonctionnelle. En fait, la plupart des fournisseurs de cloud computing ne fournissent pas de support majeur pour la programmation fonctionnelle.

Qu'est-ce qui caractérise le serverless computing ?

Écriture du code - Un développeur peut écrire le code qu'il souhaite et le faire exécuter dans un environnement FaaS avec un minimum de modifications. Le code aura un gestionnaire de messages qui est la méthode principale agissant comme interface d'écoute.

Déploiement du code : il s'agit littéralement d'un copier-coller dans la console FaaS pour cette fonction spécifique. Bien que la plupart des IDE prennent également en charge l'intégration de FaaS.

Exécution du code - Les FaaS conviennent aux architectures événementielles, car le code s'exécute lorsqu'il reçoit un événement ou un déclencheur. Il peut s'agir d'une requête HTTP, de l'envoi d'un fichier ou de l'arrivée d'un message sur une file d'attente de messages, etc.

Mise à l'échelle du code : il incombe au runtime FaaS de mettre à l'échelle autant d'instances que nécessaire. Les technologies de gestion des clusters comme Kubernetes, si elles sont utilisées, sont abstraites.

Fonctionnement à court terme - Les FaaS sont éphémères et ne fonctionnent pas à long terme, ils ne conservent donc aucun état.  Il incombe au développeur de faire persister tout état en dehors de la fonction.

Coût d'exécution - Les FaaS sont facturés pour la durée d'exécution. C'est là que FaaS diffère de BaaS.

Quels sont les avantages du serverless computing ?

Le serverless computing est excellent pour la mise à l'échelle

Les approches traditionnelles du serveur et du cloud computing exigent qu’on alloue des ressources fixes et qu’on espère que tout se passe comme prévu.

Cependant, un pic d'utilisation dû, par exemple, à une promotion virale qui augmente les demandes du serveur peut entraîner une baisse des performances de son application. Au contraire, le serverless permet d'accepter autant de demandes que possible sans affecter les performances.

Le serverless computing permet des mises à jour rapides et en temps réel de son application

Dans un environnement sans serveur, les fournisseurs mettent à disposition une collection de fonctions. Cela signifie qu’on peut télécharger des bouts de code pour lancer une version "minimale" de son application sur le marché. On peut ensuite télécharger des mises à jour en continu pour améliorer l'application.

Le serverless computing est rentable

Le mode de facturation à l'utilisation permet aux développeurs de ne payer que les services qu'ils utilisent. Certains fournisseurs, comme AWS, peuvent calculer les prix sur la base d'incréments de 100 millisecondes.

Pas besoin de griller son budget informatique en payant des frais mensuels élevés, pour finalement utiliser 15 à 25 % de la capacité payée.

Au lieu de cela, on peut se concentrer sur l'utilisation de la plateforme pour développer son produit principal afin qu'il puisse être mis sur le marché le plus rapidement possible.

Quels sont les inconvénients du serverless computing ?

Le démarrage à froid

Si une application ne déclenche aucune fonction pendant un certain temps, le système d'un fournisseur de cloud computing la met en veille afin d'économiser des ressources.

Il s'agit d'une différence marquante entre les serverless et les serveurs fonctionnant en permanence.

Le problème, est que la prochaine fois que l’application appellera la fonction, celle-ci mettra un certain temps à se "réveiller", ce qui entraînera une latence. Ce léger retard est ce qu'on appelle un démarrage à froid.

Bien que la latence ne dure que quelques millisecondes, dans les applications lourdes, ce temps peut entraîner un retard dans les demandes des clients.

Les meilleurs fournisseurs de cloud computing utilisent des tactiques telles que l'utilisation d'un moteur Chrome V8 capable de démarrer à froid et d'exécuter du code JavaScript en cinq millisecondes maximum.

Il peut être difficile de trouver les problèmes techniques et de les déboguer.

Le serverless computing décompose les piles monolithiques en fonctions plus petites et indépendantes. Il peut être difficile de trouver la zone problématique spécifique.

Les DevOps ne voient pas comment leur code fonctionne du côté serveur, ce qui rend les tests et le débogage encore plus difficiles.

La sécurité peut être un problème

Lorsqu’on céde le contrôle de l'infrastructure de son code à un fournisseur tiers, on lui faites confiance pour que le service reste infaillible.

Pourtant, le serverless computing gère simultanément le code de plusieurs clients sur le même serveur. Ce scénario est appelé "multitenancy" dans le cloud computing, où plusieurs clients partagent les ressources du serveur.

En fonction du fournisseur de cloud computing, toute confusion peut entraîner des fuites de données. C'est un gros problème quand on traite des données sensibles telles que des données médicales, financières ou autres données personnelles.

L'architecture du serverless peut ne pas être idéale pour certaines applications

Les fournisseurs de cloud computing sans serveur sont responsables de l'allocation des ressources dynamiques. Certains fournisseurs peuvent limiter la quantité de leurs ressources globales.

En outre, leur service peut exiger que les clients utilisent des protocoles spécifiques pour interagir avec leur plateforme. Cela signifie que parfois on doit renoncer à certaines options de personnalisation et utiliser ce qu'ils proposent.

Le serverless est une évolution naturelle du cloud computing traditionnelle, mais cette dernière n'en est encore qu'à ses balbutiements en tant que technologie destinée à remplacer le premier.

Il ne fait aucun doute que la technologie sans serveur a encore beaucoup de lacunes à combler. Ces limitations sont autant d'obstacles à l'adoption généralisée de l'architecture serverless pour le développement d'applications.