Serverless : le cloud sans gestion de serveurs
Le serverless (ou "informatique sans serveur") est un modèle d'exécution cloud dans lequel le fournisseur cloud alloue dynamiquement les ressources nécessaires à l'exécution du code. Le développeur n'a plus besoin de provisionner, configurer ou gérer des serveurs.
Comment fonctionne le serverless ?
Dans une architecture serverless, le code est deploye sous forme de fonctions (Functions as à Service ou FaaS). Chaque fonction est declenchee par un événement : une requête HTTP, un message dans une file d'attente, un changement dans une base de données, etc. Le fournisseur cloud :
- Alloue les ressources automatiquement à chaque invocation
- Met a échelle de zéro à des milliers d'instances en quelques secondes
- Facture à l'usage : vous ne payez que le temps d'exécution réel
Les principaux services serverless
- AWS Lambda : le pionnier du FaaS, supporte Node.js, Python, Java, Go, .NET
- Azure Functions : l'equivalent Microsoft avec intégration native a l'écosystème Azure
- Google Cloud Functions : la solution Google, particulièrement adaptée aux workflows evenementiels
- Cloudflare Workers : exécution en edge computing, très faible latence
Avantages du serverless
- Zéro administration : pas de serveurs à maintenir, patcher ou surveiller
- Mise a échelle automatique : de 0 à des millions de requêtes sans intervention
- Coût optimise : facturation à la milliseconde, pas de coût quand le code ne tourne pas
- Time to market : les développeurs se concentrent sur le code métier
Limites et considerations
Le serverless impose des cold starts (temps de démarrage a froid) qui peuvent ajouter de la latence. Les fonctions ont des limites de durée d'exécution (15 minutes sur AWS Lambda). Le debugging et le monitoring sont plus complexes qu'avec des serveurs traditionnels. Le vendor lock-in est aussi un risque réel.
Cas d'usage idéaux
Le serverless excelle pour les APIs REST, le traitement de fichiers (images, vidéos), les webhooks, les tâches planifiees (cron jobs), et les pipelines de données evenementiels. Il est moins adapte aux applications nécessitant des connexions persistantes ou un temps d'exécution long.
Serverless vs conteneurs
Contrairement aux conteneurs (Docker, Kubernetes), le serverless abstrait complètement l'infrastructure. Les conteneurs offrent plus de contrôle mais demandent plus de gestion. Beaucoup d'architectures modernes combinent les deux approches selon les besoins de chaque composant.