Vous avez probablement entendu parler du SaaS, et vous avez peut-être entendu parler du PaaS et du IaaS, mais avez-vous entendu parler de Function as a Service (FaaS) ?

Le marché du FaaS connaît une croissance rapide. Selon Allied Market Research, le marché valait 3,01 milliards de dollars en 2018. Ce chiffre devrait passer à 24 milliards de dollars d’ici 2026 – ce qui signifie que le secteur connaîtra un taux de croissance annuel composé (TCAC) de 29,7 % de 2020 à 2026.

Au vu de cette croissance, on peut dire sans se tromper que le FaaS est une affaire assez importante.

Mais qu’est-ce que le FaaS, et comment fonctionne-t-il ? Pour vous aider à répondre à ces questions, cet article couvre les bases du FaaS, les raisons pour lesquelles les gens devraient (et ne devraient pas) utiliser le FaaS, ainsi que l’état du marché mondial du FaaS en 2022.

Allons-y.

Qu’est-ce que Function as a Service (FaaS) ?

Function as a Service (FaaS) est une forme de cloud computing qui aide les développeurs à mieux travailler en leur évitant d’avoir à maintenir une infrastructure d’application. Lorsque les développeurs tirent parti de FaaS, ils utilisent une plateforme FaaS pour construire, exécuter et superviser les paquets d’applications pour eux.

À ce stade, vous pouvez penser que FaaS ressemble à l’informatique sans serveur (ou serverless) – et c’est le cas. L’informatique sans serveur permet aux développeurs de confier la gestion des bases de données, des passerelles API, du stockage, de la messagerie et d’autres infrastructures à un fournisseur tiers. FaaS est un type d’informatique sans serveur.

Comment fonctionne l'informatique sans serveur
Comment fonctionne l’informatique sans serveur (Source : iviewlabs)

Bien que ce soit peut-être la première fois que vous lisez sur FaaS, vous l’avez probablement déjà rencontré dans la nature. De nombreux programmes et applications populaires utilisent FaaS – comme Alexa d’Amazon.

Si vous êtes familier avec Alexa, vous savez que vous pouvez étendre les fonctions d’Alexa en créant des « compétences » Comme les applications, les compétences permettent à Alexa de faire des choses en dehors de sa configuration de base. Des choses comme la vérification des notifications dans votre application, le démarrage d’une nouvelle conversation ou la lecture d’un son personnalisé.

Amazon exécute toutes les compétences d’Alexa via AWS Lambda. Lorsque vous construisez une nouvelle compétence, vous la créez en tant que fonction que vous déployez via AWS Lambda. AWS Lambda exécute ensuite la fonction pour vous et gère les problèmes d’infrastructure tels que la sécurité et la gestion des bases de données.

Alors, comment fonctionne FaaS, étape par étape ? C’est ce que nous allons voir maintenant.

Comment fonctionne le FaaS ?

Pour comprendre le FaaS, vous devez connaître deux termes clés :

  1. « Architecture monolithique » = une application autonome qui fonctionne indépendamment des autres applications. Ces applications gèrent l’interface utilisateur, les fonctions commerciales et l’interface de données en interne. Le code de l’architecture monolithique repose sur d’autres morceaux de code.
  2. « Architecture micro-services » = un morceau de code qui gère quelques petites tâches. Ces micro-services sont séparés (bien qu’ils constituent ensemble une application entière).

Voici un diagramme qui montre comment l’architecture monolithique et l’architecture micro-services diffèrent :

Architecture monolithique vs. architecture micro-services
Architecture monolithique vs. architecture micro-services (Source : BMC)

Vous pouvez voir la principale différence de pratique entre les architectures micro-services et monolithiques lorsque vous exécutez ou mettez à jour une fonction. Avec une architecture monolithique, l’ensemble du programme exécute la fonction en une seule fois (comme la mise à jour d’une application, par exemple). Avec une architecture micro-service, vous pouvez exécuter la fonction du micro-service indépendamment.

FaaS est la chose qui aide les architectures micro-services à fonctionner.

Lorsque vous exécutez chaque nouvelle fonction de micro-service, il vous suffit de créer la fonction. Ensuite, votre fournisseur FaaS prend la fonction, l’exécute et s’occupe de la gestion de la fonction à partir de ce moment-là.

