Accueil les sujets Qu'est-ce que le FaaS (Function-as-a-Service) ? Qu’est-ce que le FaaS (Function-as-a-Service) ?
Le FaaS facilite l’exécution et la gestion des applications de microservices par les développeurs.
Abonnez-vous à la newsletter IBM
Fond noir et bleu avec formes géométriques interconnectées
Qu’est-ce que le FaaS ?

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.

 

FaaS vs serverless

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.

Avantages du FaaS

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 :

  • Priorité au code et non à l’infrastructure : Avec le FaaS, vous pouvez diviser le serveur en fonctions qui peuvent être mises à l’échelle automatiquement et indépendamment, ce qui vous évite d’avoir à gérer l’infrastructure. Vous pouvez ainsi vous concentrer sur le code et réduire considérablement les délais de mise sur le marché.

  • Facturation à l’utilisation en temps réel : Avec le FaaS, vous payez uniquement lorsqu’une action se produit. Une fois celle-ci terminée, tout s’arrête : aucun code ne s’exécute, aucun serveur ne fonctionne à vide, aucun coût n’est engagé. Le FaaS est donc une solution rentable, en particulier pour les charges de travail dynamiques ou les tâches planifiées. Son coût total de possession s’avère également plus avantageux pour les tâches volumineuses.

  • Mise à l’échelle automatique : Avec le FaaS, les fonctions sont mises à l’échelle automatiquement, indépendamment et instantanément, selon les besoins. Lorsque la demande diminue, le FaaS réajuste les fonctions automatiquement.

  • Avantages d’une infrastructure cloud robuste : Le FaaS se caractérise par une haute disponibilité inhérente, car il est réparti sur plusieurs zones de disponibilité par région et peut être déployé dans un nombre illimité de régions sans frais supplémentaires.
Principes et bonnes pratiques du FaaS

Voici les bonnes pratiques pour déployer et utiliser le FaaS de façon plus efficace :

  • Faites en sorte que chaque fonction effectue une seule action : Les fonctions FaaS doivent avoir pour objet d’effectuer une seule tâche en réponse à un événement. Il convient donc de limiter le champ d’application de votre code, de le rendre efficace et léger afin que les fonctions se chargent et s’exécutent rapidement.

  • Évitez que les fonctions en appellent d’autres : L’intérêt du FaaS réside dans l’isolation des fonctions. Un trop grand nombre de fonctions augmentera vos frais et réduira cet intérêt.

  • Utilisez le moins de bibliothèques possible dans vos fonctions : L’utilisation d’un trop grand nombre de bibliothèques peut ralentir les fonctions et rendre leur mise à l’échelle plus difficile.
Cas d’utilisation du FaaS

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).

FaaS vs. PaaS, conteneurs et machines virtuelles

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 :

  • Temps de mise à disposition : Quelques millisecondes, contre plusieurs minutes ou heures pour les autres modèles.

  • Administration continue : Aucune, contre une difficulté graduelle pour le PaaS, les conteneurs et les machines virtuelles, respectivement.

  • Mise à l’échelle élastique : Chaque action est toujours instantanément et intrinsèquement mise à l’échelle, par rapport aux autres modèles dont la mise à l’échelle automatique est lente et nécessite un réglage minutieux.

  • Planification de la capacité : Aucune, alors que les autres modèles requièrent un mélange de mise à l’échelle automatique et de planification de la capacité.

  • Connexions et états permanents : La capacité de persistance des connexions et de l’état est limitée et doit être conservée dans un service/ressource externe. Les autres modèles peuvent exploiter le protocole HTTP, maintenir un socket ou une connexion ouverte pendant de longues périodes et stocker l’état en mémoire entre les appels.

  • Maintenance : Toute la maintenance est gérée par le fournisseur FaaS. Il en va de même pour le PaaS ; les conteneurs et les machines virtuelles nécessitent une maintenance importante, notamment la mise à jour et la gestion des systèmes d’exploitation, des images de conteneurs, des connexions, etc.

  • Haute disponibilité et reprise après incident : Là encore, la haute disponibilité est inhérente au modèle FaaS, sans effort ni coût supplémentaire, contrairement aux autres modèles. Dans le cas des machines virtuelles et des conteneurs, l’infrastructure peut être redémarrée automatiquement.

  • Utilisation des ressources : Les ressources ne fonctionnent jamais à vide : elles sont invoquées uniquement sur demande. Tous les autres modèles présentent au moins un certain degré de fonctionnement à vide.

  • Limites des ressources : Le FaaS est le seul modèle qui impose des limites de ressources sur la taille du code, les activations simultanées, la mémoire, la durée d’exécution, etc.

  • Granularité de tarification et facturation : Par blocs de 100 millisecondes, et non à l’heure (et parfois à la minute) comme pour les autres modèles.
Kubernetes/Knative et FaaS

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 :

Solutions connexes
IBM Cloud Code Engine

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. 

Découvrir IBM Cloud Code Engine
IBM Cloud Functions

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.

Découvrir IBM Cloud Functions
Ressources Qu’est-ce que l’approche « sans serveur » ?

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.

Que sont les conteneurs ?

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.

Qu’est-ce que le PaaS ?

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.

Passez à l’étape suivante

IBM Cloud Code Engine est une plateforme sans serveur entièrement gérée qui vous permet de vous concentrer sur l’écriture de code plutôt que sur la gestion de l’infrastructure. Apportez vos images de conteneurs, vos tâches par lots ou votre code source et laissez IBM Cloud Code Engine gérer et sécuriser l’infrastructure sous-jacente pour vous. Vous n’avez pas besoin de dimensionner, déployer ou mettre vous-même à l’échelle les clusters de conteneurs. Vous n’avez pas non plus besoin de compétences réseau.

Découvrir IBM Cloud Code Engine