C'est quoi le Serverless
Mise à jour :
Dans ce guide, nous allons explorer le concept de serverless. Nous verrons comment il fonctionne, ses avantages et ses limites, ainsi que les cas d’usage les plus courants. Que vous soyez développeur, architecte ou simplement curieux, ce guide vous donnera une compréhension claire de ce modèle innovant.
Qu’est‑ce que le serverless ?
Le terme serverless désigne une approche de l’informatique dans le cloud où les développeurs n’ont pas à gérer de serveurs physiques ou virtuels. Cela ne signifie pas qu’il n’y a pas de serveurs, mais que leur gestion est entièrement abstraite par le fournisseur (comme AWS, Azure ou Google Cloud).
Concrètement, vous écrivez une fonction, vous la déployez, et elle s’exécute automatiquement à la demande, sans se soucier de l’infrastructure sous-jacente. Le code est souvent déclenché par un événement (requête HTTP, ajout de fichier, tâche planifiée…) et s’arrête une fois la tâche accomplie.
Cette approche est classée comme FaaS (Function as a Service). Elle favorise une grande agilité, réduit les coûts et permet une scalabilité automatique. C’est une solution idéale pour des tâches simples, rapides et ponctuelles.
Comment ça fonctionne ?
Le modèle serverless repose sur l’exécution de fonctions éphémères, déclenchées par des événements dont voici un diagramme illustratif :
Ce diagramme illustre le fonctionnement d’un traitement serverless typique, présenté de manière linéaire et claire :
- Utilisateur ou système : le processus commence lorsqu’un utilisateur (ex. : visiteur web) ou un système (ex. : IoT, tâche planifiée) déclenche un événement.
- Déclencheur : il peut s’agir d’une requête HTTP, d’un fichier ajouté à un espace de stockage, d’un message dans une file d’attente, ou encore d’une tâche planifiée (cron). Ce déclencheur active automatiquement une fonction serverless.
- Service serverless : un fournisseur cloud (comme AWS Lambda, Azure Functions, etc.) prend en charge le démarrage de la fonction, en allouant automatiquement les ressources nécessaires.
- Exécution de la fonction : le code est exécuté de manière isolée et temporaire, pour effectuer une tâche précise (calcul, transformation, validation…).
- Interaction externe : la fonction peut interagir avec d’autres services, comme une base de données, un service API, ou un système de stockage.
- Résultat : une fois la tâche accomplie, le résultat est soit retourné à l’utilisateur, soit stocké pour un traitement ultérieur. La fonction s’arrête ensuite automatiquement.
Comment créer une fonction serverless ?
Créer une fonction serverless est généralement simple et rapide. Voici les étapes typiques :
- Choisir un fournisseur cloud : AWS, Azure, Google Cloud, etc. Chaque plateforme propose des services serverless avec des spécificités.
- Sélectionner un langage : la plupart des fournisseurs supportent plusieurs langages (JavaScript, Python, Java, Go, etc.). Choisissez celui qui convient le mieux à votre projet.
- Écrire la fonction : le code doit être écrit de manière à répondre à l’événement déclencheur. Par exemple, une fonction qui traite une requête HTTP doit être capable de recevoir des paramètres et de retourner une réponse.
- Définir les déclencheurs : configurez les événements qui activeront la fonction. Cela peut être une requête HTTP, un fichier ajouté à un stockage cloud, ou un message dans une file d’attente.
- Déployer la fonction : utilisez les outils du fournisseur pour déployer la fonction. Cela peut se faire via une interface web, une ligne de commande ou des scripts d’automatisation.
- Tester et surveiller : une fois déployée, testez la fonction pour vous assurer qu’elle fonctionne comme prévu. Utilisez les outils de surveillance du fournisseur pour suivre les performances et les erreurs.
Avantages du serverless
L’approche serverless séduit par sa simplicité d’usage et ses nombreux bénéfices opérationnels :
- Pas d’infrastructure à gérer : inutile de configurer, maintenir ou surveiller des serveurs. Le fournisseur s’en charge entièrement.
- Scalabilité automatique : les fonctions s’adaptent instantanément au trafic. Un pic de 100 appels par seconde ? Le système scale sans intervention.
- Tarification à l’usage réel : vous ne payez que lorsque vos fonctions sont appelées. Fini les coûts liés à des serveurs inactifs ou sous-utilisés.
- Déploiement rapide : vous vous concentrez uniquement sur le code. Les cycles de développement sont plus courts, avec des mises en production plus fréquentes.
- Résilience intégrée : les fournisseurs cloud assurent généralement la haute disponibilité et la redondance, sans configuration particulière.
En somme, le serverless simplifie le quotidien des développeurs, tout en réduisant les coûts et en améliorant la réactivité face aux changements.
Limites à connaître
Malgré ses nombreux atouts, le serverless comporte aussi des contraintes qu’il faut anticiper :
- Cold start : lorsqu’une fonction n’a pas été utilisée depuis un moment, son démarrage peut prendre quelques centaines de millisecondes supplémentaires. Ce délai peut impacter les performances, surtout pour des applications sensibles à la latence.
- Durée d’exécution limitée : chaque fournisseur impose une durée maximale par exécution (par exemple, 15 minutes sur AWS Lambda). Les traitements longs ou complexes sont donc inadaptés.
- Ressources restreintes : les fonctions ont une mémoire, un processeur et un espace disque temporaire limités. Cela contraint certains usages gourmands.
- Complexité d’orchestration : construire une application complète avec des dizaines de fonctions nécessite une bonne gestion des flux, des erreurs et des dépendances.
- Verrouillage fournisseur : le code, les configurations et les services utilisés sont souvent propres à une plateforme cloud. Changer de fournisseur peut impliquer des réécritures importantes.
Le serverless n’est donc pas une solution universelle. Il convient particulièrement aux tâches simples, fréquentes ou événementielles, mais moins aux applications nécessitant un contrôle fin ou des traitements lourds.
Cas d’usage fréquents
Le serverless est particulièrement adapté aux tâches ponctuelles, événementielles ou à fort pic de trafic. Voici quelques scénarios courants :
- Traitement de fichiers : redimensionner une image, convertir un document PDF ou extraire des métadonnées dès qu’un fichier est déposé dans un stockage cloud.
- APIs légères : créer une API RESTful ou GraphQL rapide, sans maintenir de serveur. Chaque endpoint peut être une fonction indépendante.
- Automatisations planifiées (cron) : exécuter une tâche à intervalles réguliers (nettoyage de base de données, synchronisation de données, rapports automatisés).
- Envoi de notifications : déclencher un e-mail ou une alerte push dès qu’un événement est détecté (nouvel utilisateur, échec de paiement, etc.).
- IoT : traiter en temps réel les données issues de capteurs connectés (température, mouvement, géolocalisation).
- Webhooks et intégrations : réagir aux événements de services tiers comme GitHub, Stripe ou Slack via des fonctions personnalisées.
Le serverless excelle là où la réactivité, la modularité et le coût à la demande sont essentiels. Il permet d’automatiser efficacement une grande variété de processus métier sans alourdir l’infrastructure.
Ces outils permettent de tirer le meilleur du modèle serverless, selon vos besoins : cloud public, edge computing, déploiement rapide, ou infrastructure privée.
Outils & écosystème
Le serverless dispose d’un large éventail d’outils et de plateformes pour développer, déployer et superviser vos fonctions :
- AWS Lambda ↗ : le service le plus connu. Il s’intègre avec plus de 200 services AWS et supporte plusieurs langages (Node.js, Python, Java, Go…).
- Azure Functions ↗ : offre équivalente chez Microsoft, avec une forte intégration à l’écosystème Azure et Visual Studio.
- Google Cloud Functions ↗ : adaptée aux projets Google Cloud, elle permet aussi de construire des architectures événementielles avec Pub/Sub et Cloud Storage.
- Cloudflare Workers ↗ : plateforme edge serverless, idéale pour des traitements très rapides en périphérie du réseau.
- Vercel Functions ↗ / Netlify Functions ↗ : pour les développeurs web. Permet de déployer très simplement des fonctions backend avec des frameworks frontend (Next.js, React…).
- Serverless Framework ↗ : outil open source pour gérer le déploiement de fonctions sur différents clouds. Il simplifie la configuration, l’organisation et la publication.
- OpenFaaS ↗ / Knative ↗ : alternatives open source pour exécuter du serverless sur votre propre infrastructure ou avec Kubernetes.
Ces outils permettent de tirer le meilleur du modèle serverless, selon vos besoins : cloud public, edge computing, déploiement rapide, ou infrastructure privée.
Conclusion
Le serverless transforme la manière de concevoir et déployer des applications dans le cloud. En supprimant la gestion des serveurs, il permet de se concentrer sur l’essentiel : le code et la logique métier.
Mais comme toute approche, il a ses forces et ses limites. Il convient parfaitement aux tâches simples, rapides et découplées, mais reste moins adapté aux traitements longs ou aux environnements complexes.