ServerlessConf Paris : Optimiser les performances des fonctions Serverless

Première conférence mondiale dédiée à la tendance serverless, Serverlessconf est une conférence communautaire, dont l’objectif est de partager les expériences autour du développement d’applications sur des architectures dites serverless. Nous avons rencontré Avner Braverman (Binaris), speaker lors de cet événement, pour discuter des Fonctions as a Service, et de leurs performances.

Avner Braverman

Co-fondateur et CEO de Binaris, Avner est un habitué des systèmes distribués, sur lesquels il a commencé à travailler lorsqu’il était étudiant. Il est également le co-fondateur de XIV, société de stockage distribué et de Parallel Machines, spécialisée dans l’analytics. Avner est « full stack », du silicon aux applications Javascript, en passant par le kernel !

Pouvez-vous nous présenter Binaris ?

Notre objectif est de prendre la proposition de valeur du FaaS (Fonction as a Service, qui permet des développements plus rapide et une abstraction des serveurs), et de l’amener au coeur du développement applicatif. Nous pensons qu’aujourd’hui le FaaS répond à un nombre limité de cas d’usage. Le Serverless est utile dans le data processing, l’ETL, mais pour construire des applications plus responsives (comme des applications en temps réel), le FaaS n’est pas assez performant. L’autre problème est que nous sommes encore limités à une logique assez simple : un événement, la fonction réagit, et voilà. Pour construire une logique plus complexe, avec des fonctions qui invoquent d’autres fonctions, ou des réseaux de fonctions, la latence s’accumule et on peut rapidement arriver à quelques secondes de latence. Aujourd’hui les plateformes de fonctions sont encore trop lentes pour beaucoup d’applications. Donc nous essayons de fournir une plateforme FaaS plus rapide, basée sur des machines AWS EC2. Là où Lambda prend 50 à 100 millisecondes (latence chaude) pour lancer une fonction, notre plateforme offre aujourd’hui un lancement en 1 à 3 millisecondes. Ne plus avoir à gérer la latence permet de construire des réseaux de fonctions et micro-services vraiment complexes. Nous voulons donc amener le FaaS aux cas d’usage qui demandent plus de réactivité : la publicité, le jeu, les sites Web interactifs… ou des cas d’usage futurs comme la voiture connectée, les drones ou l’IA.

Comment en êtes-vous venus à développer cette plateforme ?

Nous avons lancé Binaris en 2016, au moment où le Serverless en était encore à ses débuts. Nous avons essayé d’adresser la problématique du point de vue de l’efficacité : est-il possible de rendre le Cloud plus efficace, de façon significative, et réaliser plus de calculs par Gigawatt ? Avec une puissance donnée dans le Cloud, quelle quantité de calculs peut-on faire au maximum ? Nous cherchions la performance, que ce soit au niveau des calculs ou des fonctions. D’un point de vue système, plus on monte dans la stack (en termes d’abstraction de l’infrastructure), plus il est facile et rapide de coder. On gagne en agilité, mais il y a un prix, aussi bien en termes de coûts que de performance. Pour faire une analogie, pour développer une application on peut coder en C ou en Python. Ce sera plus rapide en Python, mais avec des temps de réponse moindres, et on aura besoin de plus de serveurs. Plus on monte en abstraction, plus on perd en efficacité. Nous essayons donc de challenger le haut niveau d’abstraction du FaaS, de trouver comment optimiser la stack pour se concentrer sur la performance. Nous avons donc commencé à travailler sur la problématique de la latence, parce que l’amélioration de la latence permettra de nouveaux cas d’usage, mais nous voulons travailler sur l’ensemble de la stack, de façon à la rendre plus rapide tout en optimisant les coûts.

Le paradigme Serverless va-t-il durer ?

Je pense que grosso modo, une moitié de la charge sur Cloud sera dédié aux traitements vidéos (reconnaissance, encodage, etc.), qui ne peuvent pas être adressés par les fonctions. Pour tout le reste des applications, analyse de données, analyses temps réel, applications interactives… je pense que toute cette logique applicative sera gérée par des fonctions.

Comment va évoluer l’éco-système Serverless ?

Considérons qu’il y a deux couches : la première est la plateforme, qui doit être améliorée. La plateforme doit être plus rapide, offrir plus de richesse sémantique aux développeurs. Par exemple, si on a trois fonctions A, B, C, et que l’on souhaite que ces trois fonctions opèrent comme une seule, la plateforme FaaS doit encore évoluer. La deuxième couche est composée des outils et librairies, qui aident à développer plus rapidement. Je pense d’ailleurs qu’il y aura de moins en moins de distinction entre les phases de développement, de test et d’opérations, qui ne formeront qu’un flux continu. Je pense aussi que  de nouveaux outils nous permettront de voir les applications à différentes échelles. Aujourd’hui nous avons des outils pour les VM, d’autres pour les micro-services, etc. Avec les fonctions, il n’y aura plus ces distinctions. Nous aurons des outils pour débugguer, architecturer, monitorer le code… la fonction est un concept clé qui va permettre des déploiements plus rapides, des applications plus robustes et réactives.

Qu’en est-il d’AWS Step Functions pour gérer des fonctions multiples ?

C’est une première étape, et IBM a également sorti récemment un outil similaire, Composer. Cependant je pense que l’approche visuelle n’est pas suffisante pour gérer des multiples fonctions. Quand il y a plus de 100 microservices (des milliers dans le cas de Netflix), l’approche visuelle ne suffit pas. La facilité de développement des fonctions rend les développeurs prolifiques, il est possible d’avoir plus de fonctions que de microservices, et pour cela il nous faut de meilleurs outils. Il faut différents types de visualisation, mais aussi des outils plus orientés vers le code.  Il existe des outils avec une très bonne interface utilisateur, mais si on a besoin de plus richesse et de complexité, alors il faut coder.

Quel sera le sujet de votre présentation lors de la ServerlessConf ?

L’objectif est de démontrer comment un gain de performance est un game changer pour le FaaS, à travers un exemple concret, qui montre comment la performance change l’expérience du développeur. J’utiliserai un outil développé en interne, qui permet de tester automatiquement une fonction quand on la déploie dans le Cloud. Je montrerai également une application construite sur de nombreuses fonctions, où chaque fonction est associée à des tests unitaires; lors du déploiement, tous les tests sont lancés en parallèle. Paralléliser les tests est essentiel pour la rapidité, puisque l’objectif est de réaliser toute la séquence de déploiement et de test en moins d’une seconde. C’est une nouvelle étape dans l’expérience du développeur, qui est rendue possible par le Fonction as a Service.

 

Commentaires :

A lire également sur le sujet :