Serverless
Serverless est un modèle de développement « natif » qui permet aux développeurs de créer et d’exécuter des applications sans avoir à gérer de serveurs.
Il y a toujours des serveurs, mais ils sont abstraits du développement des applications. Un fournisseur de services cloud se charge des tâches courantes d’approvisionnement, de maintenance et de mise à l’échelle de l’infrastructure des serveurs. Les développeurs peuvent simplement empaqueter leur code dans des conteneurs pour le déployer.
Une fois déployées, les applications sans serveur répondent à la demande et augmentent ou diminuent automatiquement leurs capacités selon les besoins. Les offres serverless des fournisseurs de cloud publics sont généralement mesurées à la demande via un modèle d’exécution basé sur les événements. Par conséquent, lorsqu’une fonction sans serveur est inactive, elle ne coûte rien.
Aperçu de l’architecture serverless
L’architecture serverless diffère des autres modèles de cloud computing dans la mesure où le fournisseur de cloud est responsable de la gestion de l’infrastructure du cloud et de la mise à l’échelle des applications. Les applications serverless sont déployées dans des conteneurs qui se lancent automatiquement à la demande lorsqu’ils sont appelés.
Dans le cadre d’un modèle standard de cloud computing de type « Infrastructure-as-a-Service » (IaaS), les utilisateurs achètent à l’avance des unités de capacité. Ensuite, ils doivent augmenter la capacité du serveur pendant les pics de demande ou la réduire dans le cas contraire. L’infrastructure Cloud nécessaire à l’exécution d’une application est active même lorsque l’application n’est pas utilisée.
Avec l’architecture serverless en revanche, le lancement de l’application ne se fait qu’en cas de besoin. L’allocation des ressources pour l’exécution d’un code se fait de manière dynamique. En plus des avantages en termes de coût et d’efficacité, cela libère les développeurs des tâches routinières associées à la mise à l’échelle des applications.
De même, avec le serverless, les tâches courantes telles que la gestion du système d’exploitation et du système de fichiers, les correctifs de sécurité, l’équilibrage de la charge, la gestion de la capacité, la mise à l’échelle, la journalisation et la surveillance sont toutes confiées à un fournisseur de services cloud.
BaaS et FaaS, deux modèles serverless
Les offres d’informatique serverless se divisent généralement en deux groupes : Backend-as-a-Service (BaaS) et Function-as-a-Service (FaaS).
BaaS donne aux développeurs l’accès à une variété de services et d’applications de tiers. Par exemple, un fournisseur de services cloud peut offrir des services d’authentification, un cryptage supplémentaire, des bases de données accessibles en cloud et des données d’utilisation de haute fidélité. Avec BaaS, les fonctions sans serveur sont généralement appelées via des interfaces de programmation d’applications (API).
Mais plus souvent, lorsque les développeurs font référence au serverless, ils parlent d’un modèle FaaS. Dans le cadre de ce modèle, les développeurs écrivent toujours une logique personnalisée côté serveur et celle-ci est exécutée dans des conteneurs entièrement gérés par un fournisseur de services cloud.
Function as a Service (FaaS) est un moyen d’exécuter des morceaux de code modulaires, écrits dans son langage de prédilection comme Python, Java, C#…. Ce code forme une « fonction » et un ensemble de « fonctions », un micro-service.
La fonction est généralement exécutée :
- en réponse à un événement, tel utilisateur qui clique sur un élément d’une application web ;
- de manière ordonnancée, pour exécuter une tâche ponctuelle (un calcul d’indicateur journalier par exemple) ;
- en lien avec d’autres services, comme le dépôt d’un fichier, en sortie d’une file d’attente etc.