Comparatif : trois offres cloud "serverless" sur le grill

Comparatif : trois offres cloud "serverless" sur le grill Les leaders du IaaS, que sont Amazon, Microsoft et Google, ont tous lancé des services taillés pour exécuter les applications sans se soucier des VM et serveurs sous-jacents.

Avec l'approche "sans serveur" (serverless), un nouveau cap est franchi dans l'abstraction logicielle. Il s'agit d'exécuter le code sans avoir à configurer les serveurs ou machines virtuelles sous-jacentes, à les superviser, les mettre à jour ou les "patcher". L'exécution du code est lancée via ce qu'on appelle "des fonctions" en réponse à des événements. Lors de l'appel d'une page web par exemple, les fonctions déclencheront l'exécution du code et des services sous-jacents (authentification utilisateur, interrogation de la base de données, etc.). Cette solution est proposée par les trois principaux clouds publics : Amazon (avec Amazon Lambda), Google (Cloud Functions) et Microsoft (Azure Functions).

Egalement qualifiés de "Function as a Service" (FaaS), les services "serverless" offrent de nombreux avantages comme l'auto-dimensionnement, une meilleure sécurisation du code et une plus grande tolérance aux pannes. Ils présentent aussi un intérêt économique. Exit l'allocation de machines virtuelles, la facturation se cale sur le temps d'exécution et la ressource réellement consommée.

  Points forts Points faibles Langages Tarifs
Comparatif des services cloud serverless
Amazon Lambda - Antériorité sans égale
- Richesse de l'écosystème et services AWS associés.
- Exposition de fonctions par HTTP complexes
- Temps d'exécution d'une fonction limité
Java, Node.js, C# et Python Un million de requêtes et 400 000 Go-secondes de temps de calcul (par mois) gratuits, puis 0,20 $ par million de requêtes et 0,00001667 $ par Go-s utilisé.
Azure Functions - Nombre de langages supportés
- Simplicité de l'exposition des fonctions en HTTP
 
- Jeunesse de l'offre
- Ecosystème moins riche comparé à AWS
JavaScript, C# et F#, Python, PHP, Bash, Batch et PowerShell Un million de requêtes et 400 000 Go-s de consommation de ressources (par mois) gratuits, puis 0,169 € par million d'exécutions et 0,000014 € par Go-s.
Google Cloud Functions - Service de débogage
- Association avec Firebase
- Seulement Node.js supporté JavaScript, Node.js Pas de modèle de tarification encore annoncé

Amazon Lambda, le pionnier

Amazon Web Services a ouvert le marché du "serverless" en mettant son service Lambda en production dès fin 2014. Avec cette antériorité, il capitalise sur plusieurs retours d'expérience significatifs. Parmi les clients de Lambda, AWS compte Netflix, le site d'e-commerce Nordstorm, ou la plateforme vidéo VidRoll. Pour Sébastien Lecacheur, architecte chez Prosodie, l'autre atout d'AWS, c'est son écosystème. "Il est possible de lier Lambda à un grand nombre de services dans l'authentification, le stockage, la gestion des flux", pointe-t-il. Fort d'une politique de sécurité native (via AWS IAM), Amazon propose aussi série une série d'outils (CodeCommit, CodePipeline, CodeDeploy) pour faciliter la vie du développer. Le dernier en date, X-Ray, aide au débogage de traitement de micro-services.

Du côté des points faibles, Sébastien Lecacheur note que l'exposition des fonctions par requête HTTP est plus complexe à mettre en œuvre et à configurer que chez les concurrents. Par ailleurs, Lambda limite le temps d'exécution d'une fonction à 5 minutes. Ce qui peut se révéler handicapant dans le traitement d'un fichier lourd ou un calcul complexe, mais s'avérer utile si, par exemple, un bug crée une boucle infinie. Autre grief, l'obligation faite au développeur de livrer le code mais aussi ses dépendances issues par exemple de librairies open source. Les services concurrents se chargeant, eux, de récupérer ces dépendances.

Azure Functions pour la simplicité

Azure Functions est proposée en version stable depuis novembre 2016. L'offre est assez proche de celle d''AWS Lambda, y compris sur le mode de tarification. Même si l'écosystème de Microsoft est moins riche que celui d'Amazon, ce service permet de déclencher des fonctions liées aux services Azure (Blob Storage, Table Storage ou Azure DocumentDB) ou faisant appel à des solutions tierces (comme Box, DropBox, OneDrive, SendGrid).

Azure Functions supporte les langages C#, F# et JavaScript mais aussi divers langages de script tels que Python, PHP, Bash, Batch et PowerShell. Le support de PHP peut être un plus, considérant son importance dans les applications front-end. Sébastien Lecacheur apprécie la qualité de l'éditeur de code en ligne et salue la simplicité avec laquelle il est possible d'exposer des fonctions en HTTP. "Pas besoin non plus de jongler entre différents écrans, tout peut être réuni dans une même interface", relève-t-il. A noter que Microsoft a adossé sa nouveau service de Bot as a Service à Azure Functions.

Google Cloud Functions, une offre en devenir

Le service serverless de Google (baptisé Cloud Functions) est difficilement comparable à ceux d'Azure et AWS. Jusqu'ici en version alpha, il vient tout juste de passer en beta. Il est donc de fait moins mature que ses deux concurrents. Autre point faible : les fonctions misent en musique par Cloud Functions prennent en charge uniquement JavaScript et ne s'exécutent – pour l'heure - que dans un environnement Node.js. Pour autant, selon Sébastien Lecacheur, l'offre est riche de promesses compte tenu de la qualité de l'infrastructure de Google et de ses niveaux de performance réseau.

L'expert apprécie aussi le service de débogage proposé par Google et son mode d'analyse de fonction pas à pas. L'association de Cloud Functions et de Firebase, la base de données temps réel de Google, pourrait également faire des étincelles. Cette dernière offre notamment des services d'authentification et de gestion du back-end d'application web ou mobile.

Une approche micro-services

Le mode "serverless" s'inscrit dans une approche de micro-services selon laquelle chaque fonction exécute rapidement une et une seule tâche. Pour Stephan Hadinger, responsable des solutions architecture chez AWS, "ce modèle s'applique tout particulièrement à des applications mobiles ou web exigeant des délais d'exécution de quelques dizaines de millisecondes". Pour Emile Heitor, responsable département recherche et expertise chez Oceanet Technology / NBS System, le recours au serverless est aussi élitiste puisqu'il est lié à la qualité du code produit. "Si le code est mauvais, l'utilisateur peut payer plus cher qu'avec une instance classique", prévient l'expert.