Stiluri de arhitectură și tipare de comunicare
Dezvoltarea aplicațiilor pe AWS
Ricardo Sueiras
Principal Technologist
Instructorul tău
Ce sunt tiparele de arhitectură?
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.
Monoliți
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ă.
Microservicii
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.
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 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ă.
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ă.
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.
Tipar: cerere/răspuns
Baza majorității interfețelor de aplicații.
Comportament predictibil.
Feedback imediat pentru utilizatori.
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ă.
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.
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ă.
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.
Tipar: 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.
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.
Hai să exersăm!
Dezvoltarea aplicațiilor pe AWS
Preparing Video For Download...