Comme son nom l’indique, une architecture serverless est une architecture sans serveurs, basé sur le principe suivant : utiliser les ressources uniquement au moment où l'on en a besoin.
On s'explique : plutôt que d'avoir une architecture classique avec un ou plusieurs serveurs qui tournent en permanence, dans l'architecture serverless, le serveur est découpé en une multitude de services qui vont être appelés uniquement au moment de leur utilisation.
Ainsi, lorsque l'on appelle un service, un container (une boite) va être instancié, puis détruit juste après son utilisation. C’est ce mécanisme qui va permettre d’utiliser les ressources uniquement au besoin, c'est-à-dire, au moment de l’utilisation du service.
_Prenons l'exemple d'un service permettant de récupérer des utilisateurs : il ne va pas préalablement exister, mais il va être créé seulement au moment de la récupération des utilisateurs et détruit juste après.
Ce mécanisme permet d’avoir des services avec davantage de puissance (la puissance pouvant être donnée ponctuellement) et de faire tourner davantage de processus en même temps (grâce au découpage et à l'utilisation ponctuelle).
Avec cette philosophie nouvelle, on change totalement la manière de concevoir et de développer une application .
Ecouter notre épisode du podcast consacré aux architectures serverless
Un peu d'histoire pour mieux comprendre l'arrivée de l'architecture sans serveurs.
Traditionnellement, un serveur passe 99% de son temps à ne rien faire, et 1% de son temps à être sollicité, pour répondre à des services. L’idée du serverless est la suivante : essayer de limiter ce nombre de serveurs quasi-inactifs dans les datacenters en optimisant l'architecture.
La philosophie initiée est la suivante : “faire une technologie qui nous permet d'effectuer le traitement, au moment du traitement, et de dé-provisionner les ressources quand on en a plus besoin”. En d'autres termes, on consomme au besoin !
C’est une idée qui avait déjà été introduite avec les machines virtuelles. Pour faire simple, on mutualisait l’architecture physique, et on consommait au besoin cette architecture physique.
De nos jours, avec l'architecture serverless, nous allons un cran plus loin en enlevant cette notion de serveur et en incluant seulement l’exécution du code, avec le temps de traitement du code effectif.
Exemple : nous devons effectuer un traitement toutes les nuits pendant 1h. Avec une architecture classique serveur, nous avons un serveur qui tourne tout le temps, uniquement pour ce besoin. Avec une architecture serverless, l'application serverless se réveillera toute seule à l’heure où elle doit faire le traitement, fera le traitement au maximum de la puissance disponible, puis derrière, dé-provisionnera tout ce dont elle n’a plus besoin.
Les principaux avantages des architectures serverless :
L’architecture sans serveurs comporte, comme toute architecture, quelques inconvénients majeurs à nos yeux :
En toute transparence, nous pensons que c'est compliqué, à l'heure actuelle (décembre 2023), de faire une application 100% serverless. Mais qu'il est toute à fait possible de réaliser la quasi-totalité d'un projet en serverless !
On conseille de choisir une architecture serverless pour les projets :
On a fait l'expérience de la mise en place d'architecture serverless, et, le changement le plus flagrant a été repéré sur les traitements asynchrones !
Par exemple, un de nos clients faisait des exports de données très longs, qui pouvaient durer jusqu'à 10 minutes ! Le problème était le suivant : qui dit 10 minutes sur un serveur, dit beaucoup de ressources allouées, et cela entraîne une saturation et ralentissement des autres utilisateurs. Et lorsqu'on lançait 2 ou 3 exports en même temps, cela devenait de plus en plus gênant... jusqu'à “freeze” le serveur !
Dans ce cas, l’utilisation du serverless a été tout simplement optimale ! La puissance émise étant phénoménale, sa mise en place a permis de diviser par 10 le temps de l'export, pour qu'il ne dure en moyenne qu'une à deux minutes ! Et ça, c'est génial !
Nos experts en architecture serverless peuvent vous accompagner sur :
Quel est le rôle d'un architecte système d'information ? Son apport concret dans les projets de développement d'applications.
L’objectif de cet article est discuter d’une architecture web virtualisée pour répondre au mieux à la charge et gérer la sécurité
Il s’agit d’un modèle d’architecture qui s’appuie sur les concepts d’architecture centralisée (un core model partagé par toute une organisation) et d’architecture spécifique (des fonctionnalités spécifiques à un domaine sont implémentés afin de répondre à
Cet article présente les bonnes pratiques à suivre lorsque l’on rencontre une erreur OPX2 suite à la vérification ou à l’exécution d’