FaaS étant un outil qui fonctionne avec votre contribution, il est crucial de noter que chaque fonction FaaS ne doit être responsable que d’une seule tâche. Cette tâche s’exécute ensuite lorsque son déclencheur est activé. Par exemple, une fonction qui produit une copie du reçu de l’utilisateur ne fonctionnera que si l’utilisateur clique sur « télécharger un reçu »

FaaS utilise le « modèle d’exécution piloté par les événements », ce qui signifie que vos fonctions ne s’activent que lorsqu’elles sont déclenchées. De même, elles ne s’exécutent pas en arrière-plan.

Alors, que peut faire d’autre FaaS ?

Quels sont les services inclus dans FaaS ?

Bien que tous les fournisseurs soient différents, les fournisseurs de FaaS proposent généralement les services suivants :

  • Services d’authentification. Ils gèrent les processus de connexion et d’authentification des utilisateurs de votre programme.
  • Services de base de données. Ils vous aident à classer les informations dans des bases de données afin que votre programme puisse les utiliser. Les fournisseurs FaaS gèrent une partie de la maintenance des bases de données pour vous.
  • Stockage de fichiers. Les fournisseurs FaaS peuvent stocker des données et des fichiers pour votre application, de sorte que vous n’avez pas besoin de les héberger sur votre propre serveur.
  • Rapports. Les fournisseurs FaaS peuvent surveiller les erreurs ou les menaces de sécurité dans votre programme et vous alerter lorsqu’ils trouvent quelque chose d’anormal.

Globalement, ces services aident les développeurs à travailler plus intelligemment. Voyons maintenant les avantages de FaaS.

Les avantages d’un modèle FaaS

Avec FaaS, les développeurs n’ont pas à se soucier de l’infrastructure ou du déploiement, mais uniquement de l’écriture de la logique applicative. Ainsi, lorsqu’il est mis en œuvre actuellement, le FaaS peut réduire considérablement le temps nécessaire à la création et au déploiement d’un programme.

La construction et le déploiement sont également plus faciles avec FaaS. Le temps de provisionnement ne prend que quelques secondes au lieu de plusieurs heures. Vous n’êtes pas non plus limité à des langages ou des ressources particuliers. Les fournisseurs FaaS peuvent exécuter du code dans la plupart des langues, et vous pouvez accélérer le processus de construction en utilisant les caches et les bases de données que votre fournisseur propose.

Le modèle FaaS est très évolutif, et la planification de la capacité est beaucoup plus facile. Si vous avez besoin de plus de ressources, vous pouvez simplement vous référer aux instructions de votre fournisseur FaaS pour mettre à niveau votre utilisation. De nombreux fournisseurs FaaS proposent une mise à l’échelle, ce qui signifie que si votre utilisation connaît des pics, le fournisseur vous fournira simplement des ressources supplémentaires pour faire face à ce pic.

En outre, vous n’avez pas à vous soucier de la maintenance, de la reprise après sinistre (Disaster Recovery ou DR) ou de la sécurité.

Enfin, FaaS est très efficace. Les fournisseurs ne vous facturent que les ressources que vous utilisez, de sorte que vous paierez probablement beaucoup moins pour FaaS que pour votre propre matériel. De même, vos fonctions ne s’exécutent pas en arrière-plan et restent plutôt inactives. Vous n’avez pas non plus besoin de payer pour qu’elles restent inactives.

Alors, le FaaS est-il tout bénéfice ? Pas tout à fait.

Les inconvénients d’un modèle FaaS

Le modèle FaaS élimine certains des plus grands défis associés au développement de programmes, mais il vous oblige également à limiter considérablement votre contrôle. Vous ne pouvez pas prendre beaucoup de décisions concernant le serveur, la sécurité ou la base de données que votre code utilise. Au lieu de cela, c’est votre fournisseur qui s’en charge.

Dans le même ordre d’idées, le débogage est souvent un peu plus difficile car vous n’avez pas le contrôle total de votre système. Les tests sont également difficiles, car le code FaaS ne se transpose pas toujours sans heurts dans l’environnement de test.

