Function as a service (FaaS)
Qu'est-ce que la fonction en tant que service (FaaS) ?
La fonction en tant que service (FaaS) est un modèle de cloud computing qui permet aux clients du cloud de développer des applications et de déployer des fonctionnalités et de n'être facturés que lorsque la fonctionnalité s'exécute. FaaS est souvent utilisé pour déployer des microservices et peut également être appelé informatique sans serveur.
L'utilisation traditionnelle de l'informatique en cloud exige des utilisateurs qu'ils utilisent une infrastructure de ce type - y compris des serveurs virtuels, du stockage et des services - qui héberge le code de l'application. Ce code fonctionne en permanence et génère des coûts récurrents réguliers.
En comparaison, le FaaS permet aux développeurs d'exécuter une fonction, un élément de logique ou une partie ou la totalité d'une application et de n'être facturés que lorsque le code s'exécute. Le code est écrit du côté du développeur et déclenche des serveurs distants pour exécuter l'action prévue. Contrairement à d'autres modèles cloud qui fonctionnent sur au moins un serveur à tout moment, le FaaS ne fonctionne que lorsqu'une fonction est exécutée et s'arrête ensuite.
Le premier modèle FaaS a été lancé en 2014 par hook.io, une plateforme open source qui héberge des webhooks et des microservices. Des offres d'Amazon Web Services (AWS), de Google, d'IBM, de Microsoft et d'Oracle ont suivi.
Cas d'utilisation du FaaS
FaaS offre un moyen pratique et puissant de créer des applications cloud qui s'appuient sur des comportements déclenchés ou pilotés par des événements. Cette approche permet aux développeurs de logiciels de créer des fonctions discrètes qui peuvent être appelées à la demande selon les besoins et que d'autres applications peuvent réutiliser. Essentiellement, FaaS permet des conceptions logicielles plus modulaires.
FaaS fonctionne dans n'importe quel projet de logiciel en mode SaaS. Il a déjà été adopté dans plusieurs domaines de développement d'applications et de DevOps, notamment les suivants :
- répondre à tout événement discret déclenché par un logiciel ou un événement réel ;
- fournir des interfaces de programmation d'applications (API) pour les applications web et mobiles où les développeurs intègrent le FaaS dans les applications ;
- entreprendre des tâches multimédias et de traitement des données, telles que la vérification des données saisies ou la normalisation d'un ensemble de données ; et
- permettant aux dispositifs de l'internet des objets de ne communiquer que lorsque des données sont disponibles ou qu'un événement réel est déclenché.
Avantages du FaaS
Le FaaS est un développement récent dans les portefeuilles de services de la plupart des fournisseurs de services cloud. Cependant, les fournisseurs ont rapidement adopté cette technologie pour sa flexibilité et sa prise en charge des architectures logicielles basées sur les microservices.
Le FaaS offre les avantages suivants :
- Économies. Le FaaS peut être rentable car les développeurs consacrent plus de temps à l'écriture du code spécifique à l'application et moins de temps à la logistique nécessaire à la gestion des serveurs. Par conséquent, moins de temps et d'argent sont consacrés à la gestion de l'infrastructure.
- Efficacité. Le temps de développement et de déploiement est réduit car davantage de charges de travail sont exécutées et les coûts sont réduits.
- Évolutivité. Les applications peuvent être mises à l'échelle de manière indépendante plutôt que d'être intégrées dans une plate-forme plus vaste.
- Modèle de paiement à l'utilisation. Les clients sont facturés sur la base de la quantité de fonctionnalités exécutées, ce qui signifie que l'argent n'est jamais dépensé pour des ressources inactives.
- Riche en fonctionnalités. Des fonctionnalités telles que le support, la disponibilité et la tolérance aux pannes sont incluses de manière inhérente.
Inconvénients du FaaS
FaaS présente plusieurs inconvénients qu'il convient de prendre en compte avant d'inclure la fonctionnalité dans les projets de développement de logiciels. Voici quelques-uns des inconvénients potentiels :
- Transparence. Il y a moins de transparence dans l'infrastructure dorsale, gérée en externe.
- Sécurité. Les utilisateurs doivent faire confiance à l'infrastructure et à la sécurité du fournisseur de services cloud.
- Les coûts. Les coûts peuvent être difficiles à prévoir et à intégrer dans les budgets avec le modèle de paiement à l'utilisation.
- Tests. Les tests de logiciels, tels que les tests d'intégration et de performance, peuvent s'avérer difficiles.
- Verrouillage des fournisseurs. Les caractéristiques et les fonctionnalités du FaaS ne sont pas universelles parmi les fournisseurs de cloud. Une fois qu'un client utilise les fonctions d'un fournisseur de services cloud, il peut être difficile de passer à un autre fournisseur sans procéder à des mises à jour logicielles et à des tests minutieux.
- Problèmes d'intégration. Le FaaS étant relativement nouveau, les solutions aux problèmes - tels que le suivi des fonctions et le débogage à distance - n'ont pas encore été développées. Cela rend difficile l'intégration dans les pipelines existants d'intégration continue et de livraison continue.
Applications FaaS ou microservices
La conception moderne de logiciels comprend diverses approches fonctionnelles ou architecturales qui intègrent FaaS et microservices. Cependant, ces technologies sont différentes et servent des cas d'utilisation différents.
- FaaS. La fonction en tant que service est une forme d'informatique sans serveur dans laquelle le fournisseur de cloud facilite le chargement et l'exécution du code d'un utilisateur lorsqu'il est déclenché par des événements logiciels ou matériels. Cependant, le code ne sert qu'un objectif limité, et ces fonctions sont appelées par et exécutées sur l'infrastructure gérée d'un fournisseur FaaS.
- Microservices. Il s'agit d'une forme de conception logicielle dans laquelle les caractéristiques et les capacités du logiciel sont divisées en modules fonctionnels déployés indépendamment, soit localement, soit dans un cloud. Chaque module interagit par l'intermédiaire d'API. Les utilisateurs gèrent généralement l'infrastructure locale ou en cloud utilisée pour les composants des microservices.
L'élément commun à ces deux technologies est l'utilisation de conteneurs virtuels. Les composants des microservices sont généralement déployés dans des conteneurs. De même, le code qui s'exécute lorsqu'une tâche FaaS est déclenchée est chargé et exécuté dans un conteneur.
Les microservices et le FaaS ne s'excluent pas mutuellement ; ils peuvent être utilisés ensemble dans le même produit logiciel. Par exemple, un logiciel peut être conçu pour le cloud computing à l'aide de microservices et utiliser les déclencheurs de l'exécution du code des microservices - ou une réponse à des événements - pour déclencher des tâches FaaS.
FaaS vs. informatique sans serveur
Les termes FaaS et informatique sans serveur sont souvent utilisés de manière interchangeable. Bien que cela ne soit pas techniquement correct, les deux concepts partagent le même objectif sous-jacent : éliminer la nécessité pour les utilisateurs de configurer et de gérer l'infrastructure.
Informatique sans serveur
Une application traditionnelle exige que le service informatique fournisse et gère l'infrastructure sous-jacente - y compris les serveurs, le stockage et les réseaux - où le code de l'application est déployé. Au sens large, l'informatique sans serveur est l'élimination de cette charge d'infrastructure.
Par exemple, lorsqu'un fournisseur de cloud public crée un service de base de données et le met à la disposition des utilisateurs, ces derniers n'ont plus à se préoccuper de la construction et de la gestion de l'infrastructure sous-jacente pour exploiter cette ressource. Le fournisseur de cloud public fournit et gère l'infrastructure, et l'utilisateur invoque simplement le service en fonction de ses besoins dans le flux de travail.
FaaS
FaaS est une extension du concept de base où le fournisseur de cloud gère l'ensemble du provisionnement et de la gestion de l'infrastructure nécessaire pour invoquer et exécuter le code de l'utilisateur. Cette approche peut être qualifiée de "sans serveur", car les utilisateurs n'ont pas à se préoccuper de l'infrastructure sous-jacente.
Cependant, là où les fonctions sans serveur peuvent potentiellement s'exécuter en continu, le FaaS -- et toute l'informatique événementielle -- est généralement destiné à charger et à exécuter des tâches d'exécution de fonctions éphémères, ou de courte durée. Si ces tâches ne sont pas en cours d'exécution à ce moment-là, toute l'infrastructure correspondante est libérée. Ainsi, FaaS est typiquement une expression de l'idée plus large d'architecture sans serveur.
Pour en savoir plus sur les cloud publics, lisez les articles suivants :
8 caractéristiques clés de l'informatique cloud
Cloud public, privé ou hybride : Définition des principales différences
Choisir la bonne méthode de migration de l'informatique sur site vers l'informatique cloud
Décomposer le coût de l'informatique dématérialisée
Les 10 meilleures carrières dans l'informatique dématérialisée en 2023 et comment s'y lancer
Les 23 meilleures compétences en matière d'informatique dématérialisée pour donner un coup de pouce à votre carrière
Comparaison entre FaaS, PaaS et IaaS
L'examen du FaaS par rapport à d'autres types de services permet de replacer les fonctions dans leur contexte. Le FaaS est généralement comparé à la plateforme en tant que service (PaaS) et à l'infrastructure en tant que service (IaaS).
L'IaaS est la représentation traditionnelle des services d'informatique cloud. Les ressources informatiques telles que les serveurs, le stockage et les réseaux sont virtualisées et mises à la disposition des utilisateurs. Les utilisateurs s'appuient sur des outils de gestion logiciels pour sélectionner, configurer et assembler ces ressources en une infrastructure cohésive capable d'héberger une application pour l'entreprise.
Le PaaS est un niveau d'abstraction plus élevé dans lequel le fournisseur de services cloud rassemble et gère l'infrastructure sous-jacente pour héberger et fournir des services de plateforme prédéfinis aux utilisateurs. Ces plateformes comprennent souvent des outils de productivité - comme Office 365 - et des chaînes d'outils de développement de logiciels. Toutefois, elles sont conçues pour fonctionner en continu et restent à la disposition des utilisateurs 24 heures sur 24, 7 jours sur 7, tout au long de l'année.
Par comparaison, une fonction FaaS est un service dans le portefeuille multiservice d'un fournisseur de cloud. Les fonctions offrent un environnement sans serveur dans lequel les utilisateurs n'ont pas besoin de définir et de configurer l'infrastructure sous-jacente pour exécuter le code. C'est le fournisseur de services cloud qui s'en charge. Cela permet aux utilisateurs de charger du code, de définir des déclencheurs et d'exécuter des fonctions lorsque cela est nécessaire. Une fois le code de la fonction terminé, l'infrastructure sous-jacente est libérée et mise à disposition pour être réutilisée. Tout cela se passe en coulisses, à l'insu des utilisateurs.
Ces exemples ne s'excluent pas mutuellement. Les utilisateurs peuvent utiliser IaaS, PaaS et FaaS dans n'importe quelle combinaison pour faciliter les applications professionnelles qu'ils souhaitent.
Meilleures pratiques pour l'utilisation de FaaS
Bien qu'il y ait peu de limites formelles à l'utilisation de FaaS, il existe des bonnes pratiques qui aident les développeurs à tirer le meilleur parti des fonctions de FaaS. Il s'agit notamment des pratiques suivantes :
- Utiliser un événement pour déclencher et exécuter une seule tâche.
- Ne pas imbriquer les fonctions ; une tâche ne doit pas en déclencher une autre.
- Les fonctions doivent être restreintes, limitées et de courte durée.
- Les fonctions doivent rester sans état ; si une fonction a besoin de données, laissez-la accéder à des données provenant d'une source telle que le stockage à chaque appel.
- Minimiser les dépendances : une fonction ne doit pas dépendre d'un grand nombre de facteurs extérieurs, voire d'aucun.
- Utiliser la sécurité telle que les autorisations et les fonctions de gestion de l'identité et de l'accès lors de l'invocation de fonctions.
- Faire en sorte que les fonctions soient génériques et réutilisables dans la mesure du possible.
Offres de services fonctionnels
Tous les principaux fournisseurs de clouds publics proposent au moins une version des services d'informatique événementielle. Voici quelques-unes de ces offres :
- Alibaba Cloud Function Compute
- AWS Lambda
- Google Cloud Functions
- IBM Cloud Functions basé sur Apache OpenWhisk
- Microsoft Azure Functions
- Oracle Cloud Functions
Lorsqu'ils envisagent les options FaaS, il est important que les développeurs prennent en compte les restrictions et les limites des services. Parmi les facteurs à prendre en compte figurent la quantité de code à exécuter, le nombre d'appels par seconde que le cloud peut gérer et les coûts par appel.
Examinez de plus près AWS Lambda par rapport à Azure Functions et Google Cloud dans ce comparatif des services sans serveur.