Qu'est-ce que l'informatique sans serveur ?
Définition de l'informatique sans serveur
L'informatique sans serveur est un modèle de cloud computing qui permet aux développeurs de créer et d'exécuter du code sur des serveurs gérés par le fournisseur cloud et disponibles à la demande. L'informatique sans serveur libère les développeurs de la gestion de l'infrastructure back-end et offre un environnement scalable et flexible aux entreprises. Avec l'informatique sans serveur, les fournisseurs cloud provisionnent l'infrastructure pour répondre à la demande en scalant au besoin, et gèrent l'infrastructure en effectuant la maintenance de routine, les mises à jour, les correctifs et le monitoring de la sécurité.
L'informatique sans serveur ne signifie pas qu'aucun serveur n'est impliqué. Au contraire, cela signifie que la gestion de l'infrastructure a été externalisée au fournisseur cloud. C'est la raison des avantages et des défis du monitoring sans serveur. Les entreprises peuvent concentrer leurs ressources sur la logique métier, mais en contrepartie, elles ont moins de contrôle et de visibilité sur ce qui se passe dans le back-end.
Informatique sans serveur et FaaS
FaaS (Function-as-a-Service) fait référence à des services informatiques qui déchargent la gestion de l'infrastructure back-end pour se concentrer sur la création et l'exécution du code front-end. L'informatique sans serveur et FaaS sont souvent utilisés de manière interchangeable, mais FaaS fait spécifiquement référence à la capacité d'exécution du code qu'il donne aux développeurs. En tant qu'architecture pilotée par les événements, FaaS est un sous-ensemble de l'informatique sans serveur et n'est que l'un des services qu'elle fournit.
Les services sans serveur incluent également le stockage et les bases de données sans serveur, la diffusion d'événements, la messagerie et les passerelles API.
Informatique sans serveur et BaaS
BaaS (Backend-as-a-Service) est, comme FaaS, un sous-ensemble de l'informatique sans serveur. BaaS est un modèle de cloud computing qui permet aux développeurs de se concentrer sur le front-end. BaaS est fourni avec un logiciel prêt à l'emploi pour les activités types de back-end, telles que l'authentification utilisateur, les notifications push, le stockage dans le cloud et la gestion des bases de données.
L'informatique sans serveur fonctionne à la fois avec FaaS et BaaS.
Informatique sans serveur et SaaS
SaaS (Software-as-a-Service) fait référence à un service informatique dans lequel un fournisseur octroie des licences et fournit des applications logicielles prêtes à l'emploi aux entreprises sur Internet. L'informatique sans serveur offre une infrastructure scalable et flexible permettant aux développeurs de créer et de déployer des applications sans se soucier de la gestion des serveurs.
Qu'est-ce que le monitoring sans serveur ?
L'architecture pilotée par les événements de l'informatique sans serveur et l'infrastructure tierce nécessitent également une solution de monitoring dédiée. Les solutions de monitoring sans serveur peuvent aider les entreprises à gagner en visibilité sur l'ensemble de leurs opérations et constituent un composant important de tout modèle d'informatique sans serveur.
Quels sont les composants clés de l'architecture sans serveur ?
L'architecture sans serveur comporte plusieurs composants clés, ce qui la distingue des modèles d'infrastructure traditionnelle.
- Le rôle des fournisseurs cloud est important :
- Les fournisseurs cloud sont essentiels à l'environnement sans serveur car ils prennent en charge la gestion de l'infrastructure. Dans un modèle informatique d'architecture traditionnelle, votre équipe informatique prend normalement en charge l'exécution et la gestion des serveurs, une tâche chronophage et laborieuse. Avec l'informatique sans serveur, le fournisseur cloud assume cette responsabilité, ce qui libère vos développeurs. Les fournisseurs cloud provisionnent les serveurs, les bases de données et le stockage.
- Programmation pilotée par les événements :
- L'informatique sans serveur est déclenchée par des événements plutôt que par l'interrogation. Un environnement sans serveur est une architecture pilotée par les événements (EDA). Un événement est tout changement d'état qui se produit dans l'environnement, tel qu'une demande d'utilisateur final. Ces événements invoquent des fonctions, qui sont programmées par les développeurs pour déclencher des tâches.
- Tâches basées sur un déclencheur :
- L'informatique sans serveur n'exécute des tâches que lorsqu'elles sont déclenchées par une fonction, qui est invoquée par un événement. Par conséquent, l'informatique sans serveur n'utilise que les ressources dont il a besoin lorsqu'elles sont appelées.
- Programmation asynchrone :
- L'architecture pilotée par les événements et la nature sans état de l'informatique sans serveur permettent une programmation asynchrone. Sans état signifie qu'aucune donnée n'est enregistrée entre les interactions. Ainsi, plusieurs tâches peuvent être exécutées à la fois, sans qu'il soit nécessaire d'attendre qu'une tâche se termine pour qu'une autre soit exécutée. La possibilité de programmation asynchrone offre également aux développeurs une certaine flexibilité lorsqu'ils écrivent et testent un nouveau code. La vitesse de déploiement augmente.
- API RESTful :
- L'informatique sans serveur communique entre les services Web grâce à l'utilisation d'API RESTful. REST est l'acronyme de representational state transfer, qui signifie transfert d'état représentatif. Une API est une interface de programmation applicative. En tant qu'environnement d'architecture sans état, l'informatique sans serveur utilise des API RESTful pour traduire ou représenter une ressource côté client (back-end) à un utilisateur qui a fait une demande via HTTP.
- DevOps (CI/CD) :
- L'informatique sans serveur permet aux développeurs de supprimer la partie Ops (opérations) de DevOps avec CI/CD. CI/CD introduit l'automatisation dans le développement d'applications. CI signifie intégration continue et CD signifie déploiement continu ou livraison continue. En externalisant le monitoring du back-end aux fournisseurs cloud, un environnement sans serveur contribue au développement d'applications agiles, car les développeurs peuvent automatiser des parties du pipeline de développement et passer moins de temps à se soucier des effets du déploiement.
- Scaling automatique :
- L'informatique sans serveur est scalable par essence. Elle scale de manière automatique pour répondre à la demande. Un environnement sans serveur ne lance les conteneurs que lorsque des fonctions sont invoquées. De ce fait, il répond de manière automatique aux augmentations ou aux diminutions d'utilisation.
- Réparation automatique :
- Les applications sans serveur peuvent être programmées pour identifier et corriger automatiquement les erreurs lorsqu'elles surviennent. Ce type de capacité améliore la résilience d'une application et augmente sa disponibilité.
Comment fonctionnent les applications sans serveur ?
L'informatique sans serveur utilise à la fois BaaS (Backend-as-a-Service) et FaaS (Function-as-a-Service) pour répondre aux demandes. L'environnement dans son ensemble est piloté par les événements, ce qui signifie qu'un événement déclenche une réponse, telle qu'une authentification, ou une fonction.
La partie FaaS de l'informatique sans serveur fonctionne avec les demandes ou les événements d'utilisateurs. Une demande est traitée dans la passerelle API, qui invoque ensuite une fonction. À son tour, la fonction communique avec la base de données. Cette chaîne d'activités représente une seule tâche d'application. Dans un environnement sans serveur, les applications sont modulaires, car les tâches sont programmées en tant que fonctions distinctes.
Les développeurs écrivent du code d'application sans serveur qui est déployé dans des conteneurs à la demande. Le fournisseur cloud exécute la fonction sur un serveur en cours d'exécution ou lance un nouveau serveur pour exécuter la fonction.
L'informatique sans serveur offre aux développeurs une grande flexibilité car elle est sans état, ce qui signifie que toutes les invocations sont indépendantes. Aucune donnée n'est stockée à partir des interactions précédentes. L'informatique sans serveur utilise uniquement les ressources nécessaires. Dès qu'une fonction n'est plus nécessaire, le conteneur dans lequel le code a été déployé disparaît. Cela contribue à la flexibilité qu'offre l'informatique sans serveur aux développeurs.
Autres considérations concernant les applications sans serveur :
- Un démarrage à froid peut se produire lorsqu'une fonction est invoquée pour la première fois ou après une période d'inactivité. Cela peut entraîner une certaine latence.
- Les fournisseurs cloud déterminent le nombre de fonctions pouvant s'exécuter simultanément. C'est ce que l'on appelle la limite de simultanéité.
- Un délai d'attente fait référence au temps qu'un fournisseur cloud alloue à une fonction avant d'y mettre fin.
Pourquoi la technologie sans serveur est-elle importante ?
La technologie sans serveur est importante car elle offre des avantages métier importants en permettant un scaling automatique. De plus, elle permet aux développeurs d'être plus productifs et de fournir des applications plus rapidement. Il s'agit donc d'une technologie rentable : elle permet aux développeurs de se concentrer sur la production plutôt que sur les opérations et, en tant que modèle basé sur la consommation, réduit les coûts d'exécution et de gestion des serveurs physiques.
La technologie sans serveur existe depuis plus de dix ans. En 2014, AWS a lancé son premier FaaS, AWS Lambda. Google possède Google Cloud Functions, Microsoft a Azure Functions. Comme la plupart des entreprises s'appuient sur le cloud computing, la technologie sans serveur est synonyme d'opérations commerciales. Ainsi, alors que le rôle des fournisseurs cloud devient crucial pour les entreprises, il en va de même pour la technologie sans serveur.
Avantages des fonctions sans serveur
Les fonctions sans serveur offrent plusieurs avantages aux développeurs et aux clients.
- Rentabilité : les fournisseurs cloud proposent l'informatique sans serveur comme modèle basé sur la consommation, en vous facturant uniquement les ressources et les fonctions que vous utilisez. L'informatique sans serveur étant sans état (si un conteneur n'est pas utilisé, il disparaît), il n'y a pas de temps d'inactivité. Par conséquent, vous ne payez jamais le temps d'inactivité. Cela fait une différence considérable en termes de rentabilité.
- Scaling : l'informatique sans serveur vous permet de scaler en fonction des besoins grâce à son architecture pilotée par les événements. Si la demande augmente, le fournisseur cloud vous permet de scaler en lançant plus de ressources suivant les besoins. Il peut exécuter et gérer ces ressources à votre place, vous pouvez ainsi vous concentrer sur la croissance.
- Réduction de la surcharge : avec les fonctions sans serveur, les fournisseurs cloud prennent en charge la gestion et le monitoring de votre infrastructure. Cela signifie que vous déchargez le coût et les ressources humaines de la gestion sur le fournisseur cloud et que vous pouvez réaffecter vos ressources sur le développement et le déploiement.
- Performances et disponibilité : en tant qu'environnement piloté par les événements, l'informatique sans serveur augmente les performances car elle n'utilise jamais de ressources inutiles. Cela signifie également que les ressources sont disponibles selon les besoins. Le fournisseur cloud vous permet de scaler selon les besoins en lançant des serveurs et des conteneurs lorsqu'on lui demande. Ainsi, vous n'avez jamais à vous soucier de la disponibilité des serveurs ou du stockage.
- Productivité des développeurs : les développeurs bénéficient de fonctions sans serveur car un fournisseur cloud prend en charge la partie "opérations" de DevOps. Les développeurs peuvent ainsi se concentrer sur l'écriture de code. L'environnement sans serveur favorise l'agilité et la productivité du développement en permettant l'automatisation CI/CD dans le pipeline de développement.
Quels sont les défis posés par l'informatique sans serveur ?
Malgré les avantages évidents que sont la rentabilité et le développement accéléré, l'informatique sans serveur présente quelques défis. Voici quelques-uns des inconvénients de l'informatique sans serveur :
- Dépendance vis-à-vis d'un fournisseur : la nature de l'informatique sans serveur implique que vous vous engagez auprès d'un seul fournisseur cloud pour le déploiement du code. Par conséquent, les développeurs sont obligés d'adopter le modèle proposé par le fournisseur. Le fournisseur décide comment sont utilisées les ressources, par exemple en mettant en place des limites de simultanéité. Pour ces raisons, la dépendance vis-à-vis d'un fournisseur peut entraîner un manque de flexibilité.
- Monitoring et débogage du point de vue du code : comme le fournisseur cloud gère l'infrastructure, vous avez peu ou pas de visibilité sur le back-end de vos opérations. Par conséquent, il est très difficile de monitorer un environnement sans serveur sans un outil de monitoring sans serveur dédié. L'architecture pilotée par les événements d'un environnement sans serveur signifie également que l'identification, la recréation et la correction des bugs peuvent être difficiles.
- Latence : en raison de la nature sans état des applications dans un environnement sans serveur, une latence peut se produire lorsqu'une fonction est invoquée pour la première fois ou après une longue période d'inactivité. Une latence peut également se produire en raison d'un délai d'attente ou lorsque trop de fonctions s'exécutent simultanément. Dans ce cas, le fournisseur peut tuer l'une des fonctions, ce qui entraîne un échec. Du côté de l'utilisateur, cela provoque une latence.
- Personnalisation et contrôle limités : comme les fournisseurs sans serveur gèrent l'infrastructure sous-jacente, il peut y avoir des limites à la personnalisation et au contrôle de l'environnement, telles que les versions d'exécution disponibles, l'allocation de mémoire et les limites de temps d'exécution.
- Problèmes de sécurité : l'informatique sans serveur réduit la surface d'attaque, mais elle peut introduire de nouveaux risques de sécurité. Les développeurs doivent connaître les risques associés aux services tiers, aux autorisations au niveau des fonctions et aux vulnérabilités du code d'application.
- Absence d'état : les fonctions sans serveur sont sans état, ce qui signifie qu'elles ne conservent aucune donnée entre les invocations. Cela peut compliquer la gestion de l'état de l'application, obligeant les développeurs à s'appuyer sur un stockage ou des bases de données externes pour maintenir l'état.
- Prévisibilité des coûts : bien que l'informatique sans serveur puisse être rentable, il peut être difficile de prévoir les coûts, car ils dépendent de facteurs tels que le nombre d'invocations, la mémoire et le temps d'exécution. Des pics d'utilisation inattendus peuvent entraîner une augmentation des coûts.
- Intégration aux systèmes existants : l'intégration de fonctions sans serveur à des systèmes et des architectures existants peut être difficile, en particulier lorsqu'il s'agit d'applications héritées ou de systèmes complexes.
- Courbe d'apprentissage : l'adoption de l'informatique sans serveur nécessite que les développeurs apprennent de nouveaux concepts, outils et bonnes pratiques, ce qui peut ajouter de la complexité au processus de développement.
Cas d'utilisation de l'informatique sans serveur
Grâce à ses avantages tels que la scalabilité et l'administration réduite, l'informatique sans serveur est adaptée à plusieurs cas d'utilisation.
- Développement d'applications Web : l'informatique sans serveur est adaptée au développement d'applications Web, car il s'agit d'un environnement dans lequel les développeurs peuvent tester rapidement. Le modèle basé sur la consommation proposé par les fournisseurs cloud signifie également que le développement d'applications Web est moins cher dans l'informatique sans serveur. Vous ne payez que les ressources que vous utilisez et vous ne consacrez ni temps ni ressources humaines à la gestion de l'infrastructure. Cela permet à vos développeurs de se concentrer sur le front-end. Les services sans serveur, tels que les bases de données, les passerelles API et l'architecture pilotée par les événements (EDA), permettent aux développeurs de créer des applications Web uniquement en écrivant du code.
- Traitement et analyse des données : l'informatique sans serveur fonctionne bien avec les données textuelles structurées, audio, image et vidéo. Elle permet de traiter et d'analyser de grands ensembles de données disparates. Comme tout modèle informatique traditionnel, un environnement sans serveur contient divers ensembles de données cloisonnés. Les développeurs peuvent écrire une application pour collecter et traiter les données à partir de tous les canaux de l'entreprise dans une base de données unique. L'informatique sans serveur est idéale pour traiter de grandes quantités de données, telles que les opérations ETL (Extraire, Transformer, Charger), l'analyse des logs ou la validation des données, car elle peut scaler horizontalement pour gérer la charge de travail requise.
- API et microservices : les fonctions sans serveur peuvent être utilisées pour créer et déployer rapidement des API et des microservices, ce qui permet aux développeurs de se concentrer sur l'écriture de la logique des applications sans se soucier de la gestion de l'infrastructure.
- Traitement des fichiers en temps réel : les fonctions sans serveur peuvent traiter des fichiers en temps réel lorsqu'ils sont chargés vers des services de stockage dans le cloud, ce qui permet le redimensionnement d'image, le transcodage vidéo ou l'extraction de texte.
- Workflows pilotés par les événements : l'informatique sans serveur peut être utilisée pour créer des workflows pilotés par les événements qui répondent à des événements spécifiques, tels que des modifications dans une base de données, des flux de données de dispositifs IoT ou des messages d'une file d'attente de messages.
- Tâches planifiées et tâches cron : les fonctions sans serveur peuvent être utilisées pour planifier des tâches et les exécuter à des intervalles spécifiques, comme les sauvegardes nocturnes, la génération de rapports ou la synchronisation des données.
- Chatbots et assistants virtuels : les fonctions sans serveur peuvent être utilisées pour créer des chatbots ou des assistants virtuels qui traitent et répondent aux entrées des utilisateurs, en s'intégrant aux plateformes de messagerie et aux services de traitement du langage naturel.
- Traitement des données IoT : l'informatique sans serveur peut traiter et analyser les données générées par des dispositifs IoT, ce qui permet un monitoring en temps réel, la détection des anomalies et l'agrégation des données.
Architecture sans serveur et architecture traditionnelle
La principale différence entre l'architecture sans serveur et l'architecture traditionnelle est que l'équipe informatique de votre entreprise n'a pas à exécuter ni à gérer de serveurs physiques. C'est le fournisseur cloud qui se charge de cela.
En général, une entreprise utilise des serveurs physiques pour exécuter les applications. Cela nécessite du temps et des ressources pour se procurer du matériel et un emplacement physique pour installer, alimenter et refroidir ces serveurs. Les serveurs physiques impliquent l'aménagement en racks, l'installation et la configuration du matériel. L'équipe informatique assume également des responsabilités chronophages : configuration de l'environnement pour le déploiement du code, installation des systèmes d'exploitation, maintenance et gestion des serveurs.
Les serveurs physiques sont devenus des machines virtuelles. Les entreprises doivent toujours installer et configurer du matériel, mais profitent du fait que plusieurs machines peuvent s'exécuter sur le même matériel. Cela signifie que les ressources informatiques sont mieux utilisées. L'équipe technique peut déployer plusieurs serveurs via des hyperviseurs et, comme pour les serveurs physiques, elle doit installer des systèmes d'exploitation et assurer la maintenance et la gestion. L'installation des systèmes d'exploitation est automatisée grâce à l'utilisation de modèles de machine virtuelle et d'outils d'automatisation.
Les conteneurs ont évolué à partir des machines virtuelles. Les conteneurs sont des packages de code qui permettent aux applications de s'exécuter dans un environnement d'exploitation donné, ce qui les rend portables. Contrairement aux machines virtuelles, les conteneurs s'exécutent tous sur le même système d'exploitation et le même runtime de conteneur, et leurs ressources informatiques sont réparties dans l'espace utilisateur du noyau. Cela simplifie grandement la gestion de ces services car il y a moins de systèmes d'exploitation à gérer. Les conteneurs sont automatisés via des plateformes comme Kubernetes, qui offrent une flexibilité là où les conteneurs sont déployés, ce qui les rend portables et faciles à déployer et à détruire en cas de besoin.
L'architecture sans serveur permet aux équipes informatiques de se concentrer sur l'écriture et le déploiement de code, car toute la gestion de l'infrastructure a été confiée à un fournisseur cloud.
Avenir de l'informatique sans serveur avec Elastic
L'informatique sans serveur continuera d'évoluer en même temps que la technologie cloud. Les fournisseurs ont déjà commencé à améliorer l'informatique sans serveur en ajoutant des éléments pour la rendre pratique pour les charges de travail professionnelles générales.
Questions fréquentes sur la technologie sans serveur
Qu'est-ce que l'informatique sans serveur ?
L'informatique sans serveur est un modèle de cloud computing dans lequel le fournisseur cloud provisionne et gère l'infrastructure sous-jacente afin que le client puisse se concentrer sur le développement du front-end. L'informatique sans serveur est composée de FaaS et BaaS. Les deux services fonctionnent ensemble pour fournir un environnement flexible qui permet aux développeurs de déployer rapidement du code.
Peut-on avoir un exemple d'informatique sans serveur ?
Un utilisateur à un point de terminaison navigue sur le site Web du client. Ce faisant, il interagit avec deux fonctionnalités sans serveur : BaaS et FaaS. Pour poursuivre sa navigation, l'utilisateur saisit ses informations. La partie BaaS de l'environnement sans serveur effectue l'authentification de l'utilisateur. L'utilisateur continue sa navigation sur le site web et effectue un achat. Il s'agit d'un événement. Cet événement est traité par une API de passerelle, qui invoque une fonction pour envoyer un e-mail de réception. Pour ce faire, le fournisseur cloud lance un conteneur contenant le code d'application et exécute la tâche. Il s'agit de FaaS.
Pourquoi "sans serveur" ?
L'informatique sans serveur est un terme inapproprié qui décrit un environnement de cloud computing dans lequel le fournisseur cloud provisionne et gère les serveurs nécessaires pour exécuter les applications du client. Le client n'a pas de serveurs, il paye le fournisseur cloud pour utiliser les siens.
Glossaire de l'informatique sans serveur
- Passerelle API : une passerelle API (interface de programmation applicative) est un lien de communication qui lit une demande et l'achemine vers un service back-end. Elle traduit ensuite les données back-end à l'utilisateur sur le front-end.
- BaaS : Backend-as-a-Service est un modèle de cloud computing qui utilise un logiciel intégré pour fournir des services tels que l'authentification utilisateur ou le stockage des données. C'est un sous-ensemble de l'informatique sans serveur.
- Cloud computing : le cloud computing fait référence aux modèles informatiques natifs de l'environnement cloud. Tout type d'informatique qui se produit dans un cloud est appelé cloud computing.
- Cloud-native : cloud-native fait référence à toute application ou service conçu spécifiquement pour le cloud. Il prend en compte la scalabilité et l'élasticité d'un environnement cloud.
- Démarrage à froid : un démarrage à froid se produit lorsqu'une fonction est invoquée pour la première fois ou après une période d'inactivité. C'est la première fois que le fournisseur cloud lance un conteneur pour remplir la fonction.
- Conteneur : les conteneurs sont des packages de code légers, portables et autonomes avec leurs dépendances, ce qui leur permet de s'exécuter de manière cohérente sur différents environnements informatiques.
- Architecture pilotée par les événements : l'architecture pilotée par les événements est un modèle d'architecture logicielle qui utilise des événements (demandes, changements d'état, mises à jour) pour déclencher la communication entre les services. Le pilotage par les événements est une approche de programmation, pas un langage de programmation.
- FaaS : Function-as-a-Service est un modèle de cloud computing piloté par les événements qui permet aux développeurs de créer et d'exécuter le front-end sans gérer l'infrastructure back-end.
- Microservices : les microservices sont un type de modèle d'architecture logicielle, dans lequel le logiciel est divisé en services distincts. Ces services communiquent via des API et permettent une flexibilité de développement.
- Multicloud : le multicloud fait référence à plusieurs clouds, tels que Google Cloud, AWS et Microsoft Azure. La plupart des entreprises sont multicloud, ce qui signifie qu'elles utilisent les services de plusieurs fournisseurs cloud en même temps. Par exemple, une entreprise utilise la suite Google Office pour sa messagerie et AWS Lambda pour ses fonctions sans serveur.
- Sans état : sans état fait référence à une caractéristique informatique d'applications, de protocoles ou de processus qui gèrent les opérations de manière indépendante. L'informatique sans serveur, par exemple, est sans état par essence, ce qui signifie qu'aucune donnée n'est conservée entre les invocations.