Le FaaS, ou « Function-as-a-Service », est un service de cloud computing qui permet aux clients d’exécuter du code en réponse à des événements, sans avoir à gérer l’infrastructure complexe généralement associée au développement et au lancement d’applications de microservices.
L’hébergement d’une application logicielle sur Internet nécessite généralement la mise en place et la gestion d’un serveur virtuel ou physique, en plus d’un système d’exploitation et de processus d’hébergement du serveur Web. Dans le cas du FaaS en revanche, le fournisseur de services cloud se charge automatiquement de la gestion du matériel physique, du système d’exploitation de la machine virtuelle et du logiciel du serveur Web. Les développeurs peuvent ainsi se concentrer uniquement sur les fonctions au sein du code de leurs applications.
On confond souvent le serverless (ou « approche sans serveur ») et le FaaS, or le second est en réalité dérivé du premier.
Le serverless se concentre sur toute catégorie de service, qu’il s’agisse de calcul, de stockage, de base de données, de messagerie, de passerelle API, etc., où la configuration, la gestion et la facturation des serveurs sont invisibles pour l’utilisateur final.
Le FaaS, en revanche, bien qu’il s’agisse sans doute de la technologie que l’on retrouve le plus souvent au cœur des architectures sans serveur, est orienté événements, c’est-à-dire que le code des applications, ou les conteneurs, sont exécutés uniquement en réponse à des événements ou à des requêtes.
Le FaaS est un outil intéressant si vous cherchez à migrer des applications vers le cloud de manière efficace et rentable. En voici quelques avantages :
Voici les bonnes pratiques pour déployer et utiliser le FaaS de façon plus efficace :
Parce qu’il permet d’isoler les transactions et de les mettre à l’échelle facilement, le FaaS est particulièrement adapté pour les charges de travail volumineuses et excessivement parallèles. Il peut également être utilisé pour créer des systèmes backend ou pour des activités telles que le traitement des données, la conversion de format, l’encodage ou l’agrégation de données.
Le FaaS est également intéressant pour les applications Web, les backends, le traitement des données/flux, ou pour créer des chatbots en ligne ou des backends d’appareils IoT. Il facilite par ailleurs la gestion et l’utilisation de services tiers. Si vous envisagez de développer une application Android, par exemple, vous pouvez adopter une approche FaaS afin d’en maîtriser les coûts. Étant donné que seul le moment où votre application se connecte au cloud pour une fonction spécifique telle que le traitement par lots vous est facturé, les frais encourus seront nettement inférieurs par rapport à une approche traditionnelle.
Le FaaS contribue en outre à améliorer considérablement les performances informatiques. Par exemple, deux étudiants ont récemment étudié avec des ingénieurs d’IBM comment exploiter les IBM Cloud Functions pour les simulations Monte Carlo (méthodes mathématiques utilisées pour estimer les futurs résultats de certains événements difficiles à prévoir) afin d’estimer le cours des actions. Ces simulations sont considérées comme des tâches de calcul intensif. En utilisant IBM Cloud Functions, l’équipe a pu exécuter des calculs à très grande échelle et se concentrer sur la logique applicative. Le FaaS lui a permis de réaliser une simulation Monte Carlo complète en 90 secondes environ avec 1 000 invocations simultanées. À titre de comparaison, l’exécution du même flux sur un ordinateur portable doté de quatre cœurs d’UC a nécessité 247 minutes et l’utilisation presque totale de l’UC.
Pour voir d’autres exemples d’utilisation du FaaS, consultez l’article « Recap of the Key Advantages Offered by IBM Cloud Functions » (Récapitulatif des principaux avantages offerts par IBM Cloud Functions).
Le FaaS, le PaaS (Platform-as-a-Service), les conteneurs et les machines virtuelles jouent tous un rôle essentiel dans l’écosystème serverless. Le FaaS étant l’élément le plus central et le plus caractéristique de la pile sans serveur, penchons-nous sur ce qui le distingue des autres modèles de calcul courants du marché actuel :
La combinaison de Kubernetes et Knative est l’une des possibilités offertes par le FaaS. Kubernetes est un outil d’orchestration de conteneurs open source qui est essentiel à la gestion des applications cloud. Knative pour sa part permet d’exécuter des applications sans serveur au sein d’un cluster Kubernetes.
L’association de Knative et de Kubernetes signifie que vous pouvez tirer parti des fonctions de Kubernetes telles que la surveillance, la sécurité, la journalisation et l’authentification, puis de les combiner avec les avantages de Knative tels que la mise en place automatique de conteneurs, la portabilité totale et le traitement au sein d’environnements hybrides.
Les créateurs de cette technologie estiment que les développeurs ne devraient pas avoir à choisir entre le serverless et les conteneurs lorsqu’ils créent des applications cloud. L’objectif est d’améliorer la disponibilité et la cohérence des conteneurs grâce à la mise à l’échelle puissante et à l’accès à la demande du serverless.
Regardez cette vidéo pour en savoir plus sur Knative :
Ce produit permet d’exécuter des images de conteneurs, des tâches par lots ou du code source en tant que charges de travail sans serveur, le tout, sans dimensionnement, déploiement, mise en réseau ou mise à l’échelle.
Une plateforme de programmation FaaS qui vous permet de développer du code léger qui s’exécute à la demande de manière parfaitement évolutive.
L’approche sans serveur (ou « serverless ») est un modèle de développement et d’exécution d’applications cloud qui permet aux développeurs de générer et d’exécuter du code sans mettre en place ni gérer de serveurs ou d’infrastructure backend.
Les conteneurs sont des unités logicielles exécutables qui empaquettent le code de l’application, ainsi que ses bibliothèques et dépendances, et peuvent être exécutées partout : sur un ordinateur de bureau, sur une infrastructure informatique traditionnelle ou dans le cloud.
Le PaaS (ou « Platform-as-a-Service ») désigne les services qui permettent de développer, d’exécuter et de gérer des applications au moyen d’une plateforme cloud complète, flexible et rentable.