Le serverless, nouvelle révolution de l'hébergement ?
Alors que le cloud computing est désormais incontournable aussi bien pour les entreprises que pour les freelances IT, un nouveau modèle de développement fait de plus en plus parler de lui.
Le serverless computing ou informatique sans serveur est un type de conception cloud-native. Il permet aux développeurs de concevoir, tester, exécuter et maintenir leurs applications sans se préoccuper de la gestion des serveurs. Alors comment fonctionne cette architecture sans serveur ? Le serverless est-il la nouvelle révolution de l’hébergement ? Découvrez-le dans cet article.
Comment fonctionne le serverless computing ?
Un serveur sans serveur
Malgré son nom, l'architecture serverless nécessite quand même des serveurs. Où est la nouveauté dans ce cas ? Dans leur gestion qui est complètement isolée du développement des applications. Les programmeurs n’ont ainsi plus du tout à se soucier des approvisionnements, des ajustements en fonction du trafic, des correctifs, des mises à jour, etc. Ils ne sont plus non plus responsables de la maintenance des environnements.
Mais alors qui s’occupe de ces tâches ? Ce sont les fournisseurs de cloud. Le serverless est effectivement basé sur le cloud computing.
C’est Amazon Web Services (AWS) qui a le premier proposé cette architecture sans serveur avec AWS Lambda en 2014. Aujourd'hui, quasiment tous les prestataires de cloud offrent une plate-forme sans serveur. On peut ainsi citer Microsoft avec Azure Functions, Google Cloud Functions ou encore IBM avec Cloud Functions.
Dans ces offres, les fournisseurs de cloud allouent dynamiquement les ressources nécessaires au calcul et au stockage du code envoyé (par exemple lorsqu'un événement déclenche l'exécution d’une partie du script d’un programme).
Il est aussi possible de créer des applications intégralement serverless. Dans ce cas, c'est le fournisseur de cloud qui contrôle leur fonctionnement complet en ajustant automatiquement l’allocation des ressources nécessaires. Il s’agit d’autoscaling (mise à l’échelle automatique).
Les deux principales offres serverless sont le FaaS (Function as a Service) et le BaaS (Backend as a Service).
Serverless, FaaS et BaaS
Le FaaS est un service de cloud computing permettant de gérer plus facilement les applications cloud de microservices. Avec ce modèle, les ressources physiques, les logiciels des serveurs Web ou encore les systèmes d'exploitations des machines virtuelles sont tous gérés automatiquement. Le FaaS peut donc être confondu avec le serverless. Il en représente en réalité un sous-ensemble.
L’architecture Serverless concerne l’ensemble des catégories de services. Elle regroupe le stockage, le calcul, les bases de données, les API, etc. Le FaaS, lui, se concentre davantage sur le modèle de l'informatique événementielle. Lors de l'utilisation de ces fonctions en tant que service, la logique côté serveur reste la responsabilité du développeur. Elle s'exécute par contre dans des conteneurs stateless (pour “sans état” c’est à dire ne stockant pas de données ou de références à des transactions passées) et éphémères.
Le BaaS peut aussi être considéré comme un sous-ensemble du serverless.
Ce modèle permet aux développeurs d’externaliser le back-end d’une application web. Ils peuvent ainsi se concentrer sur la logique métier et le front-end. Ce modèle est très employé pour la création d’applications mobiles. On parle de MBaaS (backend mobile en tant que service).
Les fournisseurs de BaaS proposent notamment des logiciels pré-conçus pour gérer les activités ayant lieu sur les serveurs telles que :
les mises à jour et la maintenance ;
les notifications push (dans le cas d'applications mobiles) ;
la gestion des bases de données ;
l'authentification et les permissions utilisateurs ;
les options de chiffrement ;
Dans l’approche BaaS, les fonctions serverless sont le plus souvent appelées au travers d’API et de SDK ou devKit (kit de développement logiciel).
Avantages et inconvénients du serverless
Flexibilité, performance et efficience
Le serverless computing :
permet aux développeurs de se focaliser sur la logique métier et le code, sans se préoccuper de l’infrastructure ;
laisse aux programmeurs une grande visibilité sur les temps systèmes ;
est presque toujours facturé à l'exécution. Le client ne paie donc que les ressources vraiment utilisées ;
est souvent plus rapide (grâce aux capacités du cloud) que les autres formes de conception. Le temps de provisionnement est généralement de quelques millisecondes ;
encourage les approches DevOps. Les développeurs peuvent facilement inclure la partie infrastructure dans leurs missions puisqu'ils n’ont pas à la gérer explicitement ;
présente de hautes disponibilités et reprises après sinistre ;
encourage l’efficience des ressources : les ressources “sans serveur” ne sont jamais inactives puisqu'elles sont uniquement appelées sur demande.
Moins de gestion donc moins de contrôle
Certains des avantages de l’approche serverless peuvent aussi être des sources de problèmes notamment au niveau :
de la sécurité : un serveur cloud qui exécute des fonctions pour de nombreux clients, augmentent le risque de failles et vulnérabilités ;
de la dépendance vis à vis des technologies du fournisseur de cloud : les prestataires peuvent imposer certaines contraintes sur les composants, ce qui limite le niveau de personnalisation des systèmes clients ;
du “verrouillage de fournisseur”, terme bien connu dans le domaine du cloud computing qui signifie que les clients risquent d’avoir des frais en cas de changement de prestataires (par exemple payer une mise à niveau de ses systèmes pour qu'ils soient compatibles avec ceux du nouveau fournisseur) ;
des correctifs : le débogage d’une application serverless peut être plus complexe. Une nouvelle version de l’instance étant créée à chaque exécution, il est difficile de réaliser des analyses approfondies des erreurs et des performances.
Si le serverless comporte de nombreux avantages grâce à son utilisation du cloud computing, il n’est pas forcément une révolution de l’hébergement. Il est tout à fait possible par exemple d'utiliser le FaaS sans serverless.
Pour les professionnels et freelance IT qui ont majoritairement besoin de tâches indépendantes et de courte durée, l'informatique sans serveur peut être un modèle intéressant. En revanche, pour les entreprises qui ont recours à des systèmes ouverts effectuant de multiples analyses approfondies ou des calculs de longue durée, il vaut mieux se tourner vers les types d’hébergement plus traditionnels ou les serveurs sont directement administrables.
Sources et liens utiles :
Présentation de AWS Lambda : https://aws.amazon.com/fr/lambda/
10 risque de sécurité associés à l’informatique sans serveur : https://www.zdnet.com/article/the-top-10-risks-for-apps-on-serverless-architectures/
Article sur l’utilisation du serverless par les entreprises : https://www.bmc.com/blogs/state-of-serverless/
Commentaire
Connectez-vous ou créez votre compte pour réagir à l’article.