Cloud

Les différents visages du Serverless Computing

Par Laurent Delattre, publié le 02 août 2018

Le Serverless Computing est un terme en vogue qui regroupe différentes approches. En voici ses différents visages…

Contrairement à ce que son nom laisse entendre, le terme « Serverless Computing » ne désigne pas une informatique qui n’aurait plus besoin de serveurs pour s’exécuter mais davantage une approche IT dans laquelle la partie matérielle est totalement abstraite : les développeurs peuvent déployer leurs logiciels dans le cloud sans se préoccuper de notions de serveurs et autres ressources mémoire ou stockage nécessaires.

Cette nouvelle tendance est souvent présentée comme l’aboutissement ultime des concepts PaaS (Plateform as a Service, dans laquelle le cloud fournit la plomberie matérielle et logicielle nécessaire à l’exécution d’une application mais sans masquer les problématiques de mise à l’échelle) et DevOps (avec une partie Ops ici réduite à la portion congrue de supervision de l’exécution et de gestion de la sécurité, les problématiques de déploiement disparaissant). Plus concrètement, le « Serverless Computing » consiste à exécuter des applications sans avoir à se soucier, ni même simplement connaître, l’infrastructure sous-jacente, le service se chargeant à la fois du déploiement, de la montée en charge, de la résilience, des mises à jour et de la sécurité.

Reste que le terme revêt désormais plusieurs réalités, plusieurs visages, qu’il est utile de connaître et différencier.

Backend as a Service (BaaS/MBaaS)
C’est historiquement la forme « serverless » la plus ancienne et la moins élaborée. Les développeurs n’ont à coder et gérer que le frontend de l’application. Tout le reste (base de données, notifications, authentifications, etc.) est géré par la plateforme Cloud via des APIs. Ces services sont nés des besoins de développement à la fois pour le Web et les Mobiles. L’effort de développement se limite à l’interface utilisateur. La plupart de ces solutions sont désormais plutôt désignées comme des outils de développement rapide pour mobiles ou des outils « low code » à l’instar de Google Firebase, Mendix, OutSystems, Kony, Backendless, Microsoft PowerApps, ou encore ZettaPush (qui oriente sa solution vers l’IoT).

Serverless Containers as a Service
Les conteneurs sont en vogue. Leur haut degré de portabilité et leur alignement avec les philosophies DevOps et micro-services parlent en leur faveur. Un des moyens de les déployer relativement simplement est de disposer d’un cluster Kubernetes pré-configuré dans le cloud (notamment via des services comme AWS EKS, Azure AKS ou Google GCP Kubernetes Engine). Mais il existe aussi des solutions plus « serverless » encore dans lesquelles il suffit simplement de « déposer » un conteneur dans le cloud sans avoir à gérer le moins du monde les machines virtuelles qui les exécutent. C’est typiquement le cas d’Azure Container Instances (ACI) qui vous permet de créer des conteneurs Linux ou Windows et de les déployer en un seul clic dans Azure. Notez qu’il est aussi possible d’utiliser Kubernetes pour déployer et gérer les conteneurs sur l’infrastructure serverless ACI. Amazon propose un service similaire avec AWS Fargate. « Hyper.sh » est une autre plateforme serverless de conteneurs réputée.

Function as a Service (FaaS)
C’est sans doute la forme la plus avancée de « serverless » et celle qui a le plus contribué à populariser le terme. Ici, les développeurs se contentent uniquement d’écrire le code des différentes fonctionnalités sans toute la plomberie annexe qui forme une application complète. Le développeur perd l’essentiel de la notion de déploiement et la totalité de la vision de l’infrastructure sous-jacente. Il se focalise uniquement sur les fonctions qu’il a à coder. Inauguré par Amazon avec AWS Lambda, le concept FaaS est aujourd’hui proposé par chacun des grands cloud : Google Cloud Functions, IBM OpenWhisk, Microsoft Azure Functions, Oracle Fn Project, etc. On notera au passage que le moteur d’Azure Functions est open source et qu’il est aussi intégré dans Azure Stack, la version « cloud privé » d’Azure pour obtenir du « serverless » sur sa propre infrastructure. D’autres solutions permettent d’implémenter du FaaS « On Premises » à l’instar de Backand, Kubeless, Nuclio, OpenFaaS et Pivotal Function Service (Project Riff).

Serverless Database as a Service
Le cloud a favorisé la création de bases de données distribuées. L’étape suivante et logique est la base de données « serverless » dans laquelle l’entreprise (ou le développeur) peut exécuter sa base de données dans le cloud sans se soucier d’instances ou de clusters. La base démarre, stoppe, s’optimise, augmente et réduit sa capacité de façon totalement automatisée. Azure Data Lake et Amazon Aurora sont deux exemples typiques de telles bases serverless mais il en existe d’autres à l’instar de FaunaDB, Azure Cosmos DB ou Google Cloud Store.        

Quelle que soit l’approche choisie, le concept « serverless » séduit de plus en plus d’entreprises. Dans son étude « Etat du cloud 2018 », RightScale note que le « Serverless » est le service cloud qui a connu la plus forte croissance entre 2017 et 2018 : +75% en un an. Forrester estime quant à lui que le marché du FaaS dépassera les 7,7 milliards de dollars en 2021.

A suivre : Avantages et limites des approches « Serverless » (le Vendredi 10 août 2018)

Dans l'actualité

Verified by MonsterInsights