Serverless : le cloud sans gestion de serveurs
Le serverless (ou "informatique sans serveur") est un modele d'execution cloud dans lequel le fournisseur cloud alloue dynamiquement les ressources necessaires a l'execution du code. Le developpeur n'a plus besoin de provisionner, configurer ou gerer des serveurs.
Comment fonctionne le serverless ?
Dans une architecture serverless, le code est deploye sous forme de fonctions (Functions as a Service ou FaaS). Chaque fonction est declenchee par un evenement : une requete HTTP, un message dans une file d'attente, un changement dans une base de donnees, etc. Le fournisseur cloud :
- Alloue les ressources automatiquement a chaque invocation
- Met a echelle de zero a des milliers d'instances en quelques secondes
- Facture a l'usage : vous ne payez que le temps d'execution reel
Les principaux services serverless
- AWS Lambda : le pionnier du FaaS, supporte Node.js, Python, Java, Go, .NET
- Azure Functions : l'equivalent Microsoft avec integration native a l'ecosysteme Azure
- Google Cloud Functions : la solution Google, particulierement adaptee aux workflows evenementiels
- Cloudflare Workers : execution en edge computing, tres faible latence
Avantages du serverless
- Zero administration : pas de serveurs a maintenir, patcher ou surveiller
- Mise a echelle automatique : de 0 a des millions de requetes sans intervention
- Cout optimise : facturation a la milliseconde, pas de cout quand le code ne tourne pas
- Time to market : les developpeurs se concentrent sur le code metier
Limites et considerations
Le serverless impose des cold starts (temps de demarrage a froid) qui peuvent ajouter de la latence. Les fonctions ont des limites de duree d'execution (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 reel.
Cas d'usage ideaux
Le serverless excelle pour les APIs REST, le traitement de fichiers (images, videos), les webhooks, les taches planifiees (cron jobs), et les pipelines de donnees evenementiels. Il est moins adapte aux applications necessitant des connexions persistantes ou un temps d'execution long.
Serverless vs conteneurs
Contrairement aux conteneurs (Docker, Kubernetes), le serverless abstrait completement l'infrastructure. Les conteneurs offrent plus de controle mais demandent plus de gestion. Beaucoup d'architectures modernes combinent les deux approches selon les besoins de chaque composant.