Agence web » Actualités du digital » Quelles sont les fonctions Lambda et comment les utilisez-vous ?

Quelles sont les fonctions Lambda et comment les utilisez-vous ?

Les fonctions AWS Lambda sont un moyen d’exécuter du code sans provisionner ni gérer vos propres serveurs. Plutôt que d’exécuter une application toujours en ligne, ils exécutent une seule fonction dans le cloud, qui peut être déclenchée en réponse à des événements API ou à d’autres événements dans votre compte AWS.

Comment utilisez-vous les fonctions Lambda ?

Lambda est un service de calcul simple et simple, et c’est probablement le plus simple de tous. Plutôt que de louer un serveur avec un nombre spécifique de cœurs et une quantité de RAM, vous téléchargez simplement votre code et exécutez la fonction. Habituellement, vous ne l’exécuterez pas manuellement; au lieu de cela, vous le configurerez pour qu’il s’exécute en fonction des actions d’autres services AWS. Par exemple, exécuter une fonction pour redimensionner les images chaque fois qu’un nouveau fichier est placé dans S3 (une méthode utilisée par le Seattle Times à bon escient), ou interroger une base de données chaque fois qu’une demande est envoyée à API Gateway.

Les ressources informatiques sont automatiquement attribuées à la fonction en cours d’exécution et celle-ci utilisera autant de mémoire que nécessaire pendant la durée de la tâche. Vous êtes simplement facturé en fonction du nombre d’appels de fonctions et de la quantité de mémoire utilisée par chaque appel.

Cela rend Lambda très flexible pour une utilisation en tant que backend. Les applications traditionnelles sont pour la plupart monolithiques; vous avez un serveur (ou une flotte d’entre eux) exécutant votre application. Vous pouvez avoir des serveurs séparés pour l’hébergement Web, les bases de données et d’autres choses, mais de nombreuses applications sont conçues de cette façon: un gros exécutable, de nombreuses pièces mobiles.

Avec tout ce qui est si interconnecté et sans ordre strict, cela peut devenir très rapide. Il est également plus difficile d’évoluer efficacement; si vous constatez qu’une partie de votre application est le goulot d’étranglement, il peut être difficile de l’éliminer sans faire évoluer l’application entière et augmenter considérablement votre facture AWS dans le processus.

Au lieu de cela, vous pouvez supprimer entièrement le goulot d’étranglement et le déplacer vers Lambda. Après tout, Lambda ne se soucie pas si vous exécutez votre fonction dix fois par mois ou dix millions de fois par mois.

Cela permet à Lambda d’être très efficace et, lorsqu’il est correctement mis en œuvre, peut vous faire économiser beaucoup d’argent. Adam Pash de Postlight a pu faire passer sa facture mensuelle AWS de plus de 10 000 $ à seulement 370 $, simplement en passant à Lambda et en optimisant l’utilisation de la mémoire.

Bien que cela ne soit pas aussi drastique ou facile pour chaque application, Lambda présente de grands avantages qui en font un élément crucial de la gamme de services de calcul AWS.

Pour les applications non essentielles à la mission, il présente également un moyen très économique d’exécuter une application qui doit effectuer des demandes d’API. Par exemple, vous pouvez diffuser une application Web statique sans tout serveurs, en stockant votre site Web dans S3, en le servant via CloudFront et en vous connectant à un backend Lambda via API Gateway qui communique avec une table DynamoDB.

Combien coûtent-ils ?

Comme la plupart d’AWS, la tarification de Lambda est en grande partie un modèle de «paiement à l’utilisation». Plutôt que de payer un prix forfaitaire pour l’ensemble du serveur, vous ne paierez que pour la quantité exacte de ressources que votre application utilise – vous ne payez jamais pour le temps d’inactivité, pas même une seconde. Cela rend évidemment Lambda assez efficace, en plus de pouvoir éliminer les goulots d’étranglement dans les applications monolithiques.

Les frais de Lambda sont les suivants :

  • 0,20 $ pour 1 million de demandes
  • 0,0000 $ 16666 pour chaque Go-seconde

La première accusation a le plus de sens; si vous avez 100 millions de demandes par mois, vous devrez payer des frais de 20 $ pour cela.

La deuxième accusation est beaucoup plus confuse. Fondamentalement, vous êtes facturé en fonction de l’utilisation de la mémoire de vos fonctions, car c’est généralement le facteur limitant pour AWS. Si votre fonction démarre, alloue 1024 Mo de RAM et s’exécute pendant une seule seconde, vous serez facturé 0,000001667 $ pour cela. C’est un chiffre assez faible, mais pour 1 million de demandes, c’est 1,667 $.

Naturellement, vous voudrez choisir un runtime efficace en mémoire. NodeJS est couramment utilisé, car il est assez léger par rapport à des exécutions comme Java. Cependant, Java peut être plus rapide pour les tâches qui prennent plus de temps à terminer, et comme vous ne payez pas le temps passé à initialiser le runtime (c’est-à-dire un « démarrage à froid »), ce n’est pas toujours aussi mauvais qu’il n’y paraît sur le papier.

C’est tout un jeu d’équilibrage, mais vous voulez chercher à minimiser deux choses: l’utilisation de la mémoire et le temps passé à exécuter la fonction. Il n’y a pas de frais explicites pour les fonctions plus longues, mais vous êtes facturé à la seconde, par Go, donc une fonction de 256 Mo qui s’exécute pendant deux secondes vous coûtera le même prix qu’une fonction de 512 Mo qui s’exécute pour une.

Commencer

Connectez-vous à votre compte AWS et accédez à la Lambda Management Console.

Il y a deux onglets principaux ici. Le premier concerne les applications; Les applications Lambda gèrent plusieurs fonctions et sont spécifiquement déployées automatiquement à l’aide d’un modèle SAM. Cela leur permet d’être suivis sur Git et la version gérée, ce qui aide énormément lorsque vous travaillez avec des centaines de fonctions.

Le deuxième onglet concerne les fonctions individuelles. Si vous créez simplement une fonction Lambda autonome, ou si vous essayez simplement de vous en faire une idée, vous devriez commencer ici et créer une fonction à partir de zéro, car c’est beaucoup plus simple.

Vous pouvez créer une nouvelle fonction depuis l’onglet «Fonctions»:

Vous avez ici quelques options. Vous pouvez créer la fonction entièrement à partir de zéro, ce qui initialisera la fonction avec rien de plus qu’un bonjour. Vous pouvez également choisir d’utiliser un modèle prédéfini, ou même télécharger une fonction à partir du référentiel d’applications sans serveur Lambda.

Si vous le créez par vous-même, vous devrez choisir un runtime. Lambda a quelques choix par défaut:

Vous pouvez également apporter votre propre runtime pour exécuter la langue de votre choix.

Une fois qu’il est créé, vous pouvez le modifier à partir de la page de la fonction. La fonction NodeJS standard exporte un gestionnaire, qui est appelé chaque fois que la fonction répond aux événements.

Nous vous recommandons d’utiliser l’IDE Cloud9 d’AWS pour travailler avec les fonctions Lambda. Il s’agit d’un IDE Web basé sur le même éditeur que celui utilisé sur l’éditeur de fonctions par défaut, mais avec l’avantage supplémentaire de tests et de débogage beaucoup plus faciles.

Si vous souhaitez que votre fonction réponde aux demandes d’API, la méthode la plus simple pour le configurer est avec API Gateway. Vous pouvez créer une nouvelle API et la faire router certains points de terminaison directement vers une fonction Lambda spécifique, qui gérera la demande et renverra une réponse.

Sinon, vous pouvez spécifier un déclencheur dans le «Designer» en haut, par exemple chaque fois qu’un objet est placé dans un compartiment S3 particulier. Vous pouvez également spécifier une destination vers laquelle les résultats seront envoyés, comme une file d’attente SQS, une rubrique SNS ou une autre fonction Lambda.

La fonction Lambda s’exécutera avec les privilèges qui lui sont accordés par le rôle d’exécution qui a été créé pour elle. Si vous accédez à d’autres ressources AWS, vous devrez l’autoriser à le faire dans la console de gestion IAM.

★★★★★