“Serverless”

Ou comment créer et exécuter des applications sans se soucier des serveurs sur AWS

Introduction

Serverless est un mot très à la mode ces dernières années dans le monde du Cloud computing. Il est assez souvent mal compris, mal interprété et source de confusions. Si on s’en tient à sa traduction littérale, on pourrait croire qu’il s’agit simplement d’informatique sans serveur mais ce serait une erreur de se baser sur cette simple définition.

Nous allons voir par la suite ce qu’est réellement le modèle Serverless, ses bénéfices, les principales sources de confusions que l’on croise dans les articles et sources en ligne ainsi que son implémentation sur Amazon Web Services avec les principaux services disponibles.

Qu’est ce que le modèle serverless?

Contrairement à ce que le nom présuppose, le modèle Serverless ne correspond pas à une informatique sans serveur. Coupons court dès à présent au suspense : tout programme ou logiciel sera toujours exécuté sur une machine (physique, virtuelle ou totalement abstraite). En effet, il serait plus juste de décrire le modèle Serverless comme un “modèle informatique où les développeurs et admins n’ont pas à se soucier des serveurs”, mais bien entendu il n’y a pas de mot unique qui pourrait résumer cela, même en anglais.

Le modèle serverless permet aux développeurs et autres administrateurs système de se concentrer sur le code et le déploiement. Celà permet de libérer les équipes des problématiques opérationnelles telles que la configuration des serveurs, l’installation de l’environnement d’exécution (runtime), les mise à jour du système d’exploitation. Il s’agit le plus souvent de services gérés par un fournisseur Cloud et qui peuvent être opérationnels en quelques minutes, voire secondes.

Il y a souvent une ambiguïté entre le modèle Serverless et le framework Serverless (https://www.serverless.com/). Alors que le premier est un modèle architectural abstrait, le second est un outil permettant de développer des applications destinées à être déployées sur des services respectant le modèle Serverless.

Nous pouvons trouver deux principales catégories de services qui correspondent au modèle serverless:

  • Function as a Service (FaaS)
    • Il s’agit d’une catégorie de services cloud fournissant une plateforme d’exécution de code sans la complexité d’administration de l’infrastructure.
    • Exemple : Lambda ou Step Functions
  • Backend as a Service (BaaS)
    • Dans ce cas, il ne s’agit pas de service permettant l’exécution de code ou de fonction mais de services opérationnels accédés au travers d’APIs
    • Les services BaaS fournissent des applicatifs permettant de remplacer des fonctionnalités couramment présentes et utilisées, telles que l’authentification des utilisateurs, la gestion des bases de données, téléchargement et stockage de fichiers ou gestion de notifications
    • Exemple : API Gateway ou AppSync

Bénéfices du modèle serverless

Parmis les bénéfices du modèle, nous pouvons lister les points suivants qui sont les principaux avantages:

  • Rapidité d’implémentation et de mise en production: les développeurs peuvent se concentrer sur le développement et déléguer les problématiques opérationnelles à la plateforme
  • Augmentation de la productivité et de l’automatisation
  • Coûts facturés à l’utilisation: le modèle Serverless est parfait pour les services utilisés de façon sporadique ou avec des pics variables car la facturation est faite selon l’utilisation.
  • Simplicité de déploiement et d’administration: de nombreuses solutions existent pour accélérer le déploiement des applications serverless (Serverless Framework, SAM, Zappa…)

Inconvénients du modèle Serverless

Malgré tous les bénéfices de productivité et de coûts qu’apporte le modèle serverless, il présente néanmoins quelques inconvénients qui nécessitent d’être pris en compte lors de l’étape de conception d’architecture:

  • Vendor Lock-in: les services serverless étant très souvent spécifiques à chaque fournisseur Cloud, choisir une architecture serverless revient souvent à choisir un modèle imposé par son fournisseur
  • Economie d’échelle: Passé un certain niveau trafic très important et constant dans le temps, une architecture serverless peut revenir plus chère à l’utilisation qu’une architecture plus classique basée sur des machines virtuelles

Il est important de se rappeler que le modèle Serverless n’est pas une solution magique à tous les problèmes d’architecture et n’est qu’une brique de plus fournie à l’architecte pour l’aider dans sa conception.

Services serverless sur AWS

Parmis les différents services proposés par AWS, nous pouvons lister les services suivants qui appartiennent à la catégorie “serverless”:

  • API Gateway
  • AppSync
  • Aurora Serverless
  • Cloudwatch
  • Cognito
  • Dynamodb
  • ECS Fargate
  • Glue
  • Lambda
  • Personalize
  • S3
  • SNS
  • SQS
  • Step Functions

Exemples d’architectures serverless

Figure 1. API REST get authentication

Figure 2. Traitement de données et analyse de sentiment en temps réel de texte

Figure 3. Reconnaissance et traitement d’image

Envie d’en savoir plus?

Contactez-nous pour en savoir plus.