Définition du serverless
Le serverless est un modèle de développement cloud-native qui permet aux équipes de développement de créer et d'exécuter des applications sans avoir à 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. Le terme « architecture serverless » désigne une approche de conception selon laquelle les applications sont lancées uniquement lorsqu'elles sont nécessaires.
Avec le serverless, les équipes de développement mettent en paquet leur code dans des conteneurs pour déployer des applications. Une fois déployées, ces applications serverless répondent à la demande et se redimensionnent automatiquement en cas de besoin. 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, une fonction serverless inactive ne coûte rien.
Le terme « serverless » ne signifie pas qu'il n'y a pas de serveur, mais que les serveurs sont dissociés du développement d'applications. C'est le fournisseur cloud qui s'occupe des tâches courantes de provisionnement, de maintenance et de mise à l'échelle de l'infrastructure du serveur. Dans un modèle serverless, un fournisseur cloud exploite des serveurs physiques et alloue leurs ressources pour le compte d'utilisateurs qui peuvent déployer le code directement en production.
Différences entre l'informatique serverless et l'architecture serverless
L'informatique serverless se rapporte au modèle de développement des applications, tandis que l'architecture serverless renvoie à l'approche adoptée pour leur conception. Si les termes « informatique serverless » et « architecture serverless » sont souvent employés l'un pour l'autre, ils désignent deux concepts distincts.
Informatique serverless
L'informatique serverless se distingue des autres modèles de cloud computing, car le fournisseur 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 cloud, ce qui évite à l'utilisateur d'avoir à provisionner et gérer des serveurs. 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 de type IaaS (Infrastructure-as-a-Service), les utilisateurs achètent à l'avance des unités de capacité. Ils paient donc 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 :
- FaaS (Function-as-a-Service) : le modè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 les fonctions s'exécutent uniquement lorsqu'elles sont déclenchées.
- BaaS (Backend-as-a-Service) : ce modèle offre des services back-end entièrement gérés qui couvrent l'authentification, les bases de données, la messagerie et le stockage. Il 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 ce modèle d'edge computing, le code s'exécute plus près des utilisateurs afin de réduire la latence.
Architecture serverless
Quand un événement déclenche l'exécution du code d'une 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.
Lorsqu'une architecture serverless utilise des composants de type microservice, on parle de microservices serverless. 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 des 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.
- 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 selon la demande.
- Sécurité intégrée : les mises à jour et les correctifs de sécurité 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 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 cloud peut compliquer la migration.
Cas d'utilisation du serverless
Parmi les cas fréquents d'utilisation du serverless figurent 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'association de plusieurs systèmes.
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.
Par exemple, pour le traitement par lots de fichiers images entrants : même si cette tâche reste occasionnelle, le système doit ê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.
Rôle du FaaS et du fournisseur de services cloud
Le FaaS (Function-as-a-Service) est un modèle serverless courant, axé sur les fonctions orientées événements. Il 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 cloud par l'intermédiaire d'une passerelle d'API.
Les principaux fournisseurs 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.
Présentation de Knative
Kubernetes est une plateforme couramment utilisée pour la gestion des applications conteneurisées. Elle ne permet toutefois pas une exécution 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 paquet dans une image de conteneur, 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 (Software-as-a-Service) et les flux associés à Apache Kafka pour déclencher des fonctions.
Contrairement aux solutions serverless traditionnelles, Knative est compatible avec diverses 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 :
- Exécution des microservices et des charges de travail serverless : les équipes peuvent déployer des fonctions stateless orientées événements dans 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 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, il est possible d'accélérer la création et le déploiement d'applications serverless sans avoir à se soucier de la gestion de l'infrastructure. Cette plateforme serverless professionnelle augmente la portabilité et la cohérence dans les environnements hybrides et multicloud.
Avec OpenShift Serverless, les équipes de développement peuvent 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 en association avec d'autres services Red Hat OpenShift Container Platform, comme Red Hat OpenShift Service Mesh et la surveillance du cluster. Les équipes disposent ainsi d'une plateforme unique pour héberger toutes les applications de microservices, existantes et serverless. Les applications se présentent sous la forme de conteneurs Linux® qui s'exécutent dans tous les environnements.
15 bonnes raisons d'adopter Red Hat OpenShift Virtualization
Découvrez comment Red Hat OpenShift Virtualization peut unifier et simplifier vos processus d'exploitation informatique, avec une plateforme unique pour les machines virtuelles et les conteneurs.