Le serverless, qu'est-ce que c'est ?
Le serverless est un modèle de développement cloud-native qui permet de créer et d'exécuter des applications sans avoir à gérer des serveurs. Le terme « serverless » ne suggère pas l'absence de serveurs. Il signifie que les serveurs sont dissociés du développement d'applications. Un fournisseur de cloud se charge du travail de routine : il effectue le provisionnement de l'infrastructure de serveurs, et assure son bon fonctionnement ainsi que sa mise à l'échelle.
Avec le serverless, les équipes de développement mettent en paquets leur code dans des conteneurs pour déployer les applications. Une fois déployées, les applications serverless répondent à la demande et s'adaptent automatiquement en fonction des besoins. En général, les offres serverless des fournisseurs de cloud public sont facturées à la demande, sur la base d'un modèle d'exécution orienté événements. Par conséquent, lorsqu'une fonction serverless est inactive, elle ne coûte rien.
Différences entre l'informatique serverless et l'architecture serverless
Si les termes « informatique serverless » et « architecture serverless » sont souvent employés l'un pour l'autre, ils désignent deux concepts distincts. L'informatique serverless se rapporte au modèle de développement des applications, tandis que l'architecture serverless désigne l'approche adoptée pour leur conception.
Informatique serverless
L'informatique serverless se distingue des autres modèles de cloud computing, car le fournisseur de cloud est non seulement responsable de la gestion de l'infrastructure cloud, mais aussi de la mise à l'échelle des applications. Les applications sont exécutées sur des ressources de calcul gérées automatiquement et fournies par des fournisseurs de cloud, ce qui évite à l'utilisateur d'avoir à provisionner et gérer des serveurs. L'informatique serverless est orientée événements, évolue automatiquement et suit généralement un modèle de paiement à l'utilisation. Les applications serverless sont déployées dans des conteneurs qui démarrent automatiquement sur simple demande.
Dans un modèle standard de cloud computing IaaS (Infrastructure-as-a-Service), les utilisateurs achètent à l'avance des unités de capacité. Ainsi, ils paient un fournisseur de cloud public pour des composants de serveur actifs en permanence pour l'exécution de leurs applications. Il incombe à l'utilisateur d'augmenter la capacité du serveur pendant les périodes de forte demande et de la réduire lorsque cette capacité n'est plus nécessaire. L'infrastructure cloud reste active même lorsque l'application n'est pas utilisée.
Types d'informatique serverless
Il existe plusieurs catégories d'informatique serverless :
- Function-as-a-Service (FaaS) : le FaaS exécute des fonctions orientées événements dans des conteneurs éphémères. Il évite d'avoir à gérer les instances de serveur et s'exécute uniquement lorsqu'il est déclenché.
- Backend-as-a-Service (BaaS) : le BaaS offre des services back-end entièrement gérés qui couvrent l'authentification, les bases de données, la messagerie et le stockage. Ce modèle est souvent utilisé pour les applications web et mobiles.
- Bases de données serverless : ces bases de données sont automatiquement mises à l'échelle et ne nécessitent aucune gestion de l'infrastructure.
- Conteneurs serverless : ces conteneurs ne nécessitent aucun provisionnement manuel et se mettent à l'échelle de façon dynamique.
- Edge computing serverless : avec l'edge computing serverless, le code s'exécute plus près des utilisateurs afin de réduire la latence.
Architecture serverless
Une architecture serverless désigne une approche de conception où les applications ne sont lancées que lorsqu'elles sont nécessaires. Quand un événement déclenche l'exécution d'un code d'application, le fournisseur de cloud public alloue des ressources pour ce code. L'utilisateur cesse de payer une fois le code exécuté. Avec le serverless, les équipes de développement ne gèrent plus les tâches de mise à l'échelle des applications et de provisionnement des serveurs. Un fournisseur de services cloud s'occupe de toutes les tâches courantes telles que la gestion du système d'exploitation et du système de fichiers, l'application des correctifs de sécurité, l'équilibrage de charge et la gestion de la capacité. Il est également possible de créer une application entièrement serverless ou une application qui intègre des composants de type microservice en partie serverless et en partie traditionnels.
Les microservices serverless désignent une architecture serverless qui utilise des composants de type microservice. Grâce à ces microservices, l'architecture serverless permet aux équipes de développement d'écrire du code pendant que les microservices divisent l'application en composants plus petits et faciles à gérer. L'association de ces deux éléments peut ainsi accélérer le développement et le déploiement.
Ressources Red Hat
Avantages et inconvénients du serverless
Avantages
- Délégation des tâches de gestion de serveurs : les équipes de développement ne gèrent plus le provisionnement, la gestion et la mise à l'échelle des serveurs et peuvent se concentrer sur leurs applications.
- Meilleure rentabilité : avec la facturation à l'utilisation, les entreprises ne paient que pour le temps d'exécution réel des fonctions, ce qui réduit les coûts associés aux ressources inactives.
- Accélération du développement et du déploiement : la diminution des tâches de gestion de l'infrastructure et de configuration des déploiements augmente la productivité des équipes de développement.
- Mise à l'échelle automatique : les fonctions et les services sont redimensionnés automatiquement en fonction de la demande.
- Sécurité intégrée : les mises à jour et les correctifs sont gérés par le fournisseur, ce qui réduit les risques associés à une mauvaise configuration des serveurs.
Inconvénients
- Complexité de l'architecture : la complexité des workflows orientés événements augmente lorsque plusieurs fonctions interagissent de manière asynchrone.
- Contraintes liées à l'interaction : certains fournisseurs de cloud imposent des limites quant à l'utilisation de leurs composants, ce qui réduit la flexibilité des entreprises.
- Dépendance vis-à-vis d'un fournisseur : une intégration étroite entre les services serverless et les écosystèmes des fournisseurs de cloud peut compliquer la migration.
Cas d'utilisation du serverless
L'architecture serverless est idéale pour les applications asynchrones et stateless qui peuvent être lancées instantanément. Elle est également adaptée pour faire face aux pics de demande peu fréquents et imprévisibles.
Le traitement par lots de fichiers images entrants est un bon exemple. Même si cette tâche ne survient qu'occasionnellement, il faut être prêt lorsqu'un grand nombre d'images arrivent en une seule fois. Autre exemple : la surveillance des modifications apportées à une base de données et l'application d'une série de fonctions, pour vérifier le respect des normes de qualité ou traduire automatiquement les données.
En outre, les applications serverless conviennent bien aux cas d'utilisation basés sur des flux de données entrants, des dialogueurs (ou chatbots), des tâches programmées ou une logique métier.
Parmi les cas fréquents d'utilisation du serverless figurent également les interfaces de programmation d'application (API) back-end et les applications web, l'automatisation des processus métier, les sites web serverless et l'intégration à plusieurs systèmes.
Rôle du FaaS et du fournisseur de cloud
Dans un modèle serverless, un fournisseur de cloud exploite des serveurs physiques et alloue leurs ressources pour le compte d'utilisateurs qui peuvent déployer le code directement en production.
Le FaaS est le modèle serverless le plus courant. Il se concentre sur les fonctions orientées événements et permet aux équipes de développement d'écrire la logique personnalisée côté serveur qui est déployée dans des conteneurs entièrement gérés par un fournisseur de services cloud. Ces conteneurs présentent les caractéristiques suivantes :
- Ils sont stateless, ce qui simplifie l'intégration des données.
- Ils sont éphémères, ce qui permet de les exécuter pendant une très courte période.
- Ils sont déclenchés par un événement et s'exécutent donc automatiquement en cas de besoin.
- Ils sont entièrement gérés, de sorte que l'utilisateur paie uniquement les ressources qu'il consomme.
Avec le FaaS, les équipes de développement disposent d'un meilleur niveau de contrôle et peuvent appeler des fonctions avec des API gérées par le fournisseur de cloud par l'intermédiaire d'une passerelle d'API.
Les principaux fournisseurs de cloud proposent des solutions FaaS, notamment AWS Lambda, Azure Functions, Google Cloud et IBM Cloud Functions. Certaines entreprises utilisent des plateformes Open Source telles que Red Hat® OpenShift® Serverless, qui repose sur Knative, pour exécuter leurs environnements FaaS.
L'équivalent back-end du FaaS, le BaaS, permet aux équipes de développement d'accéder à des services tiers tels que l'authentification, le chiffrement et les bases de données, généralement par le biais d'API. Il facilite les tâches de back-end, mais offre moins de contrôle sur la logique d'application personnalisée.
Définition de Knative
Kubernetes est une plateforme couramment utilisée pour la gestion des applications conteneurisées. Elle ne permet toutefois pas une prise en charge native des charges de travail serverless. Knative est un projet Open Source qui ajoute les composants nécessaires au déploiement, à l'exécution et à la gestion des applications serverless sur Kubernetes.
Knative permet la mise en place d'environnements serverless en facilitant le déploiement de code sur les plateformes Kubernetes, comme Red Hat OpenShift. Le code est mis en paquets dans une image de conteneurs, puis le système démarre et arrête les instances automatiquement selon la demande.
Knative compte trois principaux composants :
- Build : convertit le code source en conteneurs.
- Serving : permet le déploiement et la mise à l'échelle automatiques des conteneurs en fonction d'une demande issue d'une requête.
- Eventing : gère les événements issus de plusieurs sources telles que les applications, les services cloud, les systèmes SaaS et les flux associés à Apache Kafka pour déclencher des fonctions.
Contrairement aux solutions serverless traditionnelles, Knative assure la prise en charge de différentes charges de travail, des applications monolithiques aux microservices, en passant par les fonctions mineures. Il peut s'exécuter sur toutes les plateformes reposant sur Kubernetes, y compris les environnements sur site.
Knative offre des avantages clés :
- Prise en charge des microservices et des charges de travail serverless. Les entreprises peuvent déployer des fonctions stateless orientées événements au sein de Kubernetes. Elles peuvent également déployer des microservices de longue durée avec mise à l'échelle dynamique sans avoir à gérer manuellement les instances de serveur.
- Optimisation des coûts et de l'utilisation des ressources. Contrairement aux microservices traditionnels dans lesquels des pods s'exécutent potentiellement sans interruption, Knative désalloue les ressources en l'absence de requêtes, réduisant ainsi les coûts.
- Standardisation des API et flexibilité. Knative se base sur des modèles natifs pour Kubernetes et est compatible avec les solutions de différents fournisseurs de cloud.
Knative permet d'exploiter l'informatique serverless sur les systèmes Kubernetes, ce qui facilite le déploiement et la gestion des charges de travail serverless.
Nos solutions
Avec la solution Red Hat OpenShift Serverless, vous pouvez accélérer la création et le déploiement d'applications serverless sans avoir à vous soucier de la gestion de l'infrastructure.Elle offre une plateforme serverless professionnelle qui augmente la portabilité et la cohérence dans les environnements hybrides et multicloud.
Avec OpenShift Serverless, vos équipes de développement peuvent ainsi créer des applications cloud-native centrées sur la source à l'aide d'un ensemble de définitions de ressources personnalisées et des contrôleurs associés dans Kubernetes. Cette solution facilite également le travail des équipes d'exploitation puisqu'elle s'installe facilement sur Red Hat OpenShift, qu'elle a été testée avec d'autres produits Red Hat et qu'elle donne accès à notre service d'assistance primé.
OpenShift Serverless offre une solution complète de développement et de déploiement d'applications serverless avec d'autres services Red Hat OpenShift Container Platform, comme Red Hat OpenShift Service Mesh et la surveillance du cluster. Une plateforme unique suffit alors à héberger toutes vos applications de microservices, existantes et serverless. Les applications se présentent sous la forme de conteneurs Linux® qui s'exécutent dans n'importe quel environnement.
Le blog officiel de Red Hat
Découvrez les dernières informations concernant notre écosystème de clients, partenaires et communautés.