Stiluri de arhitectură și tipare de comunicare

Dezvoltarea aplicațiilor pe AWS

Ricardo Sueiras

Principal Technologist

Instructorul tău

instructor

Dezvoltarea aplicațiilor pe AWS

Ce sunt tiparele de arhitectură?

 

 

Arhitectura aplicației

 

  • Soluție repetabilă pentru o problemă comună.
  • Tiparele te ajută să îmbini serviciile AWS.
  • Arhitectura determină cât de bine funcționează aplicația sub sarcină.
  • Există mai multe tipare arhitecturale pe care trebuie să le cunoști.
Dezvoltarea aplicațiilor pe AWS

Monoliți

 

 

diagrama unui exemplu de arhitectură monolit

 

 

  • O unitate unică, strâns cuplată.
  • O singură bază de cod, un singur deployment.
  • Simplu de dezvoltat inițial.
  • Greu de scalat: totul se scalează împreună.
Dezvoltarea aplicațiilor pe AWS

Microservicii

 

arhitectura microserviciilor

 

  • Servicii mici și independente: fiecare gestionează o singură capacitate de business.
  • Fiecare serviciu poate fi deploiat, scalat și actualizat independent.
  • Compromis: complexitate operațională mai mare și comunicare între servicii de gestionat.
Dezvoltarea aplicațiilor pe AWS

Serverless

  • Nicio infrastructură de gestionat – doar cod și configurare.
  • Construiești prin compunerea serviciilor gestionate AWS.
  • AWS se ocupă de provizionare, scalare și mentenanță.
  • Compromis: limite de timp de execuție, cold starts, dependență de vendor.
  • Overhead operațional aproape zero și scalare automată.

 

arhitectura serverless

Dezvoltarea aplicațiilor pe AWS

Arhitectura event-driven (EDA)

  • Componentele comunică prin producerea și consumul de evenimente, nu prin apeluri directe.
  • Un eveniment înregistrează ceva ce s-a întâmplat (comandă plasată, plată primită, articol expediat).
  • Producătorii emit evenimente.
  • Consumatorii se abonează la evenimentele care îi interesează.

 

arhitectura event-driven

Dezvoltarea aplicațiilor pe AWS

Sisteme strâns și slab cuplate

  • Aplicațiile cloud moderne sunt formate din mai multe servicii.
  • Serviciile trebuie să comunice și să se coordoneze pentru a finaliza operațiunile.
  • Comunicarea sincronă este strâns cuplată.
  • Comunicarea asincronă este slab cuplată.

sisteme strâns și slab cuplate

Dezvoltarea aplicațiilor pe AWS

Comunicare sincronă

 

comunicare sincronă

  • Un serviciu trimite o cerere și așteaptă răspunsul.
  • Apelantul este blocat până la primirea răspunsului sau expirarea timeout-ului.
  • Simplu de implementat și de înțeles.
  • Cuplare strânsă: lentoarea sau eșecul unui serviciu din aval se poate propaga.
  • Atenuează cu timeout-uri, reîncercări și circuit breakers.
Dezvoltarea aplicațiilor pe AWS

Tipar: cerere/răspuns

cerere-răspuns

  • Baza majorității interfețelor de aplicații.
  • Comportament predictibil.
  • Feedback imediat pentru utilizatori.
Dezvoltarea aplicațiilor pe AWS

Comunicare asincronă

 

comunicare asincronă

  • Expeditorul nu așteaptă un răspuns.
  • Trimite un mesaj sau eveniment, apoi continuă procesarea.
  • Receptorul procesează mesajul independent.
  • Cuplare slabă: scalabilitate și toleranță la erori mai bune.
  • Gestionează spike-uri de trafic și căderi parțiale fără probleme.
  • Provocări: mesaje duplicate, ordonare, consistență eventuală.
Dezvoltarea aplicațiilor pe AWS

Tipar: decuplare prin coadă

  • Producătorul trimite mesaje într-o coadă.
  • Consumatorul preia și procesează mesajele independent.
  • Previne propagarea eșecurilor.
  • Producătorul și consumatorul scalează independent.

  decuplare bazată pe coadă

Dezvoltarea aplicațiilor pe AWS

Tipar: coadă de workeri

  • Mai mulți workeri preiau mesaje dintr-o singură coadă.
  • Mesajele sunt procesate în paralel.
  • Permite scalare orizontală și throughput mai mare.
  • Ordinea mesajelor nu este garantată.

coadă de workeri

Dezvoltarea aplicațiilor pe AWS

Tipar: publish/subscribe

  • Publisherii trimit mesaje către un topic SNS.
  • Mai mulți subscriberi primesc același mesaj.
  • Difuzare în timp real către mulți consumatori.

 

tiparul publish-subscribe

Dezvoltarea aplicațiilor pe AWS

Tipar: fan-out

fan-out

  • Un mesaj livrat simultan mai multor consumatori.
  • Utilizat frecvent în arhitecturile event-driven.
  • Util când mai multe servicii trebuie să reacționeze la același eveniment.
Dezvoltarea aplicațiilor pe AWS

Ordonarea mesajelor

ordonarea mesajelor

  • Unele workload-uri trebuie să proceseze mesajele în ordinea corectă.
  • Amazon SQS FIFO și Kinesis suportă procesarea ordonată.
  • Ordonarea strictă reduce throughput-ul.
  • Echilibrează corectitudinea cu scalabilitatea.
Dezvoltarea aplicațiilor pe AWS

Hai să exersăm!

Dezvoltarea aplicațiilor pe AWS

Preparing Video For Download...