Configurarea AWS Lambda pentru producție

Implementarea aplicațiilor pe AWS

Dunieski Otano

Amazon Web Services Solutions Architect

A funcționat în teste

  • Funcția a trecut toate testele
  • În producție expiră și se throttlează
  • Codul era corect; configurația nu

O funcție serverless care a trecut testele, dar are probleme în producție, cu reglaje de memorie și timeout

Implementarea aplicațiilor pe AWS

Configurări Lambda importante în producție

Logo-ul central Lambda cu patru casete de configurare pentru producție: Memorie cu selector de scalare CPU, Timeout cu ceas, Stocare efemeră și Concurență cu instanțe paralele

  • Memorie: scalează și CPU și rețeaua
  • Timeout: secunde maxime înainte ca funcția să fie oprită
  • Stocare efemeră: spațiu temporar în /tmp
  • Concurență: câte instanțe rulează simultan
Implementarea aplicațiilor pe AWS

Dimensionarea memoriei și legătura cu CPU

  • Mai multă memorie = mai mult CPU proporțional
  • O funcție CPU-intensivă rulează mai rapid la memorie mai mare
  • Durată mai scurtă poate însemna cost mai mic
  • Dimensionează corect prin testare, nu prin estimare

Curba memorie-cost: durata scade abrupt pe măsură ce memoria crește, apoi se aplatizează; costul total formează o curbă U, cu punctul optim evidențiat în mijloc

Implementarea aplicațiilor pe AWS

Concurență: rezervată vs. provizionată


Concurență rezervată

  • Limitează numărul maxim de execuții simultane
  • Protejează sistemele din aval și alte funcții

Concurență provizionată

  • Pre-încălzește instanțele, eliminând cold start-ul
  • Pentru funcții cu latență redusă, expuse utilizatorilor
Implementarea aplicațiilor pe AWS

Packaging pentru configurare și cod partajat

  • Variabile de mediu: configurare per-mediu
  • Layere: partajează cod și dependențe între funcții
  • Extensii: rulează alături de funcție pentru instrumente
  • Păstrează configurarea în afara pachetului de deployment

Opțiuni de packaging Lambda: variabile de mediu cu configurare externă, layere care partajează biblioteci comune între funcții și extensii care rulează alături de handler pentru monitorizare sau secrete

Implementarea aplicațiilor pe AWS

Conectarea Lambda la un VPC

Lambda conectat la un VPC privat prin ENI-uri în subrețele private, grup de securitate care controlează accesul de ieșire și un NAT gateway pentru conectivitate la internet

  • Atașează Lambda la subrețele private pentru resurse interne
  • Lambda creează ENI-uri în VPC-ul tău
  • Grupurile de securitate controlează accesul
  • Necesită un NAT sau endpoint VPC pentru acces extern
Implementarea aplicațiilor pe AWS

Gestionarea erorilor cu destinations și DLQ-uri

  • Invocările async reîncearcă automat la eroare
  • Lambda Destinations: rutează onSuccess și onFailure
  • Dead-letter queue: captează evenimentele care eșuează mereu
  • Nu ignora niciodată în tăcere un eveniment eșuat

Gestionarea erorilor async Lambda: buclă de reîncercare către Lambda Destinations cu ramuri onSuccess și onFailure, și un dead-letter queue care captează evenimentele care epuizează toate reîncercările

Implementarea aplicațiilor pe AWS

Hai să exersăm!

Implementarea aplicațiilor pe AWS

Preparing Video For Download...