En réduisant la complexité sur certains aspects, l'informatique serverless introduit de nouvelles problématiques, comme l’absence de standards ouverts de compatibilité entre plateformes. Cette technologie à fort potentiel doit s'adapter de façon précise aux objectifs de chaque entreprise.
Se concentrer sur le code, pas sur les serveurs
Le serverless permet aux développeurs de déployer des composants applicatifs modulaires et autonomes sous forme de fonctions ou de containers et de déléguer au fournisseur l’intégralité de l’infrastructure et du middleware. Ce modèle, facile à mettre en œuvre, offre une grande vélocité, du codage au déploiement en production, avec une autonomie maximale pour les développeurs. Sa facturation reflète l’exacte durée de l’utilisation des ressources, contrairement aux politiques de coûts fixes, et sa gestion automatique offre une grande souplesse et peu de planification pour les variations de charge. Il convient parfaitement au développement rapide de code avec un temps d’exécution court tel que des microservices Web et l’automatisation des processus IT et applicatifs dans le cloud. Son usage augmente rapidement, même si encore peu d'architectures l'utilisent pour gérer leur cœur d'applications.
En contrepartie de sa simplicité et de son agilité de développement, le serverless augmente les dépendances et les interfaces et complexifie la structure globale du système et le suivi du comportement et de la performance des applications en production.
Comprendre et maîtriser les variations de performance
Malgré l'évolutivité du serverless, les performances des requêtes individuelles sont, elles, moins prévisibles, surtout lors des reprises d’activité, nécessitant une allocation initiale de ressources ( « cold start »). Cela implique de mesurer et mitiger ces variations de performance à bas volume pour éviter de dégrader significativement la performance de l'application, au risque qu'elle s'effondre.
Heureusement, la prédictibilité des performances du serverless augmente avec la charge et le nombre d'invocations, stabilisant la performance. La contrepartie devient alors la complexité, la fragmentation et la volatilité de l'architecture globale et la maîtrise de sa performance sous forte charge. Pour adopter le serverless, les développeurs doivent se discipliner en matière d'observabilité et de télémétrie logicielle, et intégrer le code serverless dans leur stratégie globale de monitoring et d’observabilité applicative, pour assurer la disponibilité, la fiabilité et la performance des microservices et de l’application à tous les stades du développement et de la croissance de l’activité.
Une architecture serverless repose sur un principe de praticité technique fondé sur l’autonomie, l’accessibilité, la flexibilité et la variabilité, qui attire naturellement les développeurs. Mais quelle est sa finalité ? L’objectif est-il de développer une application complexe basée uniquement sur des services serverless ? Ou de limiter son recours à certains fonctions ciblées dans lesquelles il excelle ? Il est important de ne pas considérer le concept du serverless comme une décision purement technique, mais plutôt le voir comme un des facteurs d’accélération et de transformation de l’entreprise et de son architecture de services.
Commentaire