Le Cloud fait apparaître tous les mois de nouveaux services, un des nouveaux buzzword: le #Serverless. Est-il la prochaine rupture ou révolution qui va nous conduire vers un monde dit « No-Ops » ? Hugues, notre expert cloud nous dit tout.
La situation
Jusqu’à aujourd’hui, un service Web se déployait de façon classique avec des architectures dites N Tier: des serveurs (front end-back end), des services et du code exécuté ou interprété par ces services sur ces serveurs.
Ce fonctionnement s’applique à tout type d’hébergement, qu’il s’agisse de machines physiques ou virtuelles et même dans une logique de container Docker.
Mais dans tous les cas, ces services font partie de l’infrastructure du site, et tous les serveurs correspondants doivent donc être maintenus par des équipes d’infrastructure, au même titre que le serveur web du site en lui-même.
C’est là, la limite du modèle : il se repose sur la présence de serveurs. Même si leur création est automatisée, ce sont des briques élémentaires qu’il faut installer, surveiller, maintenir, faire évoluer… Si même pour les accros de docker, vous qui imaginez que vos conteneurs sont exempts d’administration : sans suivi des composants qui composent ce containeur, ce sont des zombies en puissance qui peupleront vos architectures si vous n’y prenez pas gare.
Serverless : Le monde du code
Les sociétés piliers du Cloud public, Amazon et ensuite Azure (depuis le printemps 2016), ont ouvert une brèche dans cet édifice. En 2014, lors de la grand-messe Re:Invent, Amazon annonce la disponibilité de « Lambda », un service d’exécution de code à la demande. À son lancement, peu sont ceux qui envisagent encore l’incroyable puissance d’un tel service ; en effet, comme souvent chez AWS, le produit vise leur CLIENT Netflix.
Ce dernier avait besoin de redimensionner un nombre important d’images de bonne qualité pour en faire des vignettes or, la location d’instances (machines virtuelles) pour réaliser ces tâches, représentait une dépense non négligeable, fussent-elles des instances “spot”. L’utilisation de serveurs prend également du temps, ne serait-ce que pour créer et démarrer une machine.
Pour pallier cela, Amazon a proposé à Netflix d’utiliser le service Lambda pour réaliser les redimensionnements.
Alors, comment marche le service Lambda (AWS) ou Functions (Azure) ?
Il fonctionne avec deux éléments distincts :
- Lambda (ou Functions) : c’est un morceau de code (Javascript/node, Java ou Python). Elle est déclarée, avec un nom unique, par un administrateur du site sur l’interface du service Lambda. Reprenons notre exemple : Netflix a déclaré une fonction, que nous appellerons « redimensionnement », contenant du code permettant de transformer une image en vignette.
- Les événements : un événement se déclenche lors du changement de l’état d’une donnée. Par exemple, sur son espace de stockage Amazon S3, toute modification d’un objet peut déclencher un événement ; c’est ce qui a été utilisé par Netflix, comme on va le voir. Ce sont des éléments qui ne peuvent être mis en place que par AWS, qui l’implémente progressivement sur leurs différents produits.
Pour pouvoir fonctionner en « serverless », reste à lier les deux éléments ! Pour cela, il suffit d’associer un événement à une fonction Lambda ou Fonction (Azure) : à chaque fois que cet événement surviendra, le code de la fonction s’exécutera. Ainsi, Netflix a utilisé de l’espace de stockage S3 et lié l’événement à leur fonction « redimensionnement ».
A chaque image ajoutée sur l’espace, l’événement se déclenche (changement d’état), la fonction est appelée et le code s’exécute.
Une des forces du modèle en particulier d’un point de vue économique est que l’on paye à l’événement !
C’est la toute la force du produit : déclencher cette exécution de code selon le besoin. Bien sûr, ce service et son code sont hébergés sur des serveurs, des instances, des conteneurs, etc… mais c’est au fournisseur (dans ce cas, Amazon) de maintenir ces équipements en marche pour que le service soit toujours disponible et prêt à être utilisé.
Et l’avenir : un véritable « No-Ops »
Les bases sont posées pour se passer totalement de l’administration d’un environnement, serveur ou conteneur. Vous l’aurez compris, l’élément clé de cette nouvelle forme de service, c’est l’événement.
Même si le « serverless » a tendance à faire le buzz, nous ne sommes encore qu’au commencement. La démocratisation de cette pratique soulève pourtant des interrogations, en particulier sur la survie de certains métiers de l’IT.
Dans un monde sans serveur, qu’advient-il de l’écosystème des data-centers ? Les constructeurs de matériaux voient-ils leurs commandes diminuer et leurs clients se limiter à quelques fournisseurs de services ? Le conseil devient-il le fer de lance de l’industrie IT ? En tous cas, les développeurs indépendants devraient être plus sollicités que jamais : en l’absence de sites « monolithiques » ils pourraient se substituer aux agences de développement pour maintenir, ponctuellement et au cas par cas, ces fonctions « décorrélées » les unes des autres.
Et enfin l’exploitation des infrastructures va tendre à disparaître au profit de cette nouvelle de notion dites « No-OPS »