En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies pour vous proposer des contenus et services adaptés à vos centres d'intérêts. En savoir plus et gérer ces paramètres. OK X
 
 

 

 

Dossiers

Quel avenir pour le serverless computing ?

Par Grégory Ouillon, CTO EMEA, New Relic

Publication: Juillet 2020

Partagez sur
 
Aujourd’hui, de plus en plus de composants migrent vers le cloud. Pourtant, il y a quelques années de cela, les serveurs physiques sur site étaient le cœur de toutes les infrastructures numériques...
 

L’informatique sans serveur (le "serverless") entretient cette tendance. Comme pour le XaaS ("Everything as a service"), il permet de sous-traiter l’anguleuse gestion de l’infrastructure à des fournisseurs cloud. Ainsi, les ressources consacrées au déploiement, à la gestion de la capacité et à la sécurisation de l’infrastructure peuvent désormais être utilisées directement dans le développement des applications elles-mêmes.

Le serverless présage de belles opportunités en termes d’innovation et de capacité et d’évolutivité. En revanche, elles dépendent du contexte et des objectifs propres à chaque entreprise. En effet, si le serverless est un moyen d’abaisser la complexité sur certains aspects, il soulève de nouvelles problématiques. Par exemple, l’absence actuelle de standards ouverts de compatibilité entre plateformes et la dépendance relative envers le fournisseur. Ainsi, il est nécessaire de bien comprendre cette technologie afin de l’appliquer de façon précise aux objectifs de l’entreprise.

Se concentrer sur le code, pas sur les serveurs

Au-delà des services PaaS du cloud, le serverless est un modèle d’architecture logicielle permettant aux développeurs de déployer des composants applicatifs modulaires et autonomes sous forme de fonctions ou de containers. Ils peuvent également déléguer au fournisseur l’intégralité de l’infrastructure et du middleware, de son opération, de l’exécution du code et de l’allocation dynamique des ressources en fonction de la charge.

Pour les équipes applicatives, plusieurs intérêts sont offerts grâce au serverless. Il permet une grande facilité de mise en œuvre et vélocité, du codage au déploiement en production, avec une autonomie maximale des développeurs. La facturation varie selon la durée exacte de l’utilisation des ressources, permettant de s’affranchir de coûts fixes de l’infrastructure et des compétences nécessaires à son cycle de vie. Le serverless offre aussi une gestion automatique de la capacité à très grande échelle, permettant d’adapter facilement de grandes variations de charge.

Ce dernier est aujourd’hui très utilisé pour le développement rapide de code avec un temps d’exécution court tel que des microservices Web, la transformation de données (ETL), la programmation par événement, mais aussi l’orchestration et l’automatisation des processus IT et applicatifs dans le cloud. Le modèle se prête bien à des usages occasionnels, ou connaissant de très grandes variations de volume rendant le dimensionnement au pic coûteux et difficile à planifier. Bien que l’usage du serverless s’élève facilement dans ces usages périphériques, peu d’architectures exploitent cette technologie au sein de la logique de leurs applications.

De nouvelles formes de complexité

Si le serverless simplifie les problématiques liées à l’infrastructure et favorise l’agilité des développeurs, en contrepartie, il augmente la complexité à d’autres niveaux. Par exemple, le risque de fragmentation de l’architecture applicative devient accru. Individuellement, chacune des fonctions s’en trouve simplifiée et le cycle de développement accéléré, mais le grand nombre de dépendances, d’interfaces et d’appels entre fonctions rend également la structure globale du système sensiblement plus complexe. Les efforts de configuration sont plus importants et les scripts de déploiement plus dispersés dans les équipes. En conséquence, le développement de logiciels est de facto plus efficace ou agile, mais la maîtrise de l’architecture et le suivi du comportement et de la performance des applications en production s’en trouve complexifié.

Comprendre et maîtriser les variations de performance

L’évolutivité du serverless est un réel atout. Que les demandes à traiter soient au nombre de quelques centaines ou de milliards, le système s’adapte automatiquement. En revanche, l’état du système va grandement impacter le temps d’exécution des requêtes individuelles, en particulier lors des reprises d’activité après une période sans invocation, nécessitant une allocation initiale de ressources ("cold start"). Ces variations de performance à bas volume doivent être mesurées, comprises et mitigées afin d’éviter des dégradations significatives de performance de l’application et favoriser sa survie.

Heureusement, avec la charge, la prédictibilité des performances du serverless s’accroit. A faible volume, les résultats apparaissent parfois peu concluants et contre-intuitifs, mais lorsque le nombre d’invocations s’accroît sensiblement, l’allocation moins erratique des ressources, et la mise en cache des données accédées le plus fréquemment, améliorent fortement et stabilisent 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.

C’est pourquoi L’adoption du serverless doit s’accompagner d’une sensibilisation à cette architecture des développeurs en matière d’observabilité et de télémétrie logicielle, et l’instrumentation du code doit faire partie des responsabilités des équipes DevOps. Même si son utilisation peut initialement apparaître comme périphérique et non critique, il est essentiel d’intégrer le code serverless dans la stratégie globale de monitoring et d’observabilité applicative. Cela permet d’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é.

Coller aux exigences métier

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. En contrepoint, il ne faut pas négliger la question de sa finalité. L’objectif est-il de développer une application complexe basée uniquement sur des services serverless ? Ou le recours au Serverless doit-il être limité à certains fonctions ciblées où il excelle ? Et si oui, lesquels ? Comment le Serverless influence-t-il l’architecture applicative et les processus de développement et d’opération ? Comment préserver la cohérence des services applicatifs et leur performance, en adéquation avec la stratégie produit ?

Le concept du serverless n’est pas une décision purement technique mais bien un des facteurs permettant l’accélération et la transformation d’une entreprise dans son architecture de service. Cela commence avec les équipes de développement, qui doivent continuer d’évoluer de leur rôle de codeur vers celui de concepteurs d’expériences clients d’excellence, et axés sur la résolution de problèmes au service des utilisateurs et de la performance business de l’entreprise.

http://www.newrelic.fr/

Suivez Electronique Mag sur le Web

 

Newsletter

Inscrivez-vous a la newsletter d'Electronique Mag pour recevoir, régulièrement, des nouvelles du site par courrier électronique.

Email: