Le modèle de développement serverless : avantages et contraintes

Par Pascal Stalin
Publié le 6 mars 2020
Lecture : 8 min.
Depuis plusieurs années, le développement d’applications monolithiques a fait place, spécialement dans les entreprises en transformation digitale, au développement d’applications découpées en conteneurs et en micro services, en conjonction avec la popularité croissante du « cloud first » et du modèle DevOps.
7 #Techno

Le modèle de développement ‘serverless’, apparu en 2019, est l’étape la plus récente de cette évolution. Il consiste pour le développeur à créer et exécuter ses applications sans se soucier de toutes les problématiques liées à l’infrastructure, et notamment les serveurs – d’où l’appellation ‘serverless’ – mais aussi en épargnant les équipes d’exploitation de toutes les tâches de déploiement et de maintenance des applications en place. En ce sens, on passe du DevOps, qui crée une passerelle entre les développeurs et les équipes d’exploitation, au NoOps avec le ‘serverless’.

 

Bien sûr les applications et leur code continuent de s’exécuter sur des serveurs, mais la particularité du ‘serverless’ est simple : la seule mission du développeur est désormais de fournir son code, tout le reste étant à la charge d’un fournisseur de services cloud.

Le nouveau modèle fait donc abstraction de toute la partie infrastructure pour le développeur, qui n’a plus à se concentrer que sur sa vraie valeur ajoutée : le développement.

Donc plus besoin pour lui de définir le nombre de serveurs, leur puissance. Plus besoin de les mettre en service, de les mettre à l’échelle, de les entretenir, les superviser, les mettre à jour.

Mais aussi plus besoin de gérer le déploiement des applications sur les différents serveurs. Finies aussi les problématiques de stockage, de load balancing ou d’autres décisions touchant le réseau.

 

Repenser la conception du code d’exécution des applications

Concrètement, la mise en œuvre d’une architecture de développement ‘serverless’ nécessite pour le développeur de repenser la conception du code d’exécution de ses applications, qui doivent désormais être décomposées en fonctions. Chaque fonction a un seul et unique but, et l’ensemble des fonctions forme une application.

C’est pour cela qu’on associe souvent à ‘serverless’ le terme de « function as a service » (FaaS). Le développeur a la responsabilité de coder sa ou ses fonctions, et le reste est à la charge du fournisseur de service cloud.

Chaque fonction va être déclenchée par un ou des événements, par exemple le dépôt d’un fichier déclenchera l’exécution du code et donc la fonction, par exemple l’écriture dans une base de données. Les événements déclencheurs peuvent être très divers, que ce soit l’ajout d’un fichier et de son espace de stockage ou encore une nouvelle entrée dans une base de données. Ensuite le fournisseur de services cloud garantit le ‘scaling automatique’ de la fonction selon les pics de service, c’est-à-dire qu’il dimensionnera automatiquement l’application en exécutant le code en réponse à chaque déclencheur.

Les trois principaux fournisseurs de services cloud, soit Amazon Web Services, Microsoft Azure et Google Cloud, proposent chacun une architecture ‘serverless’. La plus utilisée aujourd’hui est l’offre Lambda d’AWS, mais les trois ont globalement les mêmes caractéristiques.

 

Trois avantages principaux

Pour les entreprises, le modèle ‘serverless’ a trois avantages principaux. Deux d’entre eux ont déjà été mentionnés plus haut.

Il donne plus de liberté aux développeurs, qui ne sont plus responsables du maintien des infrastructures et peuvent donc se concentrer sur leur cœur de métier, le développement. Ceci a rapidement pour conséquence une accélération du développement des applications.

Il garantit une haute disponibilité des ressources, grâce à l’auto scaling, en ajustant automatiquement l’allocation des ressources nécessaires au fonctionnement des applications.

Le troisième avantage, tout aussi important, est l’économie de coût, grâce à la facturation à l’usage, basée sur le temps réel d’exécution du code et de consommation des ressources, avec la milliseconde comme unité de paiement. Fini le coût d’achat des serveurs et de leur exploitation, d’autant qu’ils sont souvent sous utilisés. De plus, ceci incite les développeurs à optimiser les performances de leur code.

 

Inadapté à certains cas d’usage

Toutefois, une architecture ‘serverless’ impose plusieurs contraintes.

L’exécution de chaque fonction doit respecter une durée limite, qui doit le plus souvent ne pas dépasser 5 minutes. En conséquence, le modèle ‘serverless’ n’est pas adapté à tous les cas d’usage, notamment à des tâches lourdes et complexes comme le traitement vidéo, ou lorsque l’application nécessite un trafic constant.

Il est donc nécessaire de bien concevoir l’application en amont pour s’assurer qu’elle est adaptée à une architecture ‘serverless’ et de se faire accompagner par des architectes spécialistes Cloud.

Les développeurs doivent également être formés et maîtriser les concepts de l’exploitation des infrastructures pour pouvoir utiliser le ‘serverless’ à bon escient.

L’adoption d’une architecture ‘serverless’ implique également une forte dépendance vis-à-vis du fournisseur de services cloud et en particulier à son framework. Chaque fournisseur va imposer ses propres règles, notamment en termes de durée d’exécution ou en termes de langages de développement acceptés, par exemple Java, Node.js et Python.

Il est donc difficile pour une entreprise de migrer ses développements d’un fournisseur de services à un autre.


Vous aimerez aussi

7 #Techno
Le FIC 2020 vu par notre RSSI Pictime Groupe …

Récapitulatif des sujets du FIC 2020 par notre RSSI, Fabien Dachicourt. Les deux grandes thématiques de cette année ont tourné autour de l’humain au centre de la cybersécurité et le concept de Zero Trust.

Lire la suite
7 #Techno
Retour sur la conférence CoRI&In 2020 …

En parallèle du FIC se déroule la conférence CoRI&IN: Conférence sur la Réponse aux Incidents & l’Investigation Numérique. Notre équipe sécurité vous propose un récapitulatif des faits marquants.

Lire la suite