Scalare și controale de concurență

Aplicații serverless cu AWS Lambda

Claudio Canales

Senior DevOps Engineer

Scalarea într-o singură imagine

  • Mai multă cerere -> mai multe rulări paralele.
  • Fiecare rulare folosește un mediu de execuție.
  • Concurența = rulările active în acest moment.

Vârf de cerere -> mai multe medii

Aplicații serverless cu AWS Lambda

Ce este concurența?

  • O invocare = o unitate de lucru.
  • Concurența = câte rulează în același timp.
  • Dacă rulează 10, concurența = 10.

Invocări paralele

Aplicații serverless cu AWS Lambda

Estimarea concurenței necesare

  • Regulă de bază: concurrency = rps * duration.
  • Reduci durata -> reduci concurența.
  • Folosește formula pentru a stabili limite sigure.

Formula concurenței

Aplicații serverless cu AWS Lambda

Exemplu: 50 rps la 200 ms

  • 200 ms = 0,2 secunde.
  • 50 * 0,2 = 10 execuții concurente.
  • Codul mai rapid înseamnă mai puține rulări paralele.

Exemplu de calcul al concurenței

Aplicații serverless cu AWS Lambda

Limite: pool de cont vs. felie per funcție

  • Concurența este limitată la nivel de cont.
  • Rezervi o parte din pool pentru o funcție critică.
  • Celelalte funcții împart ce rămâne.

Pool de concurență al contului

Aplicații serverless cu AWS Lambda

Concurență rezervată: o limită strictă

  • O supapă de siguranță.
  • Limitează lucrul paralel.
  • Peste limită, invocările sunt throttled.
  • O funcție zgomotoasă nu poate epuiza capacitatea.

Limită de concurență rezervată

Aplicații serverless cu AWS Lambda

Throttling: cum arată

  • Lambda aplică throttling la limita de concurență.
  • Apelantul nu primește o execuție normală.
  • Throttling-ul apare în monitorizare.

Semnale de throttling

Aplicații serverless cu AWS Lambda

Concurență provizionată: capacitate caldă

  • Un pool de medii pre-inițializate.
  • Adesea în spatele unui alias.
  • Cererile pornesc mai rapid.

Pool cald de concurență provizionată

Aplicații serverless cu AWS Lambda

Cold start vs. provizionat

Cold start

  • Întârziere de inițializare o singură dată.
  • Prima cerere plătește costul de setup.

Provizionată

  • Inițializarea se face în avans.
  • Prima cerere nu plătește costul de setup.

Cronologie cold start vs. provizionat

Aplicații serverless cu AWS Lambda

Rezervat vs. provizionat (probleme diferite)

  • Rezervat controlează încărcarea.
  • Provizionat controlează latența la pornire.
  • Multe funcții de producție le folosesc pe ambele.

Comparație rezervat vs. provizionat

Aplicații serverless cu AWS Lambda

Protejarea sistemelor din aval

  • O bază de date suportă doar un număr limitat de conexiuni.
  • O limită de concurență previne suprasolicitarea.
  • Un vârf de trafic poate cauza o întrerupere.

Limita de concurență protejează baza de date

Aplicații serverless cu AWS Lambda

Vârfuri vs. trafic constant

  • Vârfurile creează multe medii paralele.
  • Handler-ele lente mențin concurența ridicată.
  • Limitele pot atenua vârful.
  • Reducerea duratei este și ea o strategie de scalare.

Trafic în vârf vs. trafic constant

Aplicații serverless cu AWS Lambda

Erorile și reîncercările cresc încărcarea

  • Reîncercările pot amplifica traficul.
  • Limitele de concurență reduc impactul.
  • O buclă de erori poate copleși dependențele.

Reîncercările multiplică încărcarea

Aplicații serverless cu AWS Lambda

Un flux simplu de ajustare

  • Începe cu măsurarea.
  • Limitează concurența când apar throttling sau presiune.
  • Adaugă capacitate provizionată când cold start-urile afectează latența.

Măsoară -> limitează -> pre-încălzește

Aplicații serverless cu AWS Lambda

Concluzii cheie

  • Concurența te ajută să înțelegi scalarea.
  • Estimează: rps * duration.
  • Rezervat limitează încărcarea; urmărește throttling-ul.
  • Provizionat reduce latența cold start.

Concluzii cheie despre concurență

Aplicații serverless cu AWS Lambda

Hai să exersăm!

Aplicații serverless cu AWS Lambda

Preparing Video For Download...