Event Driven vs. Client-server architecture
Care sunt diferențele majore între cele două tipuri de arhitecturi
Două tipuri de modele pentru arhitectura unei aplicații pe internet: Client-Server și Event-Driven:
Client-Server este un model simplu de implementat și mai predictibil în ceea ce privește performanța: mai mulți clienți se conectează la același server; Serverul, ia datele de la sursă și le dă mai departe clienților. Acest model poate fi scalat pe verticală și în consecință pot apărea bottelnecks. Acest model este unul de procesare sincronă a comenzilor.
Pe modelul Event-Driven, în schimb, mai mulți clienți trimit cereri prin comenzi către un Bus, de obicei un Event bus. Procese de workers, iau aceste comenzi/evenimente și le procesează aceesând date sau servicii externe la nevoie. Odată procesată comanda, un eveniment nou este trimis pe Event Bus, de unde clienții le pot lua și afișa. Acest model este unul asincron, și poate fi scalat pe orizontală.
De obicei, în aplicațiile distribuite se folosesc amândouă aceste arhitecturi: de exemplu un server cu date deja pregătite (cached) va servi clienții care doar navighează prin aplicație, iar partea de interacțiune (înregistrare/comenzi/plăți) este servită de un event bus și workers.
Puteți afla mai multe despre Event Drive architectures în acest articol (en): https://aws.amazon.com/event-driven-architecture/