RÉALISATION

Lambda : mémoire, concurrence et observabilité

Un même programme Java 25, trois allocations mémoire et deux campagnes pour comparer les résultats observés.

La question

Comment l’allocation mémoire influence-t-elle un calcul Java ? Et comment vérifier que la concurrence, les métriques et les traces se comportent comme attendu ?

La charge CPU utilisée est artificielle.

Architecture

  1. Invocations Lambda
  2. Trois fonctions Java 25
  3. Logs et métriques CloudWatch
  4. Traces X-Ray

Les invocations déclenchent trois fonctions qui partagent le même programme. Chaque fonction produit ses logs et métriques dans CloudWatch et émet des traces vers X-Ray. Un rôle IAM commun a été audité pour les permissions d’écriture limitées aux logs et aux traces.

Un rôle d’exécution commun autorise les écritures de logs et de traces.

Le protocole

  • Runtime Java 25, même programme et même résultat de calcul : 78 498.
  • Trois allocations mémoire : 256, 1 024 et 2 048 MB.
  • Cinq exécutions par taille pour chacune des deux campagnes.
  • Un mode de calcul CPU et un mode d’attente de 3 000 ms pour le test de concurrence.

Deux campagnes de mesures

Première campagne — moyenne de cinq exécutions par taille
MémoireDurée du handlerDurée facturéeGB·ms
256 MB1 008,8 ms1 030,2 ms257,55
1 024 MB245,2 ms248,2 ms248,2
2 048 MB123 ms126,4 ms252,8
Dernière campagne — moyenne de cinq exécutions par taille
MémoireDurée du handlerDurée facturéeGB·ms
256 MB969 ms986 ms246,5
1 024 MB139 ms141,6 ms141,6
2 048 MB142,4 ms145,2 ms290,4

Les GB·ms expriment le produit mémoire-durée, pas un montant en dollars. La première campagne favorise 2 048 MB en latence ; la dernière favorise 1 024 MB en latence et en GB·ms. Les deux résultats montrent la variabilité observée.

Concurrence et rejet contrôlé

Six appels d’attente ont réussi en 5 201 ms de temps total, contre 18 000 ms séquentielles théoriques, soit un rapport d’environ 3,46.

Une réservation positive à deux exécutions a échoué à cause d’une contrainte de quota et a été retirée du template. Une réservation temporaire à zéro a ensuite servi à provoquer le rejet attendu puis a été supprimée.

Vérifier l’observation elle-même

  • CloudWatch, sur une fenêtre de trente minutes : 12 invocations, zéro erreur, un throttle, concurrence maximale de six.
  • X-Ray : quatre résumés retrouvés ; une trace récupérée avec deux segments.
  • IAM : rôle commun aux trois fonctions, deux policies inline pour logs et traces, aucune policy gérée attachée.

La lecture des traces côté service a retrouvé l’identifiant absent des logs parsés.

Ce que je retiens

Comparer un même workload sur plusieurs campagnes et vérifier les données dans les services d’observabilité donne plus d’informations qu’un chiffre isolé.