thundra.io qui est un outil de monitoring pour AWS Lambda permet, entre autre, d’avoir des métriques et du tracing sur les Lambdas déployées, mais aussi de faire du keep warm pour limiter les cold start dans une application web en serverless. Thundra n’est pas le seul outil/framework qui permet d’implémenter le keep warm, cela existe avec serverless et Zappa notamment.
Actuellement, thundra est en version beta et son utilisation est gratuite dans la limite de 1000 requêtes par minute. Dans un environnement en production il faut aussi tenir compte du coût d’un service comme thundra. Comme cela est décrit dans cet article, le keep warm n’a pas vocation à éviter tous les cold start mais, à minimiser son impact dans le cas d’une application web serverless. L’approche de Thundra pour le keep warm nécessite de jouer sur 2 paramètres qui sont : le nombre de Lambda dans la pool de Lambda en keep warm et le laps de temps entre les appels pour maintenir les fonctions allumées. Source : https://theburningmonk.com/2018/01/im-afraid-youre-thinking-about-aws-lambda-cold-starts-all-wrong/
Par défaut, Thundra va créer un pool de 8 Lambdas et envoyer un événement toutes les 5 minutes. Pour créer un pool de lambda et s’assurer de les garder allumées, il faut que la Lambda en charge du keep warm fasse des appels sur les Lambdas cibles. Le code des Lambda présentes dans la pool doit gérer les requêtes de type keep warm différemment. Dans ce cas, le code déclenche un sleep pour que la Lambda paraisse occupée et que la requête suivante soit envoyée sur une autre lambda du pool. En récupérant, l’id de chaque Lambda, il est possible de s’assurer que toutes les Lambdas du pool soient maintenues allumées.
Avec cette configuration, sur 5 appels concurrents de 5 requêtes, Thundra enregistre 5 cold start alors qu’avec le keep warm les Lambdas ne le subissent pas. Après avoir mis en place cette technique sur le code de test et avec l’aide de l’outil Thundra pour avoir des retours de mesures. Voici le détails des invocations (avec et sans cold start).
Pour conclure, le cold start a un impact important sur les applications serverless destinées à des utilisateurs. Le cold start peut être minimisé grâce à la technique du keep warm mais cela nécessite encore des efforts de la part des développeurs pour optimiser cette technique. Les outils intègrent de plus en plus la mise en place du keep warm de façon automatisée. Pour le moment, cela reste encore primaire, mais il faut garder en tête que ces outils sont jeunes et avec le temps, ils gagneront en maturité et proposeront des solutions plus robustes.
Liens et sources : Articles:
Vidéos: