Aller au contenu
Conteneurs & Orchestration medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Serverless : comprendre le modèle sans serveur

12 min de lecture

Le serverless ne signifie pas « sans serveur » : il signifie que l’infrastructure d’exécution est largement abstraite pour le développeur. Dans les offres managées (AWS Lambda, Google Cloud Functions), cela s’accompagne souvent d’une facturation à l’usage réel. Dans des plateformes open source comme Knative sur Kubernetes, l’intérêt principal est le déploiement simplifié, le scaling automatique et le scale-to-zero — mais vous continuez à payer votre cluster. Ce guide explique les concepts fondamentaux du serverless, le modèle FaaS, l’architecture event-driven et Knative — la solution serverless open source pour Kubernetes.

Le serverless fait partie des concepts cloud native utiles à connaître pour la KCNA, en particulier dans le domaine Architecture. Ce guide reste conceptuel — aucune installation n’est nécessaire.

  • Ce que signifie serverless et ce que ce n’est pas
  • La distinction entre BaaS (Backend as a Service) et FaaS (Function as a Service)
  • Le fonctionnement du scale-to-zero et ses implications
  • Le modèle event-driven au cœur du serverless
  • Knative : le serverless cloud native sur Kubernetes
  • Les limites du serverless et quand préférer d’autres approches

Le terme « serverless » prête à confusion. Évidemment, des serveurs existent quelque part — mais le développeur ne les voit pas, ne les provisionne pas et ne les gère pas. Le contrat est simple : vous fournissez du code, la plateforme s’occupe du reste.

Ce modèle existe sous deux formes :

ModèleDéfinitionExemple
BaaS (Backend as a Service)Des services managés qui remplacent des composants côté serveur (base de données, authentification, stockage)Firebase, Auth0, Amazon DynamoDB
FaaS (Function as a Service)Vous déployez des fonctions individuelles qui s’exécutent en réponse à des événementsAWS Lambda, Google Cloud Functions, Knative Functions

Dans le contexte de la KCNA et du cloud native, c’est le modèle FaaS qui est le plus pertinent.

Function as a Service (FaaS) : le cœur du serverless

Section intitulée « Function as a Service (FaaS) : le cœur du serverless »

Le modèle FaaS repose sur une idée simple : du point de vue du développeur, l’unité logique de déploiement devient la fonction. En dessous, la plateforme peut tout à fait utiliser des conteneurs pour l’exécuter — mais le développeur n’a pas à s’en soucier.

  1. Vous écrivez une fonction — un morceau de code qui prend un événement en entrée, le traite et retourne un résultat
  2. Vous la déployez sur la plateforme FaaS — sans vous soucier de l’infrastructure
  3. Un événement arrive (requête HTTP, message dans une file, changement de fichier…)
  4. La plateforme provisionne automatiquement une instance pour exécuter votre fonction
  5. La fonction s’exécute, renvoie le résultat et l’instance peut être réutilisée ou détruite
  6. Sans événement, aucune instance ne tourne — c’est le scale-to-zero
CaractéristiqueDescription
StatelessChaque invocation est indépendante — pas d’état partagé entre deux exécutions (principe stateless and share-nothing des 12-factor apps)
ÉphémèreLes instances de fonction ont une durée de vie courte (secondes à minutes)
Event-drivenL’exécution est déclenchée par un événement, pas par un processus qui tourne en permanence
Scaling automatiqueDe zéro à des milliers d’instances, géré par la plateforme
Facturation à l’usageDans les offres managées, vous payez le temps d’exécution réel — avec Knative auto-hébergé, l’économie vient du scale-to-zero sur les ressources du cluster

Le scale-to-zero est la caractéristique qui distingue fondamentalement le serverless du déploiement conteneur classique.

Dans un déploiement Kubernetes classique, un Deployment maintient un nombre minimum de pods en permanence, même si aucune requête n’arrive. Avec le scale-to-zero, quand aucune requête n’est reçue pendant un temps configurable, la plateforme détruit toutes les instances. Le nombre de pods tombe littéralement à zéro.

Quand une nouvelle requête arrive, la plateforme crée une instance, l’initialise et route la requête vers elle. Ce processus d’initialisation s’appelle le cold start (démarrage à froid).

AspectDéploiement classiqueServerless (scale-to-zero)
Pods au reposNombre minimum configuré (1+)0 — aucun pod
Coût au reposRessources consommées en permanenceAucun coût
Temps de réponseImmédiat (pods déjà prêts)Cold start possible (de quelques ms à plusieurs secondes)
ScalingHPA réagit aux métriques, avec délaiScaling rapide déclenché par requête

Le serverless est intrinsèquement lié à l’architecture event-driven (pilotée par les événements). Au lieu d’un serveur qui attend en permanence des requêtes, des événements déclenchent l’exécution du code.

Source d’événementExemples concrets
Requête HTTPUn utilisateur envoie un formulaire
Message queueUn message arrive dans Kafka, RabbitMQ ou SQS
Changement de donnéesUn objet est ajouté dans un bucket S3, une ligne modifiée dans une base
Timer / cronUne tâche planifiée (nettoyage quotidien, rapport hebdomadaire)
Événement KubernetesUn pod est créé, un ConfigMap modifié

Pour éviter que chaque fournisseur définisse son propre format d’événement, la CNCF a créé la spécification CloudEvents — un format standard pour décrire les événements de façon interopérable. CloudEvents est un projet CNCF graduated.

