Série AWS - Le serverless sur la plateforme AWS : notre avis

Une architecture serverless, c'est un moyen de créer et d'exécuter des applications et des services sans se soucier de l'infrastructure.

Chez Amazon Web Services, la notion de serverless est apportée en grande partie par le service AWS lambda. La fonction se lance lors d'un événement et s'éteint lorsque le traitement est terminé. Il est possible d'écrire ce code en différents langages, notamment nodeJS, C#, Java ou Python. 

On entend de plus en plus parler d'architecture serverless, comme nous vous l’expliquions en juin. Quels sont les avantages de la plateforme AWS (Amazon Web Services) pour mettre en place ce type d’architecture ? A quels types d'applications l’appliquer ? Quels sont les pièges à éviter ? Voyons voir…   

Serverless chez AWS 

Une architecture serverless, c’est un moyen de créer et d’exécuter des applications et des services sans se soucier de l’infrastructure

Chez Amazon Web Services, la notion de serverless est apportée en grande partie par le service AWS lambda. La fonction se lance lors d’un événement et s’éteint lorsque le traitement est terminé. Il est possible d’écrire ce code en différents langages, notamment nodeJS, C#, Java ou Python

Autant le dire tout de suite, ce modèle est applicable à quasiment tous types d’applications. AWS Lambda étant un service entièrement managé par Amazon, il est possible assez simplement de lier nos fonctions avec les autres services qu’offre la plateforme, par exemple S3, API Gateway, DynamoDB, Cloudwatch, etc. L’association de l’API Gateway et d’AWS Lambda permet de gérer les API et donc de commencer à appeler des services dans le cloud. Il n’est pas nécessaire de migrer les applications pour commencer à utiliser ces fonctions, car chaque lambda peut être appelé via un endpoint REST grâce à API Gateway. 
 

Les points forts d’AWS pour le serverless 

Le premier avantage qu’apporte cette architecture serverless, c’est la rapidité de mise à disposition des ressources de développement. Il suffit d’avoir un compte AWS et de coder dans l’IDE en ligne, ce qui permet de se concentrer beaucoup plus rapidement sur le fonctionnel applicatif. Il existe aussi des outils qui permettent de faire les développements en local et de les envoyer sur le cloud, à l’image de AWS SAM CLI ou bien de Terraform

Deuxième point, le dimensionnement. Et oui, AWS Lambda est un service entièrement managé, c’est donc AWS qui gère les ressources et le dimensionnement. Si on a besoin de monter 1000 lambda en quelques secondes, ça fonctionnera. 

Troisième et dernier avantage, dans certains cas, le coût d’une architecture serverless avec AWS Lambda sera moins élevé, car le coût se calcule au nombre d’exécutions des lambdas. Le premier million n’est pas payant, les autres requêtes le sont. Aujourd’hui, on parle de quelques centimes seulement pour le million suivant. 
 

Des pièges à éviter 

Cependant, nous avons identifié deux pièges à éviter :  

  • Veiller à ne pas faire de "boucles" de lambda (lambda1 appelle lambda2, qui appelle lambda 1...)  
  • Veiller à ne pas produire un code mal optimisé qui consommerait plus de ressources et de temps que prévu.

Il est néanmoins possible de mettre en place ce type d'architecture pour des projets mobiles, des applications web, de l'IoT, du big data, etc. En réalité, la seule limite est bien humaine : pour concevoir ce type d'application, il faut penser événementiel afin d'identifier les déclencheurs pour nos lambdas.    

Retrouvez les précédents volets de notre série consacrée à Amazon Web Services :