En outre, vous devez vous conformer aux exigences strictes de votre fournisseur FaaS. Les fonctions FaaS ne peuvent effectuer qu’une seule action, donc si vous n’êtes pas habitué à cela, vous devrez changer la façon dont vous et votre équipe écrivez le code. De même, il se peut que vous deviez réécrire le code des applications existantes pour le rendre adapté au déploiement de FaaS – ainsi, FaaS est souvent mieux adapté aux nouveaux programmes qu’aux anciens.

Enfin, choisir FaaS signifie souvent s’engager à long terme avec un seul fournisseur. Vous travaillez avec le système et les exigences de votre fournisseur lorsque vous élaborez vos programmes. Naturellement, changer de fournisseur peut vous obliger à refaire une partie de votre travail et potentiellement interrompre vos fonctions.

Le pour et le contre

Pour Contre
Déployer le code plus rapidement

Le provisionnement prend quelques millisecondes

Code dans n’importe quelle langage

Reprise après sinistre automatisée (DR)

Rentable

Évolutif

Perte de contrôle du serveur

Le débogage est plus difficile

Les tests prennent plus de temps

Vous êtes lié à votre fournisseur

Vous devez écrire un code adapté au FaaS

FaaS vs SaaS, PaaS et IaaS

Maintenant que vous en savez plus sur FaaS, vous vous demandez peut-être quel est le rapport avec les autres options de type Anything as a Service (XaaS) comme IaaS, SaaS et PaaS.

Les services IaaS, PaaS et FaaS ont des objectifs similaires : ils aident les entreprises à gérer les applications à moindre coût et plus efficacement. Cependant, chaque option offre quelque chose de différent.

L’infrastructure en tant que service (IaaS) vous permet de louer de la puissance informatique (comme la RAM et le CPU). Avec IaaS, vous devez toujours gérer certaines fonctions d’application (comme la sécurité) en interne.

Platform as a Service (PaaS) vous permet de louer du matériel et des outils logiciels pour créer votre application. Un exemple courant est AWS Elastic Beanstalk.

Contrairement à IaaS et PaaS, FaaS vous permet de louer un espace pour exécuter des fonctions de manière indépendante. Cette caractéristique le rend plus évolutif.

Voici un bref résumé de la manière dont les trois fonctionnent différemment :

Comment FaaS diffère de IaaS et PaaS
Comment FaaS diffère de IaaS et PaaS (Source : thenewstack.io)

Software as a Service (SaaS) n’est pas destiné à la création d’applications ou de programmes. Au lieu de cela, il vous permet de louer des applications afin que vous n’ayez pas besoin de les construire en interne. Il existe des milliers d’options SaaS disponibles – des outils d’analyse de données aux extensions WordPress de SEO.

Taille, parts de marché et principaux fournisseurs

La croissance de FaaS reflète un changement général dans la façon dont les organisations développent de nouveaux programmes.

Au cours des décennies précédentes, les développeurs créaient de grands systèmes sous forme de projets pluriannuels. Aujourd’hui, de nombreuses organisations privilégient une approche du développement basée sur les opérations de développement (DevOps). DevOps donne la priorité au développement et à l’amélioration continus d’un programme, petit à petit.

Comment fonctionne DevOps
Comment fonctionne DevOps (Source : Atlassian)

De même, les organisations utilisent de plus en plus les services dans le cloud pour rendre les choses plus sûres et plus efficaces. Selon Oracle, les organisations stockeront bientôt 600 fois plus de données sensibles dans le cloud.

Vous pouvez voir cette tendance dans les données recueillies auprès de 7 164 dirigeants de C-suite de Statista. De 2019 à 2021, l’utilisation d’un seul service de cloud public ou privé a chuté, et la plupart des organisations ont adopté plusieurs solutions de cloud.

Utilisation de la technologie du cloud
Utilisation de la technologie du cloud (Source : Statista)

Les investissements dans le cloud computing sont également en hausse. Une autre étude de Statista portant sur des centaines de grandes entreprises dans le monde a montré que 83 % des entreprises interrogées investissaient annuellement plus de 1,2 million de dollars dans le cloud computing public. Ce chiffre est en hausse par rapport aux 50 % enregistrés en 2019.

