Event-driven architecture: cos'è

  • Di
  • 2024-01-25 - 3 minuti
banner

Nel campo delle architetture software, quella event-driven è tra le più note, per i suoi diversi vantaggi e per essere un’architettura stateless.

Ma cosa vuol dire, e come funziona?

Cos’è

Un’architettura guidata dagli eventi è un’architettura software e un modello per la progettazione di applicazioni.

Molti progetti di applicazioni moderne sono event-driven, come ad esempio i framework di customer engagement che devono utilizzare i dati dei clienti in tempo reale. Le applicazioni event-driven possono essere create in qualsiasi linguaggio di programmazione, perché l’event-driven è un approccio di programmazione, non un linguaggio. L’architettura event-driven consente un accoppiamento minimo, il che la rende una buona opzione per le moderne architetture applicative distribuite.

Come funziona

L’architettura event-driven è composta da produttori di eventi (spesso chiamati publisher) e consumatori di eventi (chiamati anche subscriber). Un produttore di eventi rileva o cattura un evento e lo riporta come messaggio. Il produttore, trattandosi di una comunicazione disaccoppiata, non è a conoscenza di chi consumerà l’evento e, allo stesso modo, chi lo consumerà non avrà informazioni su chi lo ha prodotto.

Questo non vuol dire che sia impossibile determinare l’origine del messaggio o chi lo consuma: se, per motivi funzionali, fosse necessario, reagire e rispondere al messaggio di un publisher, si può parlare di Message-Driven Communication.

Dopo che un evento è stato rilevato, viene trasmesso dal produttore di eventi ai consumatori attraverso dei canali, dove una piattaforma di elaborazione di questi messaggi li elabora in modo asincrono. I consumatori di eventi devono essere informati quando si è verificato un evento. Possono elaborare l’evento o solo subirne l’impatto.

La piattaforma di elaborazione elabora i messaggi (o gli eventi) in ingresso e li invia ai consumatori in ascolto.

Esempio di architettura event-driven

Apache Kafka è un esempio molto noto di piattaforma di streaming di dati che rappresenta una scelta popolare per l’elaborazione degli eventi e che adotta questa architettura.

Può gestire la pubblicazione, la sottoscrizione, la memorizzazione e l’elaborazione di eventi in tempo reale. Apache Kafka supporta una serie di casi d’uso in cui l’elevato throughput e la scalabilità sono fondamentali e, riducendo al minimo la necessità di integrazioni point-to-point per la condivisione dei dati in alcune applicazioni, può ridurre la latenza a millisecondi.

Esempio di modelli

Un’architettura guidata dagli eventi può essere basata su un modello pub/sub o su un modello di flusso di eventi.

Modello pub/sub

Si tratta di un’infrastruttura di messaggistica basata sulle iscrizioni a un canale di eventi. Con questo modello, dopo che un evento si verifica o viene pubblicato, viene inviato ai consumer che devono essere informati.

Credits to AWS Documentation

Modello di streaming degli eventi

Con un modello di streaming degli eventi, gli eventi vengono scritti in un log. I consumatori di eventi non si abbonano a un flusso di eventi. Invece, possono leggere da qualsiasi parte del flusso e possono unirsi al flusso in qualsiasi momento.

Credits to Developer Confluent documentation

Benefici

Un’EDA è generalmente loosely coupled, perché i produttori di eventi non sanno quali consumatori sono in ascolto per un evento e l’evento non sa quali sono le conseguenze del suo “arrivo”.

L’architettura event-driven offre infatti il grande vantaggio del disaccoppiamento, in cui produttori e consumatori di dati o servizi non devono comunicare direttamente, ma la loro attività è gestita centralmente da un componente terzo, consentendo un sistema più flessibile e scalabile. Questo a sua volta semplifica l’integrazione di nuovi componenti, promuove la tolleranza ai guasti e migliora l’efficienza complessiva del sistema.

Post correlati

Iscriviti al TheRedCode.it Corner

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome

Vuoi diventare #tech content writer? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!