Architectures server less et fonctions lambda
Vers de nouvelles architectures techniques.
Ecrit par Vincent L.
Les architectures traditionnelles pour la fourniture de services digitaux, que ce soient des sites internet ou des applications mobiles, reposent quasiment invariablement sur des empilements de serveurs dont les capacités (CPU, RAM, disques) sont dimensionnées afin de prévenir tout risque de rupture du service en cas de pic d’usage.
Cette pratique, qui permet à la plus part des DSI de dormir tranquille, est généralement jugée comme « bonne » mais induit des coûts fixes d’exploitation sans réel rapport avec le niveau d’usage des solutions.
Partant de ce constat, les principaux fournisseurs de PAAS (plateform as a service) ont imaginé des solutions permettant d’héberger des services en proposant une tarification proportionnelle à la consommation des ressources techniques (CPU, RAM, disque) induite par l’usage.
Le service le plus connu et le plus abouti est AWS Lambda (Amazon), même si Google et Microsoft sont dans la course avec respectivement App Engine et Functions (les services cités dans la suite de cet article sont issus de l’ecosystème AWS).
Ces services permettent ainsi d’imaginer des architectures dites « serveur less » s’appuyant sur des ressources à la demande dont la facturation reflète l’usage qui en est fait. Les fournisseurs de plateformes facturent le temps d’execution, le trafic, le stockage, etc résultant de l’usage du service proposé.
Cas d’usage
La plateforme AWS fournit aujourd’hui un éventail de services permettant de concevoir des applications complète fondées sur des architectures server less. Les principaux services mis en oeuvre sont :
- Gateway API pour la sécurisation des points d’accès
- Lambda pour l’exécution du code applicatif
- S3 pour le stockage de fichiers
- DynamoDB pour la base de données
- SES pour les email
Il est également possible de créer des services de traitements automatisés de l’information : l’intégration de modes évènementiels permet de déclencher des traitements en réaction à des évènements (exemple : opération sur une base de données DynamoDB, dépôt d’un ficher dans un bucket S3).
Et le DevOps
AWS propose également une gamme de service permettant d’automatiser le test et le déploiement des fonctions Lambda, ainsi que la configuration des services nécessaires (API, bases de données DynamoDB, bucket S3, gestion des droits et de la sécurité…).
Ces services se composent notamment de :
- CodeCommit pour la gestion des codes sources
- CodeBuild pour la compilation et les tests
- CodeDeploy pour le déploiement des fonctionnalités
- CloudFormation pour la configuration des services
- CodePipeline pour la gestion du déploiement continu
Pourquoi l’adopter ?
Aujourd’hui les architectures server less sont particulièrement adaptées aux concepts headless comme les applications mobiles ou l’IoT.
Les usages se développent rapidement notamment sur le terrain des applications traditionnelles avec l’adoption d’architecture à base de micro-services.
Il faut dire que les leviers de motivations sont efficaces :
- Une architecture scalable par définition.
- Une tarification très attractive, sans effet de seuil.
Alors, on s’y met quand ?