Les gens se tournent vers le FaaS parce qu’il est à l’épreuve du temps et évolutif. De même, il offre une meilleure productivité et de meilleures performances, un délai de mise sur le marché plus rapide pour les applications et un moyen plus rentable de produire de nouveaux programmes.

Ces avantages attirent de nombreuses industries, notamment les organisations du secteur bancaire (ou organisations « BFSI »), les biens de consommation et le commerce de détail, le divertissement, les télécommunications, les services informatiques et technologiques (ITES), les soins de santé et la fabrication. Voici la contribution de chaque industrie au marché du FaaS :

Quelles industries utilisent FaaS
Quelles industries utilisent FaaS (Source : MarketsandMarkets)

Contrairement au SaaS, les entreprises n’ont pas à choisir entre des milliers de fournisseurs de FaaS. La grande majorité des FaaS utilise des solutions proposées par des acteurs majeurs, notamment AWS Lambda, Azure Functions, IBM Cloud Functions, Google Cloud Functions, Alibaba Cloud et Cloudflare Workers.

Nous allons maintenant couvrir chacun de ces fournisseurs.

AWS Lambda

Lancé par Amazon en novembre 2014, AWS Lambda est un outil FaaS extrêmement populaire. Au quatrième trimestre 2021, 33 % des utilisateurs du cloud utilisaient un service AWS.

AWS Lambda
AWS Lambda

AWS Lambda offre une prise en charge native de nombreux langages de programmation, notamment Node.js, C#, Python, Ruby, Go, Java et Powershell. Comme nous l’avons mentionné dans « « Qu’est-ce que Function as a Service (FaaS) ? » Alexa utilise AWS Lambda pour les compétences.

Caractéristiques et fonctions :

  • Se connecte à d’autres outils AWS
  • Surveille les performances de votre programme avec Amazon CloudWatch
  • Plus de 200 intégrations avec des outils SaaS
  • Vous pouvez déployer des conteneurs docker (AWS a introduit cette fonctionnalité en décembre 2020)

Pour :

  • Vous pouvez construire votre propre backend en utilisant Lambda API ou la passerelle Amazon API
  • Vous pouvez déployer des fonctions en tant qu’images de conteneur
  • Vous pouvez vous connecter à des bases de données relationnelles avec Amazon RDS Proxy
  • Vous pouvez choisir la quantité de mémoire à dédier à chaque fonction

Contre :

  • Si vous n’utilisez pas encore AWS, sa mise en place vous demandera beaucoup de temps et d’efforts

Microsoft Azure Functions

Microsoft Azure Functions est une fonctionnalité de Microsoft Azure, que Microsoft a d’abord lancé sous le nom de « Windows Azure » en février 2010. Azure Functions vous permet d’exécuter du code piloté par les événements via FaaS. Au quatrième trimestre 2021, 21 % des utilisateurs du cloud utilisaient Azure.

Microsoft Azure Functions
Microsoft Azure Functions

Caractéristiques et fonctions :

  • Vous pouvez connecter vos fonctions à plus de 250 connecteurs dans Azure Logic Apps
  • Prend en charge JavaScript, C#, F#, Powershell, PHP, Python et Java
  • Fournit de nombreux tutoriels pour les nouveaux utilisateurs
  • Vous aide à analyser votre programme grâce à Azure Application Insights

Pour :

  • Azure Functions utilise un modèle de programmation intégré
  • Convient bien aux équipes utilisant DevOps
  • Plusieurs plans disponibles

Contre :

  • Azure Functions ne prend pas en charge Node.js ou Ruby

Google Cloud Functions

Google Cloud est la troisième solution de cloud computing la plus populaire derrière AWS et Azure. Elle détient actuellement une part de marché de 10 %. Google Cloud Functions est une fonctionnalité FaaS de Google Cloud – un service qui offre plus de 100 produits pour un large éventail d’utilisations.

Google Cloud
Google Cloud

Caractéristiques et fonctions :

  • Le débogage et la journalisation sont intégrés à Google Cloud Functions (via CloudTrace et CloudDebugger)
  • Vous utilisez des déclencheurs depuis Google Assistant, Google Cloud, Firebase ou toute application utilisant HTTP
  • Google Cloud Functions s’intègre à de nombreux partenaires de Google

