Envisagez le mode sans serveur. NET - AWS Conseils prescriptifs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Envisagez le mode sans serveur. NET

Présentation

L'informatique sans serveur est devenue une approche populaire pour créer et déployer des applications. Cela est principalement dû à l'évolutivité et à l'agilité qu'offre l'approche sans serveur lors de la création d'une architecture moderne. Cependant, il est important de prendre en compte l'impact financier de l'informatique sans serveur dans certains scénarios.

Lambda est une plate-forme informatique sans serveur qui permet aux développeurs d'exécuter du code sans avoir besoin de serveurs dédiés. Lambda est une option particulièrement intéressante pour. NETles développeurs qui cherchent à réduire les coûts d'infrastructure. Avec Lambda,. NETles développeurs peuvent développer et déployer des applications hautement évolutives et potentiellement rentables. En utilisant une approche sans serveur, les développeurs ne fournissent plus de serveurs pour traiter les demandes d'applications. Les développeurs peuvent plutôt créer des fonctions exécutées à la demande. Cela rend une approche sans serveur plus évolutive, gérable et potentiellement plus rentable que l'exécution, la gestion et le dimensionnement de machines virtuelles. Par conséquent, vous ne payez que pour les ressources utilisées par l'application, sans avoir à vous soucier des ressources sous-utilisées ou des coûts de maintenance du serveur.

Les développeurs peuvent utiliser des plateformes multiplateformes modernes. NETversions permettant de créer des applications sans serveur rapides, efficaces et économiques. Le. NETLes versions de base et les versions plus récentes constituent un framework gratuit et open source mieux adapté à l'exécution sur des plateformes sans serveur que les versions précédentes. NETVersions du framework. Cela permet aux développeurs de réduire le temps de développement et d'améliorer les performances des applications. Moderne NETprend également en charge une gamme de langages de programmation, notamment C# et F#. C'est pourquoi il s'agit d'une option intéressante pour les développeurs qui cherchent à créer des architectures modernes dans le cloud.

Cette section explique comment vous pouvez réaliser des économies en utilisant Lambda comme option sans serveur. Vous pouvez optimiser davantage les coûts en affinant les profils d'exécution de vos fonctions Lambda, en dimensionnant correctement l'allocation de mémoire de vos fonctions Lambda, en utilisant AOT Native et en passant à des fonctions basées sur Graviton.

Impact sur les coûts

La mesure dans laquelle vous pouvez réduire les coûts dépend de plusieurs facteurs, notamment le nombre d'exécutions que vos fonctions sans serveur exécuteront, en plus de la quantité de mémoire allouée et de la durée de chaque fonction. AWS Lambda propose un niveau gratuit, qui inclut un million de requêtes gratuites par mois et 400 000 Go de secondes de temps de calcul par mois. Vous pouvez réduire de manière significative vos coûts mensuels pour les charges de travail correspondant ou non à ces limites du niveau gratuit.

L'utilisation d'un équilibreur de charge avec les fonctions Lambda comme cible peut également entraîner des coûts supplémentaires. Ceci est calculé comme la quantité de données traitées par l'équilibreur de charge pour les cibles Lambda.

Recommandations d'optimisation des coûts

Dimensionnez correctement vos fonctions Lambda

Le bon dimensionnement est une pratique essentielle pour optimiser les coûts dans. NETbasées sur des fonctions Lambda. Ce processus consiste à identifier la configuration de mémoire optimale qui équilibre les performances avec la rentabilité, sans qu'il soit nécessaire de modifier le code.

En configurant la mémoire pour une fonction Lambda, comprise entre 128 Mo et 10 240 Mo, vous ajustez également la quantité de v CPU disponible lors de l'invocation. Cela permet aux applications liées à la mémoire ou aux applications CPU liées à la mémoire d'accéder à des ressources supplémentaires pendant l'exécution, ce qui entraîne une réduction potentielle de la durée d'appel et du coût global.

Cependant, il faut identifier la configuration optimale pour votre. NETles fonctions Lambda basées sur le protocole Lambda peuvent être un processus manuel et chronophage, en particulier si les modifications sont fréquentes. L'outil AWS Lambda Power Tuning peut vous aider à identifier la configuration appropriée en analysant un ensemble de configurations de mémoire par rapport à un exemple de charge utile.

Par exemple, augmenter la mémoire pour un. NETLa fonction Lambda basée sur le protocole Lambda peut améliorer le temps total d'appel et réduire les coûts sans affecter les performances. La configuration de mémoire optimale pour une fonction peut varier. L'outil AWS Lambda Power Tuning peut aider à identifier la configuration la plus rentable pour chaque fonction.

Dans l'exemple de graphique suivant, le temps d'appel total augmente à mesure que la mémoire augmente pour cette fonction Lambda. Cela permet de réduire le coût total d'exécution sans affecter les performances initiales de la fonction. Pour cette fonction, la configuration de mémoire optimale est de 512 Mo, car c'est là que l'utilisation des ressources est la plus efficace pour le coût total de chaque appel. Cela varie selon les fonctions, et l'utilisation de l'outil sur vos fonctions Lambda permet de déterminer si elles bénéficient d'un dimensionnement correct.

Graphique du temps d'invocation

Nous vous recommandons de réaliser cet exercice régulièrement, dans le cadre de tout test d'intégration lors de la publication de nouvelles mises à jour. En cas de mise à jour peu fréquente, effectuez cet exercice régulièrement pour vous assurer que les fonctions sont réglées et correctement dimensionnées. Après avoir identifié le paramètre de mémoire approprié pour vos fonctions Lambda, vous pouvez ajouter le bon dimensionnement à vos processus. L'outil AWS Lambda Power Tuning génère une sortie programmatique qui peut être utilisée par vos flux de travail CI/CD lors de la publication du nouveau code. Cela vous permet d'automatiser la configuration de la mémoire.

Vous pouvez télécharger gratuitement l'outil AWS Lambda Power Tuning. Pour obtenir des instructions sur l'utilisation de l'outil, reportez-vous à la section Comment exécuter la machine à états dans GitHub.

Lambda prend également en charge le mode natifAOT, ce qui permet. NETapplications à précompiler. Cela peut contribuer à réduire les coûts en réduisant les délais d'exécution pour. NETfonctions. Pour plus d'informations sur la création de AOT fonctions natives, consultez. NETfonctions avec AOT compilation native dans la documentation Lambda.

Évitez les temps d'attente inactifs

La durée de la fonction Lambda est une dimension utilisée pour calculer la facturation. Lorsque le code de fonction effectue un appel bloquant, le temps d'attente avant de recevoir une réponse vous est facturé. Ce temps d'attente peut augmenter lorsque les fonctions Lambda sont enchaînées ou lorsqu'une fonction agit en tant qu'orchestrateur pour d'autres fonctions. Si vous avez des flux de travail tels que des opérations par lots ou des systèmes de livraison de commandes, cela augmente les frais de gestion. En outre, il se peut qu'il ne soit pas possible de terminer l'ensemble de la logique du flux de travail et de gérer les erreurs dans le délai Lambda maximal de 15 minutes.

Au lieu de gérer cette logique dans le code de fonction, nous vous recommandons de redéfinir l'architecture de votre solution pour l'utiliser AWS Step Functionsen tant qu'orchestrateur du flux de travail. Lorsque vous utilisez un flux de travail standard, vous êtes facturé pour chaque transition d'état au sein du flux de travail plutôt que pour la durée totale du flux de travail. En outre, vous pouvez placer la prise en charge des nouvelles tentatives, des conditions d'attente, des flux de travail liés aux erreurs et des rappels dans la condition d'état afin de permettre à vos fonctions Lambda de se concentrer sur la logique métier. Pour plus d'informations, consultez la section Optimisation de vos AWS Lambda coûts — partie 2 du blog AWS Compute.

Passez aux fonctions basées sur la gravitation

Les fonctions Lambda alimentées par les processeurs Graviton2 de nouvelle génération sont désormais généralement disponibles. Les fonctions Graviton2, qui utilisent une architecture de processeur ARM basée sur une architecture de processeur, sont conçues pour offrir des performances jusqu'à 19 % supérieures à un coût inférieur de 20 % pour une variété de charges de travail sans serveur. Avec une latence plus faible et de meilleures performances, les fonctions alimentées par les processeurs Graviton2 sont idéales pour alimenter les applications sans serveur critiques.

La migration vers les fonctions Lambda basées sur Graviton peut être une option rentable pour. NETles développeurs qui cherchent à optimiser leurs coûts Lambda. Les fonctions basées sur le graviton utilisent des processeurs ARM basés sur le gravillon au lieu des processeurs x86 traditionnels. Cela peut permettre de réaliser d'importantes économies sans pour autant sacrifier les performances.

Bien que le passage aux fonctions basées sur Graviton présente plusieurs avantages, nous vous recommandons de prendre en compte plusieurs défis et considérations. Par exemple, les fonctions basées sur Graviton nécessitent l'utilisation d'Amazon Linux 2, qui n'est peut-être pas compatible avec tous les systèmes. NETapplications. En outre, il peut y avoir des problèmes de compatibilité avec des bibliothèques tierces ou des dépendances qui ne sont pas compatibles avec les processeurs ARM basés sur des processeurs.

Si tu cours. NETFramework les applications et si vous souhaitez tirer parti du mode sans serveur avec Lambda, vous pouvez envisager de les porter vers des applications modernes. NETen utilisant l'assistant de portage pour. NET. Cela peut vous aider à accélérer le portage de l'ancienne version. NETapplications à la modernité. NET, permettant à l'application de s'exécuter sous Linux.

Le graphique suivant compare les résultats des architectures x86 et ARM /Graviton2 pour une fonction qui calcule des nombres premiers.

Comparaison des architectures x86 et ARM /Graviton2

La fonction utilise un seul thread. La durée la plus faible pour les deux architectures est indiquée lorsque la mémoire est configurée avec 1,8 Go. Au-delà, les fonctions Lambda ont accès à plus de 1 vCPU, mais dans ce cas, la fonction ne peut pas utiliser la puissance supplémentaire. Pour la même raison, les coûts sont stables avec une mémoire allant jusqu'à 1,8 Go. Avec plus de mémoire, les coûts augmentent car cette charge de travail ne présente aucun avantage supplémentaire en termes de performances. Le processeur Graviton2 fournit clairement de meilleures performances et des coûts réduits pour cette fonction gourmande en ressources informatiques.

Pour configurer votre fonction afin d'utiliser un processeur ARM basé sur Graviton, procédez comme suit :

  1. Connectez-vous à la console Lambda, AWS Management Console puis ouvrez-la.

  2. Sélectionnez Create function (Créer une fonction).

  3. Pour Nom de la fonction, entrez un nom.

  4. Pour Runtime, choisissez. NET6 (C#/ PowerShell).

  5. Pour Architecture, sélectionnez arm64.

  6. Effectuez les configurations supplémentaires dont vous avez besoin, puis choisissez Create function.

Ressources supplémentaires