Comprendre l'informatique sans serveur pour le débutant
Lorsque l'on évoque l'informatique "sans serveur", l'idée reçue est souvent celle d'une absence totale de serveurs pour l'exécution du code et autres tâches de développement. C'est une interprétation erronée.
Après avoir démystifié cette idée, vous pourriez vous interroger sur la logique derrière l'appellation "sans serveur".
Voici un indice : l'expression ne signifie pas "pas de serveur", mais plutôt la manière dont les serveurs sont gérés et mis en œuvre. C'est là que réside l'essence du concept "sans serveur".
Cela peut sembler déroutant, n'est-ce pas ?
Nous allons explorer le monde du sans serveur et les termes qui s'y rattachent afin de lever toutes vos interrogations. L'informatique sans serveur gagne en popularité à une vitesse fulgurante. En effet, le marché du sans serveur devrait atteindre 7,7 milliards de dollars d'ici 2021, contre 1,9 milliard de dollars en 2016.
Explorons donc le concept du sans serveur et tentons de comprendre les raisons de son essor.
Qu'est-ce que l'informatique sans serveur ?
L'informatique sans serveur, également appelée "serverless", est un modèle d'exécution basé sur le cloud. Dans ce modèle, les fournisseurs de services cloud mettent à disposition des ressources machine à la demande et prennent en charge la gestion des serveurs, plutôt que de laisser cette tâche aux clients ou aux développeurs. Il s'agit d'une approche combinant services, stratégies et pratiques visant à faciliter la création d'applications cloud par les développeurs, en leur permettant de se concentrer sur le code plutôt que sur la gestion des serveurs.
De l'attribution des ressources à la planification de la capacité, en passant par la gestion, les configurations, la mise à l'échelle, les correctifs, les mises à jour, la planification et la maintenance, le fournisseur de services cloud (tel qu'AWS ou Google Cloud Platform) assume la pleine responsabilité des tâches courantes liées à l'infrastructure. Les développeurs peuvent ainsi concentrer leurs efforts et leur temps sur la logique métier de leurs processus et applications.
Cette architecture informatique sans serveur ne stocke jamais les ressources de calcul dans une mémoire volatile ; au lieu de cela, le traitement des données se fait en courtes séquences. Si une application n'est pas utilisée, aucune ressource ne lui est allouée. Ainsi, vous ne payez que pour les ressources que vous consommez réellement.
L'objectif premier du modèle sans serveur est de simplifier le processus de déploiement du code en production. Il fonctionne souvent en complément de styles traditionnels tels que les microservices. Une fois le sans serveur mis en place, les applications qu'il alimente répondent rapidement aux requêtes et s'adaptent automatiquement à la demande.
L'informatique sans serveur utilise un modèle basé sur les événements pour déterminer les besoins en mise à l'échelle. Ainsi, les développeurs n'ont plus besoin d'anticiper l'utilisation d'une application pour décider du nombre de serveurs ou de la bande passante nécessaire. Il est possible d'augmenter les ressources en fonction des besoins sans réservation préalable, ou de réduire leur nombre sans complications.
Comment le modèle sans serveur a-t-il évolué ?
Le système traditionnel présentait des défis en termes d'évolutivité et d'agilité pour le développement et le déploiement d'applications. Face à une demande croissante d'applications de qualité et à des délais de mise sur le marché réduits, la nécessité d'un système plus performant en termes d'évolutivité et d'agilité s'est fait sentir. C'est ainsi qu'a émergé l'évolution du cloud computing et des modèles sans serveur.
Le modèle sans serveur a évolué en plusieurs étapes, des architectures monolithiques aux microservices, pour aboutir à l'architecture sans serveur ou Function-as-a-Service (FaaS).
- L'architecture monolithique est une approche unifiée et traditionnelle du développement logiciel. Il s'agit d'un modèle étroitement couplé où chaque composant et ses sous-composants compilent ou exécutent du code. Si un service est défectueux, l'ensemble du serveur d'applications et des services en cours d'exécution peut tomber en panne.
- L'architecture de microservices est une collection de services plus petits au sein d'une même application, chacun étant déployé indépendamment pour exécuter une fonction spécifique. Ce modèle permet une livraison rapide d'applications à grande échelle, offrant une flexibilité aux développeurs grâce à l'utilisation de l'infrastructure en tant que service (IaaS) et de la plateforme en tant que service (PaaS). Cependant, le choix entre PaaS et IaaS peut s'avérer difficile.
- L'architecture sans serveur a évolué avec le cloud computing et offre davantage d'évolutivité et d'agilité. Au lieu d'IaaS et PaaS, elle utilise FaaS et Backend-as-a-Service (BaaS). Les applications sont déployées en fonction des besoins, de même que les ressources nécessaires. La gestion des serveurs n'est plus nécessaire, et le paiement s'arrête une fois l'exécution du code terminée.
Attributs de l'informatique sans serveur
Voici quelques attributs de l'informatique sans serveur :
- Les applications utilisant le sans serveur sont généralement constituées de fonctions uniques et de petites unités de code.
- Le code est exécuté uniquement à la demande, généralement dans un conteneur logiciel sans état, et s'adapte automatiquement en fonction de la demande.
- Les clients n'ont pas à gérer les serveurs.
- L'exécution est basée sur les événements : l'environnement informatique est créé une fois qu'une fonction est déclenchée ou qu'un événement est reçu pour exécuter la requête.
- L'évolutivité est flexible, permettant d'augmenter ou de réduire facilement les ressources. Une fois l'exécution du code terminée, l'infrastructure est arrêtée, ce qui permet de réaliser des économies. Si la fonction continue de s'exécuter, la mise à l'échelle peut être infinie en fonction des besoins.
- Des services cloud gérés peuvent être utilisés pour gérer des tâches complexes telles que le stockage de fichiers, la mise en file d'attente, les bases de données, etc.
Comment fonctionne le modèle sans serveur ?
L'architecture sans serveur repose sur deux piliers : Function-as-a-Service (FaaS) et Backend-as-a-Service (BaaS). Elle s'appuie principalement sur FaaS, qui permet aux services cloud d'exécuter du code sans nécessiter d'instances entièrement provisionnées. FaaS se compose de fonctions sans état, pilotées par des événements, évolutives et côté serveur, gérées entièrement par les services cloud.
Le modèle permet aux équipes DevOps de se concentrer sur la logique métier lors de l'écriture du code. Elles définissent ensuite un événement qui déclenche la fonction, comme les requêtes HTTP, pour exécution. Le fournisseur de cloud exécute la fonction et renvoie les résultats aux applications que les utilisateurs peuvent visualiser.
Le modèle sans serveur offre ainsi rentabilité et commodité, grâce à des fonctionnalités de mise à l'échelle automatique, à la demande et de paiement à l'utilisation. C'est pourquoi de plus en plus d'entreprises et d'équipes DevOps optent aujourd'hui pour le sans serveur.
Qui utilise le sans serveur et pourquoi ?
Le sans serveur est l'une des technologies les plus en vogue dans le domaine du développement logiciel. Il pourrait éliminer à terme la nécessité de gérer et de provisionner l'infrastructure.
Il est particulièrement utile pour :
- Les organisations souhaitant davantage d'évolutivité et de flexibilité, ainsi qu'une meilleure capacité de test des applications.
- Les développeurs désireux de réduire les délais de mise sur le marché en créant des applications agiles et performantes.
- Les entreprises dont les serveurs n'ont pas besoin de fonctionner en permanence. Elles peuvent appeler des fonctions basées sur des modules à l'aide d'applications, afin de réduire les coûts.
- Les organisations souhaitant créer des applications cloud efficaces et simplifier la migration vers le cloud.
- Les développeurs qui cherchent à réduire la latence pour offrir un accès rapide à certaines fonctions ou applications.
- Les entreprises disposant de ressources limitées pour gérer la maintenance et la complexité de l'infrastructure informatique, qui peuvent opter pour l'informatique sans serveur afin de résoudre automatiquement les problèmes et de ne nécessiter aucune maintenance de leur part.
Parmi les utilisateurs notables du modèle sans serveur, on retrouve Slack, Coca-Cola et NetFlix.
Grâce à ses attributs uniques, le modèle sans serveur convient à de nombreux cas d'utilisation, tels que :
- Applications web : il est possible de créer des applications web rapides et évolutives, qui répondent rapidement aux requêtes des utilisateurs. Il est idéal pour créer des applications sans état, que l'on peut démarrer instantanément, et des applications capables de répondre à des augmentations imprévisibles et irrégulières des demandes des utilisateurs.
- API back-end : sur les plateformes sans serveur, toute fonction peut facilement être transformée en point de terminaison HTTP, prêt à être utilisé par les clients. Ces fonctions ou actions sont appelées actions web lorsqu'elles sont activées sur le web. Une fois ces actions activées, il devient facile de les assembler en une API complète. Il est également possible d'utiliser une passerelle API pour renforcer la sécurité, le support de domaine, la limitation de débit et la prise en charge d'OAuth.
- Microservices : le sans serveur est largement utilisé dans le modèle de microservices, qui consiste à créer de petits services capables d'exécuter une seule fonction et de communiquer entre eux via des API.
Bien qu'il soit possible de créer des microservices à l'aide de conteneurs logiciels et de PaaS, le sans serveur s'avère plus efficace. Il facilite la création de lignes de code plus petites, qui effectuent une seule tâche, et offre un provisionnement rapide, une mise à l'échelle automatique et une tarification flexible, sans facturer les clients lorsque les ressources ne sont pas utilisées. - Traitement des données : le sans serveur est idéal pour traiter des données contenant des vidéos, de l'audio, des images et du texte structuré. Il est également adapté à diverses tâches telles que la validation, la transformation, l'enrichissement, le nettoyage, la normalisation audio et le traitement de PDF. Il est possible de l'exploiter pour le traitement d'images, avec des opérations telles que l'accentuation, la rotation, la génération de miniatures et la réduction du bruit. Le transcodage vidéo et la reconnaissance optique de caractères (OCR) sont d'autres exemples d'utilisation du sans serveur dans le traitement des données.
- Traitement par flux/lot : il est possible de créer des applications de streaming et des pipelines de données puissants en utilisant FaaS et une base de données avec Apache Kafka. Le modèle sans serveur convient à différentes ingestions de flux, notamment les données pour les journaux d'application, les capteurs IoT, la logique métier et le marché financier.
- Calcul parallèle : le sans serveur est parfait pour les tâches de calcul parallèle, où chaque tâche s'exécute en parallèle pour exécuter une action spécifique. Cela peut inclure la recherche de données, le traitement, les opérations de mapping, le scraping web, le traitement du génome et le réglage des hyperparamètres.
- Autres utilisations : le sans serveur est également utilisé dans de nombreuses applications, telles que la gestion de la relation client (CRM), la finance, les chatbots, l'informatique décisionnelle et l'analyse.
Remarque : le sans serveur peut ne pas être idéal dans certains cas. Par exemple, les grandes applications avec des charges de travail prévisibles et quasi constantes peuvent tirer davantage profit d'une architecture système traditionnelle. Elles peuvent opter pour des serveurs dédiés, gérés ou auto-gérés. De plus, si votre organisation dispose de configurations traditionnelles complètes avec des systèmes et applications hérités, le passage à une architecture entièrement nouvelle et différente peut s'avérer coûteux et difficile.
Avantages et inconvénients de l'informatique sans serveur
Comme toute médaille a deux faces, l'architecture sans serveur présente également des avantages et des inconvénients, en fonction de divers paramètres. Il est donc important de connaître les deux aspects avant de se décider pour cette technologie.
Avantages 👍
Voici quelques-uns des avantages de l'architecture sans serveur :
Rentabilité
Le sans serveur peut s'avérer plus rentable que l'achat ou la location de serveurs, pour lesquels vous payez même si vous ne les utilisez pas.
Le sans serveur utilise un modèle de paiement à l'utilisation, dans lequel vous ne payez que pour les ressources que vous consommez. Le fournisseur sans serveur vous facture uniquement la mémoire allouée et le temps d'exécution du code, sans frais liés aux périodes d'inactivité.
Ainsi, vous réalisez des économies sur les coûts d'exploitation (installation, licences, maintenance, correctifs, support, etc.). L'absence de matériel serveur permet également de réduire les coûts de main-d'œuvre.
Évolutivité
Les systèmes sans serveur offrent un haut niveau d'évolutivité, car il est possible d'augmenter ou de réduire les ressources à la demande. C'est pour cette raison qu'on les qualifie également d'"élastiques".
Les développeurs n'ont pas besoin de temps dédié pour définir les systèmes ou les politiques de mise à l'échelle automatique ou pour les ajuster. Le fournisseur de cloud que vous avez choisi est responsable de la gestion de tout cela. De plus, les développeurs de petites équipes peuvent exécuter leur code par eux-mêmes, sans avoir besoin d'ingénieurs support ou infrastructure.
Latence réduite
Comme les applications ne sont pas hébergées sur un seul serveur d'origine, le code peut être exécuté depuis n'importe quel endroit. Si le fournisseur de cloud que vous avez choisi le prend en charge, les fonctions d'application peuvent être exécutées sur un serveur proche des utilisateurs finaux. La latence est donc réduite, en raison de la distance plus courte entre les requêtes de l'utilisateur et le serveur.
Productivité
Le modèle sans serveur permet d'améliorer la productivité des développeurs, car ils n'ont plus à gérer les serveurs. De plus, ils n'ont plus à se soucier de la gestion des requêtes HTTP ou du multithreading dans leur code.
Le développement backend s'en trouve simplifié, notamment grâce à FaaS, où le code exposé est constitué de fonctions événementielles. Tous ces éléments permettent de gagner du temps, qui peut être consacré à l'amélioration du code et de l'application.
Déploiement plus rapide des applications
Avec le sans serveur, les développeurs n'ont pas à effectuer de configuration backend ou à télécharger de code sur le serveur afin de déployer une version de l'application. Ils peuvent également télécharger rapidement le code par petites parties pour lancer de nouveaux produits.
Ils ont également la possibilité de déployer le code en une seule fois ou de le faire fonctionner étape par étape, car il ne s'agit pas d'une architecture monolithique. Il est également facile de corriger, de mettre à jour, d'ajouter des fonctionnalités ou de réparer rapidement les erreurs d'une application.
Parmi les autres avantages, on peut citer l'informatique verte (grâce à une consommation d'énergie réduite avec des serveurs à la demande), la simplification de la création d'applications grâce à des intégrations intégrées, une mise sur le marché plus rapide, etc.
Inconvénients 👎
Examinons maintenant les inconvénients de l'informatique sans serveur :
Performance
Il arrive que le code sans serveur utilisé moins fréquemment présente une latence de réponse plus élevée que le code exécuté en continu sur des serveurs dédiés, des conteneurs logiciels ou des machines virtuelles (VM). Cela est dû au temps nécessaire pour redémarrer et générer une latence supplémentaire.
Difficulté de débogage et de test
Il est important de savoir comment fonctionne le code après le déploiement. Il faut donc le tester, ce qui est plus difficile dans un environnement sans serveur. De plus, les développeurs manquent de visibilité sur chaque processus backend, et les applications sont divisées en plus petites fonctions, ce qui complique le débogage.
Problèmes de sécurité
Les préoccupations nouvelles et avancées en matière de cybersécurité sont de plus en plus fréquentes. Or, il n'est pas possible de connaître ou de mesurer précisément la sécurité du fournisseur de cloud. Il existe donc un risque lorsque celui-ci gère l'ensemble du backend, y compris les données sensibles stockées sur les applications.
Ne convient pas aux processus d'application de longue durée
Le sans serveur est rentable, mais pas pour tous les types d'applications. Si votre application comporte des processus de longue durée, le coût de son exécution, en fonction du temps et des ressources allouées, peut être très élevé. Il sera alors préférable d'opter pour un hébergement sur serveur dédié.
Les autres inconvénients du sans serveur sont la difficulté de passer d'un fournisseur à l'autre et les problèmes de confidentialité.
Terminologies importantes dans l'architecture sans serveur
Le concept de sans serveur est indissociable de certains termes clés qui s'y rapportent. FaaS et BaaS sont deux des idées les plus importantes qui ont conduit à l'évolution du sans serveur. La création d'un système sans serveur nécessite par ailleurs une base de données, un système de stockage, une pile technologique, un framework, etc. Penchons-nous un peu sur ces éléments.
Fonction en tant que service (FaaS)