Pour :

  • Ceux qui veulent des capacités multi-cloud ou hybrides peuvent l’utiliser
  • Il s’agit d’un logiciel libre, vous pouvez donc facilement passer à une autre plateforme FaaS si vous le souhaitez
  • Il est très facile à utiliser
  • Google fournit de nombreuses ressources gratuites aux nouveaux utilisateurs

Contre :

  • Les services basés sur les conteneurs de Google Cloud Function sont moins avancés que ceux des autres fournisseurs de FaaS

IBM Cloud

IBM Cloud est issu de SoftLayer, une plateforme de cloud public qu’IBM a rachetée en juin 2013. IBM a transformé la plateforme en Bluemix et l’a lancée en tant qu’outil PaaS en juillet 2014. Depuis lors, IBM a rebaptisé le service en IBM Cloud et a étendu ses fonctionnalités en FaaS.

IBM Cloud
IBM Cloud

Au quatrième trimestre 2021, 4 % des utilisateurs du cloud ont utilisé IBM Cloud. Il fonctionne sur l’écosystème Apache OpenWhisk.

Caractéristiques et fonctions :

  • Vous pouvez rechercher du contenu vidéo
  • Vous pouvez connecter votre programme à d’autres programmes via les API IBM Watson
  • IBM propose des fonctions préconstruites pour certaines tâches courantes
  • Prend en charge Node.js, Python, Swift, PHP, Go, Ruby, Java et .NET Core

Pour :

  • Idéal pour créer des applications mobiles
  • Facile à apprendre à utiliser
  • Surveille votre application via IBM Cloud Monitoring

Contre :

  • Limite le temps de mémoire de votre fonction à dix minutes ou 2048 Mo

Alibaba Cloud

Alibaba Cloud n’est pas aussi connu que d’autres options de cloud computing, mais il détient tout de même une part de marché décente de 6 %. Lancé par Alibaba en 2008, Alibaba Cloud est destiné aux entreprises en ligne et à ceux qui utilisent les autres services d’Alibaba.

Alibaba Cloud
Alibaba Cloud

FaaS est l’une des offres d’Alibaba Cloud, aux côtés d’un réseau de diffusion de contenu (CDN), du stockage de données et du traitement des big data.

Caractéristiques et fonctions :

  • S’intègre aux autres services informatiques d’Alibaba
  • Résistant aux catastrophes, car Alibaba héberge les fonctions sur des clusters dans plusieurs régions
  • Transcodage vidéo
  • Raisonnement d’IA
  • Prend en charge Node.js, Python, Java, PHP et C#

Pour :

  • Offre une option gratuite pour ceux qui n’ont pas besoin d’exécuter beaucoup de code
  • Hautement évolutif
  • Vous pouvez utiliser de nombreux types de déclencheurs

Contre :

  • Il peut être difficile de déplacer des fonctions d’Alibaba vers un autre fournisseur FaaS

Cloudflare Workers

Géré par Cloudflare, Cloudflare Workers est un système FaaS qui convient aux nouveaux développeurs et à ceux qui cherchent à exécuter du code presque instantanément. Cloudflare Workers propose un plan gratuit et une tarification évolutive.

Cloudflare Workers
Cloudflare Workers

Caractéristiques et fonctions :

  • Prend en charge JavaScript, C++, Rust et C
  • Vous pouvez stocker des images, des PDF et d’autres fichiers sur les workers Cloudflare pour les déployer en tant que ressources statiques
  • À l’abri des catastrophes, car Cloudflare Workers utilise un réseau mondial de serveurs
  • S’intègre à d’autres produits Cloudflare

Pour :

  • Il est moins cher que de nombreuses autres options FaaS
  • Il est facile à utiliser pour les nouveaux développeurs
  • Vous pouvez vous lancer très rapidement
  • Cloudflare propose des tutoriels détaillés et des ressources qui peuvent vous aider à construire votre application

Contre :

  • Cloudflare Workers est moins robuste que d’autres options et convient mieux à ceux qui ont des projets à petite échelle

