31.02.2023

Parole d'expert : Augmentez la vitesse des fonctions AWS Lambda et économisez de l'argent

001

Introduction

Une brève explication des raisons pour lesquelles l'augmentation de la quantité de mémoire d'une fonction AWS Lambda pourrait réellement vous faire économiser de l'argent

Développez-vous une application Web ou une API ? Ou devez-vous exécuter du code sans serveur ? AWS Lambda est une excellente option. Vous ne payez que ce que vous utilisez et vous pouvez exécuter du code sans devoir mettre en service ou gérer les serveurs. Dans la mesure où il s'agit d’un service de calcul à la carte, de nombreux utilisateurs hésitent à opter pour mémoire plus élevée afin d'augmenter la vitesse de calcul d'AWS Lambda. Ils craignent de payer trop cher.

Mais ces craintes sont infondées. En réalité, l'augmentation de l'utilisation de la mémoire d'AWS Lambda vous fera économiser de l'argent, car plus l'exécution des fonctions est rapide, plus le temps nécessaire pour exécuter le code est réduit.

Vitesse et fonction AWS Lambda

Dans la mesure où AWS Lambda est une « fonction en tant que service » (FaaS), c.-à-d. une catégorie de services informatiques en nuage qui permet aux clients d'exécuter des fonctionnalités d'applications sans avoir à gérer l'infrastructure, vous ne payez que pour le temps de calcul que vous consommez. Cela signifie que vous ne devez rien payer si votre code ne fonctionne pas.

L'un des principaux paramètres des fonctions Lambda concerne la quantité de mémoire disponible. Lambda alloue la puissance de calcul linéairement en proportion de la quantité de mémoire configurée. Selon la documentation, à 1792 Mo, une fonction obtient l'équivalent d'une vCPU entière (une vCPU-seconde de crédits par seconde). Plus vous allouez de mémoire, plus votre fonction s'exécute rapidement.

C'est l'un des principaux arguments de vente de Lambda, mais il peut également rendre certains utilisateurs méfiants. Une mémoire plus élevée signifie un coût plus élevé. Par exemple, dans la région eu-west-1 (Irlande), chaque Go de mémoire par seconde coûte 0,0000166667 $. Comme vous pouvez le voir dans le tableau ci-dessous, les prix sont linéaires.

Coût de AWS Lambda par quantité de mémoire allouée - Source AWS

Les preuves semblent indiquer que l'augmentation de la mémoire d'une fonction Lambda entraînera un coût plus élevé. Mais si je vous disais que ce n'est pas toujours le cas ? Et que cette augmentation de la taille de la mémoire pourrait en fait vous faire économiser de l'argent ?

Économiser de l'argent avec AWS Lambda

L'augmentation de la vitesse des fonctions AWS Lambda permet d'économiser de l'argent pour deux raisons.

Premièrement, les fonctions Lambda bénéficiant d'une plus grande mémoire sont plus rapides, ce qui signifie que vous paierez davantage par seconde, mais qu'il faudra moins de temps pour exécuter votre code. Auparavant, Lambda facturait le nombre de déclenchements de votre code (les requêtes) et la durée d'exécution de votre code, en arrondissant à la centaine de ms (la durée). Mais lors de la conférence Re:Invent 2020 d'Amazon, il a été annoncé que Lambda allait arrondir les durées à la milliseconde près, sans durée d'exécution minimale. Pour cette raison, il est aisé de trouver un point d'équilibre idéal avec des vitesses de mémoire qui permettent un temps d'exécution plus rapide pour un moindre coût.

Le graphique ci-dessous montre comment j'ai atteint le coût le plus faible pour mes fonctions Lambda avec 1024 Mo de mémoire. Le résultat a été une baisse de 10 % du coût avec un temps d'exécution 9 fois supérieur.

Coût d'une fonction AWS lambda à différents niveaux de mémoire - région eu-west-1. Source : Charles Malafosse

La deuxième façon dont une mémoire plus élevée peut vous faire économiser de l'argent concerne la plus grande bande passante et les performances du réseau. Comme les machines ec2, une fonction Lambda plus puissante obtiendra une plus grande bande passante pour son accès à Internet. Cela signifie que les requêtes SQL, l'accès S3 ou les appels API renverront les données plus rapidement. Cela donne lieu à une exécution plus rapide de vos fonctions Lambda.

L'inconvénient majeur est de trouver la taille de mémoire optimale pour fournir le meilleur rapport entre la vitesse AWS Lambda et le coût. Jusqu'à présent, je n'ai pas trouvé de moyen systématique idéal de trouver le bon équilibre. Je me fie encore aux essais et aux erreurs. Mais avec un peu d'expérimentation, vous trouverez ce qui fonctionne le mieux pour vous. Dans mon cas, une taille de mémoire de 1024 Mo fait généralement l'affaire pour la plupart des fonctions.

Une mise en garde...

Bien que vous puissiez économiser de l'argent en augmentant la vitesse des fonctions Lambda avec une mémoire plus élevée, il convient de prendre en compte quelques éléments qui pourraient causer un coût plus élevé.

Tout d'abord, vous devez comprendre le démarrage à froid des fonctions AWS Lambda. Le « démarrage à froid » fait référence à la façon dont les fonctions Lambda sont exécutées. Lorsqu'un conteneur est créé, AWS nécessite plus de temps pour charger le code et configurer l'environnement, plutôt que de simplement réutiliser un conteneur existant. Selon votre fonction, cette opération peut prendre entre quelques millisecondes et quelques secondes.

Malheureusement, les délais de démarrage à froid ne diminuent pas, même avec une quantité de mémoire plus élevée. Si votre fonction Lambda souffre d'un long démarrage à froid, l'augmentation des vitesses aura un effet positif limité sur votre facture. Vous économiserez de l'argent lors de l'exécution, mais les démarrages à froid prolongés finiront par entraîner des coûts plus élevés.

Le deuxième problème à prendre en compte est celui des requêtes de tiers. Ces requêtes peuvent provenir d'une API, d'une base de données ou d'une autre ressource nécessitant un accès. Dans la mesure où les requêtes de tiers sont hors de votre contrôle, l'augmentation de la vitesse de votre fonction Lambda ne réduira pas le temps d'exécution de votre code. Si vous utilisez principalement Lambda pour accéder à des ressources externes, l'augmentation de la mémoire ne réduira probablement pas votre facture. En fait, vous pourriez payer plus sans obtenir de gain significatif en termes de temps d'exécution.

Conclusion

Vous constaterez facilement que l'augmentation de la mémoire de vos fonctions Lambda pour économiser de l'argent vaut la peine d'être tentée. Non seulement vous pouvez réduire votre facture, mais vous bénéficierez également d'une exécution de code plus rapide. Rappelez-vous : commencez lentement par des essais et des erreurs jusqu'à ce que vous trouviez le bon équilibre entre la vitesse de mémoire et le coût. Et gardez à l'esprit les problèmes liés au démarrage à froid et aux requêtes de tiers qui pourraient augmenter les coûts.

Si vous faites vos essais tout en examinant vos factures de près chaque mois, vous serez sur la bonne voie pour réaliser des économies et bénéficier d'une expérience AWS Lambda plus fluide.

Le saviez-vous ? Vous naviguez sur un site éco-responsable ! En savoir plusbox icon
box icon

Créez votre projet avec nous !