FaaS est un concept central du sans serveur et fonctionne comme son sous-ensemble. Ce modèle d'exécution de code piloté par les événements (applications exécutées en réponse à une requête) permet d'écrire une logique déployée dans des conteneurs logiciels, exécutée à la demande et gérée par une plateforme cloud.
Par rapport à BaaS, FaaS offre davantage de contrôle aux développeurs pour la création d'applications personnalisées, au lieu de dépendre de bibliothèques contenant du code préfabriqué.
Les conteneurs logiciels dans lesquels le code est déployé sont sans état pour simplifier l'intégration des données, et le code s'exécute pendant une période plus courte. De plus, les développeurs peuvent appeler des applications sans serveur via des API à l'aide de FaaS, que les fournisseurs de cloud gèrent via une passerelle API.
Backend en tant que service (BaaS)
BaaS est similaire à FaaS, dans la mesure où les deux modèles ont besoin d'un fournisseur de services tiers. Dans ce modèle, un fournisseur de cloud propose des services backend tels que le stockage de données, afin de permettre aux développeurs de se concentrer sur l'écriture de leur code frontend. Cependant, les applications BaaS peuvent ne pas être pilotées par les événements ou exécutées en périphérie, contrairement aux applications sans serveur.
Un bon exemple de BaaS est AWS Lambda. Les développeurs utilisent du code sans serveur dans des conteneurs, avec Lambda, qui fournit des directives à suivre lors de la soumission du code. Il automatise également les processus de saisie du code dans les conteneurs logiciels et offre un service géré.
Pile sans serveur
Comme pour les autres technologies logicielles, l'architecture sans serveur est également livrée avec une pile technologique. Celle-ci rassemble divers composants essentiels à la création d'un système ou d'une application sans serveur.
La pile sans serveur comprend :
- Un langage de programmation : le langage dans lequel les développeurs écrivent le code. Selon le fournisseur, il est possible de choisir entre Java, JavaScript, Python, C#, Go, Node.js, F#, etc.
- Un framework sans serveur : un framework fournit le squelette ou la structure du code. Il existe de nombreux frameworks sans serveur pour faciliter le démarrage. Il permet de construire, d'empaqueter et de compiler du code, puis de le déployer dans le cloud. Les frameworks sans serveur accélèrent le processus de codage et simplifient la mise à l'échelle, avec un temps de configuration réduit. Apex et AWS Serverless Application Model sont des exemples de frameworks sans serveur.
- Bases de données sans serveur : elles sont utilisées pour stocker les données auxquelles le code doit accéder. Elles sont également nécessaires pour interagir avec les fonctions des déclencheurs. Ces bases de données se comportent comme des fonctions sans serveur, mais stockent les données indéfiniment. DynamoDB, Azure Cosmos DB, Aurora Serverless et Cloud Firestore sont des exemples de bases de données sans serveur.
- Un ensemble de déclencheurs : ils permettent de démarrer l'exécution du code, comme les requêtes HTTP.
- Conteneurs logiciels : ils renforcent le modèle sans serveur et offrent des microservices conteneurisés sans complexité. Ils servent également de référentiel pour le code et facilitent l'écriture de code pour plusieurs plateformes (bureau ou iOS, par exemple).
- Passerelles API : elles fonctionnent comme un proxy pour les actions web. Elles offrent le routage HTTP, les limites de débit, l'affichage des journaux d'utilisation et de réponse de l'API, l'ID client, etc.
Comment mettre en œuvre un modèle sans serveur et l'optimiser ?
Le passage au sans serveur entraînera des changements significatifs en termes d'applications, de technologie, de coûts, de sécurité et d'avantages.
Si vous êtes une start-up ou une petite entreprise, cette technologie accélérera votre mise sur le marché et vous permettra de pousser rapidement les mises à jour, avec des tests simplifiés, un débogage facile, la collecte de commentaires, le travail sur les problèmes, etc. afin d'offrir une application soignée aux utilisateurs.
Si vous êtes une grande organisation, vous bénéficierez d'avantages tels qu'une plus grande évolutivité pour répondre aux demandes de vos utilisateurs, mais cela nécessitera des investissements importants.
Il est donc préférable d'évaluer les avantages et les inconvénients du sans serveur en fonction de votre type d'entreprise et de vos exigences, puis de prendre une décision. Si vous êtes intéressé par cette approche, commencez par :
- Comprendre vos besoins et identifier une pile technologique sans serveur appropriée.
- Choisir un fournisseur sans serveur (Google Cloud Functions, Azure Functions ou AWS Lambda, par exemple).
- Fournir à votre équipe des outils performants pour surveiller les performances et les fonctions du système. Surveiller le nombre total de requêtes, les limitations, le nombre d'erreurs, les taux de réussite, la durée des requêtes et la latence.
Fournisseurs sans serveur

De nombreux fournisseurs sans serveur ou fournisseurs de cloud sont disponibles sur le marché. Voici quelques-uns des meilleurs :
- AWS Lambda : il est idéal pour les organisations qui utilisent déjà les services AWS. Il s'intègre à une large gamme de services de stockage, de streaming et de bases de données.
- Fonctions Microsoft Azure : il est recommandé d'opter pour ce fournisseur si vous utilisez Visual Studio Code. Il fonctionne sans problème avec DevOps et Azure Pipelines pour l'intégration et la livraison continues (CI/CD). Il prend également en charge les fonctions durables pour les fonctions avec état, et offre une surveillance intégrée.
- Fonctions Google Cloud : si vous utilisez les services Google, ce fournisseur est un bon choix. Il prend en charge les applications JS, Go et Python, permet de déclencher des fonctions depuis l'Assistant Google ou GCP et offre une mise à l'échelle intégrée.
- IBM Cloud Functions : si vous souhaitez opter pour un modèle sans serveur basé sur Apache OpenWhisk, IBM Cloud Functions est fait pour vous. Il inclut une excellente surveillance des performances, le déclenchement d'événements à partir d'une API REST ou de services cloud IBM, et s'intègre à la passerelle API d'IBM pour gérer les terminaux.
- Knative : ce fournisseur est à privilégier si vous exécutez des services sur Kubernetes. Il est soutenu par Google, Red Hat et IBM, entre autres.
- Cloudflare Workers : il est adapté aux applications qui nécessitent une grande réactivité, notamment les applications JavaScript. Il prend en charge Workers KV pour le stockage de données et WebAssembly pour faciliter la compilation et l'utilisation de plusieurs langages. De plus, son réseau de distribution élevé (avec 193 centres de données) améliore la latence et la réactivité.
Conclusion : l'avenir du sans serveur
L'informatique sans serveur évolue en raison de la demande croissante d'applications hautement évolutives. Elle offre également de nombreux avantages du cloud computing, notamment la commodité, la rentabilité et la productivité.
Selon une enquête O'Reilly, 40 % des personnes interrogées travaillent dans des entreprises qui ont adopté l'architecture sans serveur.
Bien que le sans serveur suscite encore certaines inquiétudes, notamment en ce qui concerne la latence due aux démarrages à froid, aux tests et au débogage, les fournisseurs de cloud s'efforcent d'y remédier. Une version plus évoluée du sans serveur pourrait bientôt voir le jour, avec davantage d'avantages et moins de problèmes. Par conséquent, la popularité et l'utilisation du modèle sans serveur devraient continuer de croître.
Ceci pourrait également vous intéresser : 7 façons dont l'informatique sans serveur est une technologie en plein essor