Meilleures pratiques FaaS

Oui, FaaS est une technologie, mais c’est aussi un état d’esprit que les développeurs doivent adopter vis-à-vis du développement de programmes et d’applications.

Pour tirer le meilleur parti de FaaS, suivez ces meilleures pratiques :

  • N’oubliez pas les limites de FaaS. FaaS ne convient pas à tous les programmes, et si vous essayez de créer un programme non adapté à FaaS avec FaaS, cela vous coûtera du temps, des efforts et de l’argent.
  • N’exécutez que des fonctions à action unique sur FaaS. Si vous exécutez des fonctions à actions multiples, vous perturbez l’environnement isolé dans lequel les fonctions FaaS fonctionnent le mieux. Cette interruption ralentira votre application et réduira son efficacité.
  • N’exécutez pas de fonctions avec des dépendances. Les dépendances créeront des erreurs et un problème d’évolutivité plus tard.
  • Surveillez attentivement votre temps de chargement. Votre temps de chargement provient de vos bibliothèques ou fonctions qui nécessitent beaucoup de mémoire. Un temps de chargement élevé ralentira votre programme et finira par frustrer les utilisateurs.
  • Réduisez le nombre de connexions au système de gestion des bases de données relationnelles (SGBDR) que vous utilisez. Ces connexions augmenteront le temps de fonctionnement des fonctions et introduiront un point de défaillance dans votre programme.

Avez-vous besoin de FaaS ?

FaaS est une technologie innovante qui change la donne pour certains, mais elle ne convient pas à tout le monde.

Les organisations qui tirent le meilleur parti de FaaS sont prêtes à construire des programmes avec des architectures de micro-services où chaque fonction ne fait qu’une chose. Ces fonctions doivent fonctionner indépendamment – si elles sont dépendantes, vous rencontrerez des problèmes d’évolutivité.

Si vous voulez construire une application avec une architecture monolithique ou des fonctions qui s’inspirent les unes des autres, FaaS peut ne pas bien fonctionner. De même, si vous ne voulez pas vous engager à long terme avec un seul fournisseur, FaaS pourrait être un choix à courte vue.

Bien sûr, vous pouvez toujours tirer parti de la technologie du cloud sans FaaS. Vous pouvez, par exemple, investir dans un PaaS ou un IaaS pour externaliser certaines des fonctions de votre application vers le cloud. Cette option vous permettrait de bénéficier de certains des avantages du cloud computing en termes de coûts et d’efficacité, mais vous n’auriez pas besoin de construire votre programme en respectant les restrictions du modèle FaaS.

Par ailleurs, si vous n’avez pas besoin de construire un programme qui fait quelque chose de très spécialisé ou de niche, envisagez d’investir dans un outil SaaS. Certains outils SaaS sont même open source, vous pourrez donc peut-être adapter un outil existant à vos besoins.

Résumé

FaaS n’est pas du langage technique ou une nouvelle tendance. Il s’agit d’une technologie évolutive que vous devez vous attendre à voir se multiplier au cours de la prochaine décennie.

Expliquer FaaS peut parfois sembler difficile, mais FaaS est simplement un service qui permet aux développeurs d’écrire et d’exécuter du code en utilisant une infrastructure maintenue par quelqu’un d’autre. De nombreux services que vous utilisez régulièrement, comme Alexa, utilisent FaaS. Les fournisseurs courants de FaaS comprennent IBM Cloud Functions, AWS Lambda, Alibaba Cloud, Google Cloud Functions et Microsoft Azure Functions.

Si FaaS est très efficace pour certaines entreprises, il ne convient pas à tout le monde. FaaS fonctionne mieux pour l’exécution d’un code isolé, sans état, qui exécute une seule fonction.

Nous aimerions vous confier le micro (ou le clavier). Comment utilisez-vous FaaS dans votre entreprise, et avez-vous des conseils à donner à ceux qui explorent cette technologie pour la première fois ? Dites-le nous dans les commentaires ci-dessous.

Matteo Duò Kinsta

Rédacteur en chef chez Kinsta et consultant en marketing de contenu pour les développeurs de plugins WordPress. Connectez-vous avec Matteo sur Twitter.