Ajustement de performance et techniques d'optimisation

Applications sans serveur avec AWS Lambda

Claudio Canales

Senior DevOps Engineer

Performance = latence + coût

  • Vous payez pour le temps.
  • Accorder la performance, c'est aussi optimiser les coûts.
  • Mesurer avant d'ajuster.
  • Changer un élément à la fois.

Chronomètre et coût

Applications sans serveur avec AWS Lambda

Où passe le temps

  • Initialisation.
  • Exécution du gestionnaire.
  • Attente des appels externes.

Initialisation vs gestionnaire vs appels externes

Applications sans serveur avec AWS Lambda

Démarrage à froid vs à chaud

Démarrage à froid

  • Lambda a besoin d'un nouvel environnement.

Démarrage à chaud

  • Réutilise un environnement existant.
  • Le gestionnaire s'exécute avec moins de surcharge.

Chronologie à froid vs à chaud

Applications sans serveur avec AWS Lambda

Travail d'init vs travail du gestionnaire

  • Les importations et la configuration globale s'exécutent à l'initialisation.
  • Une initialisation lourde ralentit les démarrages à froid.
  • La durée d'initialisation apparaît dans les mesures.

Répartition init vs gestionnaire

Applications sans serveur avec AWS Lambda

Réutiliser les clients entre appels à chaud

  • Créer un client à chaque appel répète le coût.
  • Le réutiliser quand l'environnement est chaud.

Réutilisation d'un client global

Applications sans serveur avec AWS Lambda

Modèle de code : client à l'extérieur du gestionnaire

import boto3
sts = boto3.client("sts")
def handler(event, context):
    return sts.get_caller_identity()

Client créé une seule fois

Applications sans serveur avec AWS Lambda

Mettre en cache ce qui est possible

  • Garder les données en mémoire.
  • Utiliser /tmp pour de petits fichiers temporaires.
  • Mettre en cache prudemment et invalider au besoin.

Mémoire et cache /tmp

Applications sans serveur avec AWS Lambda

Alléger les dépendances

  • Les gros modules se chargent plus lentement.
  • Retrancher ce que vous n'utilisez pas.
  • Garder les dépendances au minimum.

Paquet léger vs lourd en dépendances

Applications sans serveur avec AWS Lambda

Consigner judicieusement

  • Trop de journalisation ajoute des coûts et du bruit.
  • Viser de petits messages structurés.
  • Rester repérable ; faciliter la traçabilité et le débogage.

Volume de journaux vs signal

Applications sans serveur avec AWS Lambda

Réduire la surcharge des appels externes

  • Les appels à d'autres services sont la partie la plus lente.
  • Réduire les appels ; regrouper au besoin.
  • Définir des temporisations pour éviter les blocages en cas d'échec.

Réduire les appels externes

Applications sans serveur avec AWS Lambda

La mémoire influe aussi sur le CPU

  • Le CPU évolue avec la mémoire.
  • Le code lié au CPU peut finir plus vite.
  • Plus de mémoire peut réduire la durée ou le coût.
  • Tester pour trouver la valeur optimale.

Mémoire -> CPU -> exécution plus rapide

Applications sans serveur avec AWS Lambda

Trouver le point optimal de coût

  • Le meilleur réglage mémoire minimise le coût total.
  • La courbe baisse, puis s'aplatit ou remonte.
  • Refaire des tests après chaque changement.

Courbe coût vs mémoire

Applications sans serveur avec AWS Lambda

Mesurer avec CloudWatch

  • Suivre la durée et la durée d'init.
  • Suivre les erreurs et limitations.
  • Surveiller les latences en queue (p95, p99).

Mesures de performance CloudWatch

Applications sans serveur avec AWS Lambda

Réduire les démarrages à froid

  • Réduire ce qui s'exécute à l'initialisation.
  • Garder un paquet léger.
  • Réutiliser les configurations coûteuses.
  • Envisager des environnements provisionnés.

Liste de contrôle pour réduire les démarrages à froid

Applications sans serveur avec AWS Lambda

Points clés à retenir

  • Savoir où passe le temps.
  • Réutiliser les clients et mettre en cache prudemment.
  • La mémoire change le CPU et la durée.
  • Mesurer chaque changement.

Points clés sur la performance

Applications sans serveur avec AWS Lambda

Passons à la pratique !

Applications sans serveur avec AWS Lambda

Preparing Video For Download...