Dans une architecture serverless, ou sans serveur, le fait d'avoir plus de points de présence a un grand impact positif sur les performances.
Cet article s'articule autour des points suivants :
Copier le lien de l'article
L'un des avantages de l'informatique sans serveur est la possibilité d'exécuter du code d'application depuis n'importe quel endroit. Par définition, une architecture sans serveur ne comporte pas de serveurs d'origine ; le code peut donc être exécuté en périphérie, près des utilisateurs finaux. AWS Lambda@Edge et Cloudflare Workers sont deux plateformes sans serveur permettant de tirer parti de cette caractéristique et de la réduction de latence ainsi obtenue. En mesurant les performances de Lambda par rapport à celles de Cloudflare Workers et de Lambda@Edge, il est possible d'observer les effets du déploiement d'applications sans serveur en périphérie. Les résultats des tests (ci-dessous) montrent que les temps de réponse de Cloudflare Workers sont généralement plus rapides.
AWS Lambda est un service d'infrastructure sans serveur de la société Amazon Web Services. Lambda contient des fonctions d'application orientées événements écrites dans plusieurs langues, et il les démarre et les exécute lorsque cela est nécessaire.
AWS peut être déployé dans plusieurs régions du monde. Généralement, les applications hébergées sur Lambda ne le seront que dans une seule de ces régions.
AWS Lambda@Edge désigne un déploiement Lambda dans toutes les régions couvertes par AWS dans le monde entier au lieu d'une seule région délimitée géographiquement. Lambda prend en charge plusieurs langues, mais les fonctions Lambda@Edge s'exécutent sur Node.js, un environnement d'exécution pour JavaScript. Lorsqu'une fonction Lambda@Edge est activée, elle s'exécute dans la région AWS la plus proche de la source de l'événement déclencheur, ce qui signifie qu'elle s'exécute aussi près que possible de la personne ou de la machine qui utilise l'application.
Par exemple, supposons qu'un utilisateur de Chicago demande certaines informations par le biais d'une application dont l'architecture est sans serveur. Si l'infrastructure de l'application sans serveur est hébergée par AWS Lambda dans la région US-East-1 (en Virginie), la requête devra être acheminée jusqu'à un centre AWS en Virginie, et la réponse sera acheminée de là jusqu'à Chicago. Si l'infrastructure de l'application sans serveur est hébergée par AWS Lambda dans la région US-East-1 (en Virginie), la requête devra être acheminée jusqu'à un centre AWS en Virginie, et de là, la réponse sera renvoyée à Chicago. Cette réduction de la distance réduit la latence par rapport à AWS Lambda.
Tout comme AWS Lambda@Edge, Cloudflare Workers regroupe des fonctions JavaScript orientées événements hébergées dans des datacenters du monde entier. Toutefois, ces deux services d'infrastructure sans serveur présentent de nombreuses différences importantes. Cloudflare Workers s'exécute directement dans Chrome V8 plutôt que dans Node.js, et Cloudflare possède des datacenters dans 200 villes du monde entier. Comme ils utilisent directement V8, Cloudflare Workers peut démarrer beaucoup plus rapidement et consomme beaucoup moins de ressources que les autres plateformes sans serveur. Dans l'exemple ci-dessus, si l'utilisateur de Chicago essayait d'obtenir une réponse depuis une application développée avec Cloudflare Workers, la requête était envoyée au PoP de Cloudflare de Chicago plutôt que dans l'Ohio.
En technologie réseau, la « latence » correspond au délai qui s'écoule avant le chargement des informations demandées. Plus la latence augmente, plus le nombre d'utilisateurs qui quittent la page web augmente.
La moindre réduction du temps de chargement augmente considérablement l'engagement client. Par exemple, une étude de Walmart a montré que chaque amélioration d'une seconde du temps de chargement des pages augmentait de 2 % les taux de conversion. À l'inverse, plus la latence augmente, plus les utilisateurs ont de chances de quitter un site web ou une application. La latence diminue à mesure que se réduit la distance que les informations doivent parcourir.
Un point de présence (PoP) est un lieu où les réseaux de communication se rejoignent, et dans le contexte d'internet, c'est un lieu où se trouve le matériel informatique (routeurs, commutateurs, serveurs, etc.) qui permet aux utilisateurs de se connecter à Internet. Dans le cas d'un réseau de périphérie, un point de présence est l'emplacement d'un serveur de périphérie. Un plus grand nombre de points de présence en périphérie permet d'apporter des réponses plus rapides à un plus grand nombre d'utilisateurs, car plus les points de présence sont nombreux, plus la probabilité de se trouver à proximité d'un utilisateur augmente.
Cloudflare a effectué des tests comparatifs entre AWS Lambda, Lambda@Edge et Cloudflare Workers afin de démontrer la réactivité des systèmes sans serveur et de tester l'efficacité du déploiement de fonctions sans serveur sur plusieurs PoP. (Les fonctions de test étaient des scripts simples qui indiquaient l'heure au moment où elles étaient exécutées.)
Le tableau ci-dessous présente les temps de réponse des fonctions AWS Lambda (en bleu), AWS Lambda@Edge (en vert) et Cloudflare Workers (en rouge). Dans le cadre de ce test, les fonctions d'AWS Lambda étaient hébergées dans la région US-East-1.
Dans une architecture sans serveur, l'endroit où le code s'exécute (du point de vue géographique) a un impact sur la latence. Si le code de l'application s'exécute plus près de l'utilisateur, les performances de l'application s'améliorent car les informations parcourent une distance moindre et l'application réagit plus rapidement. Bien que les délais de réponse soient variables pour les trois services, les réponses de Cloudflare Workers sont généralement plus rapides. Lambda@Edge arrive en deuxième position en terme de rapidité, ce qui démontre les avantages de l'exécution de fonctions sans serveur à plusieurs endroits.
Bien qu'AWS soit réparti dans le monde entier, Cloudflare possède davantage de points de présence. Cloudflare a également effectué des tests limités à l'Amérique du Nord, en filtrant les retards dus à la résolution DNS. Les résultats, présentés ci-dessous, montrent une fois de plus qu'un plus grand nombre de PoPs réduit la latence et améliore les performances. Vous remarquerez que les réponses des Cloudflare Workers sont les plus rapides.
Dans l'informatique sans serveur, un « démarrage à froid » désigne le moment où une fonction qui n'a pas été exécutée récemment doit répondre à un événement. Ce type de fonctions doit être « démarré » avant de pouvoir fonctionner, ce qui prend généralement quelques millisecondes. Cela peut entraîner des problèmes de latence supplémentaires.
Cloudflare Workers a entièrement éliminé les démarrages à froid, ce qui signifie qu'ils n'ont besoin d'aucun temps de démarrage. C'est le cas dans chaque emplacement du réseau mondial de Cloudflare. En revanche, les fonctions Lambda et Lambda@Edge peuvent prendre plus d'une seconde pour répondre à un démarrage à froid.
Les différences sont en grande partie dues au fait que les Cloudflare Workers utilisent Chrome V8 plutôt que Node.js. Node.js est basé sur Chrome V8, met plus de temps à tourner et consomme plus de mémoire. Les instances V8 mettent généralement moins de 5 ms à démarrer.
En savoir plus sur Cloudflare Workers.