Tehnici de optimizare a performanței

Aplicații serverless cu AWS Lambda

Claudio Canales

Senior DevOps Engineer

Performanță = latență + cost

  • Plătești pentru timp.
  • Optimizarea performanței înseamnă și reducerea costurilor.
  • Măsoară înainte să optimizezi.
  • Schimbă câte un singur lucru odată.

Cronometru și cost

Aplicații serverless cu AWS Lambda

Unde se duce timpul

  • Inițializare.
  • Execuția handler-ului.
  • Timp de așteptare pentru apeluri externe.

Init vs handler vs apeluri externe

Aplicații serverless cu AWS Lambda

Cold start vs warm start

Cold start

  • Lambda are nevoie de un mediu nou.

Warm start

  • Reutilizează un mediu existent.
  • Handler-ul rulează cu mai puțin overhead.

Cronologie cold vs warm

Aplicații serverless cu AWS Lambda

Lucrul din init vs lucrul din handler

  • Importurile și configurarea globală rulează la init.
  • Un init voluminos încetinește cold start-urile.
  • Durata init-ului apare în metrici.

Separare init vs handler

Aplicații serverless cu AWS Lambda

Reutilizează clienții la invocare warm

  • Crearea unui client la fiecare invocare repetă costul.
  • Reutilizează-l când mediul este warm.

Reutilizare client global

Aplicații serverless cu AWS Lambda

Tipar de cod: clientul în afara handler-ului

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

Client creat o singură dată

Aplicații serverless cu AWS Lambda

Folosește cache cât mai mult

  • Păstrează datele în memorie.
  • Folosește /tmp pentru fișiere temporare mici.
  • Aplică cache cu grijă și invalidează când e necesar.

Cache în memorie și /tmp

Aplicații serverless cu AWS Lambda

Menține dependențele ușoare

  • Pachetele mari durează mai mult la încărcare.
  • Elimină ce nu folosești.
  • Menține dependențele cât mai mici.

Pachet de dependențe slim vs voluminos

Aplicații serverless cu AWS Lambda

Loghează cu discernământ

  • Logging excesiv crește costul și zgomotul.
  • Optează pentru mesaje scurte și structurate.
  • Păstrează log-urile căutabile; ajută la depanare.

Volum de log-uri vs semnal

Aplicații serverless cu AWS Lambda

Reduce overhead-ul apelurilor externe

  • Apelurile către alte servicii sunt cel mai lent element.
  • Reduce apelurile; grupează operațiunile când e posibil.
  • Setează timeout-uri ca erorile să nu blocheze execuția.

Minimizare apeluri externe

Aplicații serverless cu AWS Lambda

Memoria influențează și CPU-ul

  • CPU-ul scalează odată cu memoria.
  • Codul CPU-bound poate termina mai repede.
  • Mai multă memorie poate scurta durata sau costul.
  • Testează pentru a găsi valoarea optimă.

Memorie -> CPU -> execuție mai rapidă

Aplicații serverless cu AWS Lambda

Găsește punctul optim de cost

  • Setarea optimă de memorie minimizează costul total.
  • Curba scade, apoi se aplatizează sau crește.
  • Retestează după fiecare modificare.

Curba cost vs memorie

Aplicații serverless cu AWS Lambda

Măsoară cu CloudWatch

  • Urmărește Duration și Init duration.
  • Urmărește erorile și throttle-urile.
  • Monitorizează latențele de coadă (p95, p99).

Metrici de performanță CloudWatch

Aplicații serverless cu AWS Lambda

Reducerea cold start-urilor

  • Redu ce rulează în init.
  • Menține pachetul ușor.
  • Reutilizează configurările costisitoare.
  • Ia în calcul medii provizionate.

Listă de verificare pentru reducerea cold start-urilor

Aplicații serverless cu AWS Lambda

Concluzii cheie

  • Știi unde se duce timpul.
  • Reutilizează clienții și folosește cache cu grijă.
  • Memoria influențează CPU-ul și durata.
  • Măsoară fiecare modificare.

Concluzii cheie despre performanță

Aplicații serverless cu AWS Lambda

Hai să exersăm!

Aplicații serverless cu AWS Lambda

Preparing Video For Download...