Un CloudEvent contient au minimum :

  • source : d’où vient l’événement (ex: /myapp/orders)
  • type : quel type d’événement (ex: order.created)
  • id : identifiant unique
  • data : le contenu de l’événement

Ce standard permet de connecter des sources d’événements et des consommateurs de façon indépendante du fournisseur cloud.

Knative est une plateforme open source graduated par la CNCF qui apporte les capacités serverless à Kubernetes, notamment le scale-to-zero, le routage HTTP et l’event-driven. Créé par Google en 2018, accepté en incubation en 2022 puis promu graduated en septembre 2025, Knative permet de déployer et scaler automatiquement des workloads serverless sur n’importe quel cluster Kubernetes, sans lock-in vers un fournisseur cloud.

Knative se compose de trois composants principaux :

Knative Serving gère le cycle de vie complet des workloads HTTP : déploiement, scaling automatique (y compris scale-to-zero), routage et traffic splitting.

Les concepts clés de Serving :

ConceptRôle
ServiceRessource principale — gère automatiquement les Routes, Configurations et Revisions
RevisionSnapshot immutable du code + configuration à un instant T. Chaque mise à jour crée une nouvelle Revision
RouteMappe un endpoint réseau vers une ou plusieurs Revisions (traffic splitting)
ConfigurationMaintient l’état désiré du déploiement

Concrètement, quand vous déployez un Knative Service :

  1. La plateforme crée une Revision (version immutable)
  2. Si aucun trafic n’arrive, le nombre de pods tombe à zéro
  3. À la première requête, l’Activator intercepte la requête, demande au scaler de créer des pods
  4. Le pod démarre, le queue-proxy (sidecar léger) gère la concurrence et collecte les métriques
  5. Si le trafic augmente, le scaler crée des pods supplémentaires automatiquement

Knative Eventing fournit l’infrastructure pour l’architecture event-driven. Il gère le routage d’événements entre producteurs et consommateurs en utilisant le standard CloudEvents.

Les concepts clés d’Eventing :

ConceptRôle
SourceProduit des événements depuis un système externe (Kafka, API Kubernetes, timer…)
BrokerRéceptionne les événements et les route vers les consommateurs intéressés
TriggerFiltre les événements par attributs CloudEvents et les délivre au bon consommateur
SinkConsommateur qui reçoit et traite les événements

Knative Functions ajoute une expérience développeur plus simple pour exposer des fonctions sur Knative, en générant automatiquement les artefacts nécessaires (image conteneur, manifeste Kubernetes) à partir du code source — sans écrire de Dockerfile.

Le serverless n’est pas un remplacement des conteneurs — c’est une abstraction au-dessus. En fait, Knative déploie vos fonctions sous forme de conteneurs dans Kubernetes. La question est le niveau d’abstraction souhaité.

CritèreConteneurs (Deployment K8s)Serverless (FaaS / Knative)
Unité de déploiementImage conteneur + manifesteFonction ou service HTTP
ScalingManuel ou HPA (min 1 pod)Automatique, incluant scale-to-zero
Coût au reposPods consomment des ressourcesZéro coût quand aucune requête
Cold startAucun (pods déjà prêts)Possible (de 100 ms à quelques secondes)
Workloads adaptésServices longue durée, trafic constantTâches événementielles, trafic variable ou intermittent
ContrôleTotal (réseau, stockage, runtime)Réduit (abstraction de l’infrastructure)
Complexité opérationnelleMoyenne (vous gérez les Deployments)Supérieure au début (Knative à installer), puis inférieure au quotidien
  • APIs avec trafic variable : un service qui reçoit beaucoup de requêtes le jour et aucune la nuit
  • Traitement événementiel : un pipeline qui réagit à l’upload d’un fichier, un message Kafka, un webhook
  • Tâches planifiées : nettoyage de données, génération de rapports, envoi d’e-mails
  • Prototypage rapide : déployer un service sans se préoccuper de l’infrastructure
  • Environnements de développement : scale-to-zero pour économiser les ressources
  • Processus long (> 10-15 minutes) : les fonctions ont une durée d’exécution limitée
  • Workloads avec état : bases de données, caches persistants, systèmes de fichiers
  • Trafic constant et prévisible : le scale-to-zero n’apporte rien si les pods tournent en permanence
  • Latence ultra-faible requise : le cold start est un risque pour les applications temps réel
  • Applications avec beaucoup de connexions persistantes : WebSockets, gRPC streaming
  • Serverless signifie que l’infrastructure est abstraite — le développeur ne gère ni serveurs ni scaling
  • Le modèle FaaS (Function as a Service) exécute du code à la demande, en réponse à des événements
  • Le scale-to-zero distingue le serverless du déploiement classique : zéro pod quand il n’y a pas de trafic, mais attention au cold start
  • L’architecture event-driven est au cœur du serverless : les événements (HTTP, messages, cron) déclenchent l’exécution
  • CloudEvents (CNCF graduated) standardise le format des événements pour l’interopérabilité
  • Knative (CNCF graduated) apporte le serverless à Kubernetes : Serving (scale-to-zero), Eventing (routage événementiel), Functions (expérience simplifiée)
  • Le serverless est idéal pour les workloads événementiels et intermittents ; pour les services à trafic constant ou les processus longs, les conteneurs classiques restent plus adaptés

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn