AWS Lambda : pour déployer sur le cloud d'Amazon en quelques secondes

AWS Lambda : pour déployer sur le cloud d'Amazon en quelques secondes Il s'agirait du service le plus abouti en matière de déploiement en mode cloud. C'est l'ex-architecte cloud de Netflix, Adrian Cockcroft, qui le dit.

Introduit à l'occasion de l'événement AWS re:Invent 2014 en novembre dernier, le service AWS Lambda (pour l'heure en préversion) fait entrer les déploiements sur le cloud d'Amazon dans une nouvelle dimension. Pour Adrian Cockcroft, analyste technologique chez Battery Ventures et ex-architecte cloud chez Netflix, "AWS Lambda représente aujourd'hui le dernier échelon de la gestion de production d'applications cloud en matière d'automatisation". Avec à la clé la promesse d'atteindre une vitesse de mise en production de quelques secondes sur des architectures de microservices (voir son slide ci-dessous).

slide
Slide projeté par Adrian Cockcroft, analyste technologique chez Battery Ventures, à l'occasion de la DockerCon Europe en décembre 2014. © Capture / présentation de Adrian Cockcroft

Un modèle de programmation évènementiel

"Au total, nous avons annoncé trois nouveaux outils de déploiement lors de AWS re:Invent. D'abord, AWS CodePipeline qui établit et exécute des processus de déploiement continu. Ensuite, AWS CodeDeploy qui automatise le déploiement de code sur les instances EC2. Il vient d'un projet interne, baptisé Apollo, qui était utilisé pour Amazon.com, et prend en charge les scripts tiers, type Puppet ou Chef. Enfin, AWS Lambda permet pour la première fois de disposer d'un service de gestion de code orienté évènements", égraine Carlos Conde, évangéliste technologique au sein d'AWS EMEA.

Parmi ces trois outils, c'est bel et bien AWS Lambda qui a le plus attiré l'attention du marché. Optimisé pour la distribution Linux d'Amazon, ce service exécute des fonctions écrites en JavaScript (en NodeJS), et introduit un modèle de programmation évènementiel.

AWS Lambda : l'équivalent de Microsoft Azure WebJobs

Comment ça marche ? En réponse à un événement, typiquement un clic sur un site, un contenu saisi dans un formulaire, ou une requête depuis un appareils connectés, une fonction Lambda sera exécutée pour dérouler ensuite la logique applicative qui va bien. "Il pourra s'agir par exemple de créer une miniature et la charger sur le service de stockage Amazon S3 lorsqu'une nouvelle image est chargée sur un site web", indique Carlos Conde.

Mais les fonctions Lambda peuvent permettre beaucoup d'autres choses, comme compresser une images ou encore exécuter des calculs plus sophistiqués sur des données une fois celles-ci chargées dans Amazon DynamoDB. "Plus besoin de mettre en place des process techniques lourds, des files d'attente, de gérer le service de stockage...", souligne Carlos Conde. Sans compter que les Lambda peuvent aussi prendre en charge des scénarios plus back office : l'agrégation RSS, l'envoi d'e-mails, mais aussi la maintenance de fichiers (consolidation, nettoyage...), l'indexation de données... La liste est longue.

Un concurrent pour Azure WebJobs

Le service AWS Lambda est facturé en fonction du temps d'exécution (par incréments de 100 millisecondes), et gère aussi l'allocation et la facturation des ressources de calcul nécessaires aux fonctions. "Le code est exécuté dans les quelques millisecondes suivant l'événement", estime Amazon. C'est sans doute là l'une des principales différences avec le scripting traditionnel. Opérées par le service EC2, les fonctions Lambda se lancent sans nécessiter de pool de ressources préprovisionné. Pour l'heure, Amazon est resté très discret quant à la technique sous-jacente pour parvenir à ce résultat.

Avec AWS Lambda, Amazon se rapproche du PaaS (Platform as a Service). Les Lambda permettent en effet de s'épargner la gestion de l'infrastructure matérielle et logicielle (serveurs, OS...). AWS lance pour vous les ressources machines nécessaires à l'exécution des fonctions, dans la limite que vous lui avez indiquée. Les fonctions pouvant accéder à d'autres ressources et services d'AWS en fonction des autorisations dont elles disposent (le configurateur Lambda permet de les définir). A la différence d'un PaaS, Lambda fournit néanmoins la possibilité de gérer beaucoup finement l'allocation de ressources en fonction d'un évènement précis.

Force est de constater que Microsoft propose un service équivalent sur son propre cloud. Baptisé Azure WebJobs, ses possibilités sont plus étendues que celles d'AWS Lambda. Il offre aussi des modes d'exécution plus nombreux, et supporte une palette de formats de fichier plus grande (voir le comparatif réalisé ici). Reste qu'AWS Lambda est encore en version préliminaire. A suivre donc...