fond

L'architecture serverless, c'est quoi ?

L'architecture serverless est une architecture sans serveurs, basée sur l’utilisation de services à la demande !
decoration

L'architecture serverless, le principe

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. 

architecture-classique-serverless

_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

Point histoire : pourquoi sommes-nous arrivés à penser architecture 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.

Architecture serverless, les avantages

Les principaux avantages des architectures serverless :

  • Une souplesse extraordinaire : on bénéficie d'une grande capacité de gestion au niveau de son architecture ! On peut notamment se permettre de provisionner ou de demander des machines plus puissantes, à n'importe quel moment et à moindre coût.
  • La puissance : c'est votre fournisseur cloud (AWS, Azure, Google) qui se charge de vous donner la puissance au moment où vous en avez besoin.
  • Scalabilité à l'infini !
  • Les traitements sont stateless : on peut multiplier les instances autour du monde entier et exécuter les services ici ou ailleurs !
  • Les coûts sont moins élevés : on paye à l'utilisation du service, et c'est, dans la majeure partie des cas, moins coûteux que les systèmes classiques. De fait, la facturation et plus granuleuse !
  • La maintenance est facilitée ! Le fournisseur cloud se chargeant de toute la stack applicative en dessous de la couche serveur, vous n'avez donc plus à vous soucier de la maintenance de toutes ces couches.
  • Pas besoin de se soucier des problèmes de sécurité ! Le traitement étant instancié au moment où vous en avez besoin, et dé-provisionné au moment où vous n’en avez plus besoin, vous n'avez pas besoin de vous soucier de ce qu'il y a en dessous de la couche serveur (la couche serveur physique) et, de fait, vous ne vous souciez pas des problèmes de sécurité.

Architecture serverless, les inconvénients

L’architecture sans serveurs comporte, comme toute architecture, quelques inconvénients majeurs à nos yeux :

  • Non adapté pour les traitements utilisés en masse ! Honnêtement, pour les traitements utilisés très souvent, ça ne vaut pas le coup ! Si vous avez des milliards de requêtes à la seconde, les ressources à instancier seraient énormes, et le serveur utilisé à 100% du temps. De plus, il existe parfois des latences le temps de mettre en place le service. Donc, ça pose des soucis si c’est un service qu'on appelle souvent ! On privilégiera l'architecture sans serveurs pour des traitements réguliers, mais pas intensifs.
  • On a moins de liberté qu'avec un code "classique"
  • La mise en place d'une architecture serverless nécessite de repenser toute l'application ! Et oui, nous n'avons pas de stockage, de file system, et tout un tas d'accès habituels. Il faut donc repenser l'application différemment.

Architecture sans serveurs : pour quels types de projet ?

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 :

  • Réalisés avec des nouvelles technologies
  • Sans historique ou presque : c'est plus simple de partir d'une feuille blanche !
  • Avec des services ciblés :
    • Exports longs
    • Migration de base de données
    • Traitements asynchrones

Retour d'expérience sur la mise en place d'une architecture sans serveurs pour des traitements asynchrones

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 !

Notre expertise architecture serverless à Lyon

Nos experts en architecture serverless peuvent vous accompagner sur :

Nos Références clients