flex-height
text-black

Persona intenta a concludere un acquisto online

Cos'è l'architettura basata su eventi?

Il modello di integrazione dell’architettura basata su eventi rileva “eventi” importanti in tempo reale e agisce di conseguenza.

default

{}

default

{}

primary

default

{}

secondary

Architettura basata su eventi: definizione e motivi della sua importanza

L'architettura basata su eventi è un approccio alla progettazione del software che crea le condizioni affinché le organizzazioni possano reagire all'istante a qualsiasi cambiamento di stato di una certa rilevanza. Pensiamo a un'azienda capace di reagire nel momento esatto in cui accade qualcosa di importante, come un cliente che esegue un acquisto online, un sensore che segnala un malfunzionamento imminente, la quotazione di un titolo che cade o un'allerta di sicurezza che scatta. Questi cambiamenti - appunto, gli eventi - avvengono in continuazione, in ogni organizzazione di qualsiasi settore. Il successo di un'azienda dipende dalla velocità con cui riesce a rispondere a tali eventi.

È qui che entra in gioco l'architettura basata su eventi (EDA, event-driven architecture). Anziché attendere aggiornamenti programmati o affidarsi a sistemi rigidi e strettamente correlati, l'architettura basata su eventi permette alle applicazioni di comunicare in modo asincrono attraverso componenti debolmente accoppiati. In altre parole, ogni parte del sistema può agire in modo indipendente (senza conoscere il funzionamento interno degli altri) rendendo più facile scalare, adattarsi e innovare.

Il risultato è che i sistemi evoluti che ricorrono a un'architettura basata su eventi permettono alle aziende di offrire esperienze più veloci e personalizzate, di automatizzare le operazioni e di rimanere agili anche all'aumento della domanda e dei volumi di dati. Adottando l'architettura basata su eventi, le organizzazioni reattive diventano proattive, acquisendo la velocità, la flessibilità e la resilienza necessarie per avere successo in un mondo digitale dinamico.

Cos'è un evento?

Un evento è una qualsiasi azione o cambiamento di stato che si ripercuote sul business: per esempio, quando un cliente striscia una carta di credito, un passeggero effettua il check-in per un volo, un utente reimposta una password o un magazzino aggiorna l'inventario. In altri termini: un evento è un semplice messaggio che dice "è appena successo qualcosa", permettendo alle controparti del sistema di far scattare una reazione.

Le aziende si dicono "basate sugli eventi" quando riescono a intercettare gli eventi man mano che si verificano, ossia continuamente. Ecco alcuni esempi comuni di eventi:

I componenti principali dell'architettura basata su eventi

Per mantenere coerenza, gli schemi definiscono la struttura e il formato dell'evento, specificando i campi che deve contenere, i tipi di dati e le regole di interpretazione.

Nell'architettura basata su eventi, le applicazioni svolgono il ruolo di produttori di eventi, nel senso che producono o catturano eventi, o di consumatori di eventi, nel senso che li elaborano e agiscono di conseguenza. I produttori trasmettono gli eventi ai consumatori in tempo reale tramite un broker di eventi, ovvero un middleware orientato alla messaggistica. I consumatori possono quindi elaborare l'evento e innescare altre azioni, workflow o altri eventi a tutti gli effetti. Questo assetto crea le condizioni per una reattività in tempo reale e decisioni più mirate a fronte dell'afflusso di dati.

Il broker gestisce i canali di eventi che collegano i produttori ai consumatori, garantisce una risposta affidabile e spesso offre funzionalità di filtraggio, persistenza e riproduzione. Disaccoppiando i produttori dai consumatori, il broker di eventi rende il sistema più resiliente e scalabile.

In un’architettura molto semplice, con un singolo produttore e un singolo consumatore in comunicazione diretta tra loro, la presenza del broker di eventi non è obbligatoria. Nella maggior parte delle imprese, tuttavia, più fonti trasmettono eventi a più consumatori, il che rende necessaria la partecipazione di uno o più broker organizzati in rete, anche nota come "event mesh". Quando si utilizza un broker di eventi o un event mesh, si crea un "accoppiamento debole" di applicazioni.

Comunicazione sincrona vs asincrona

Con la comunicazione sincrona dell'architettura basata su eventi, il produttore dell'evento attende che il destinatario elabori e risponda prima di procedere. Un esempio è dato dal comportamento del client web quando invia una richiesta HTTP e attende la risposta del server. La comunicazione sincrona è in genere accoppiata rigidamente, è più lenta in caso di carichi pesanti, e "blocca" il produttore, il quale non può eseguire il compito successivo finché non riceve una risposta dal consumatore.

Con la comunicazione asincrona dell'architettura basata su eventi, il produttore non attende una risposta immediata, ma può proseguire con l'elaborazione mentre il consumatore dell'evento si occupa del messaggio in un secondo momento. Un esempio è quello di un sistema che pubblica un evento su un broker, con più consumatori che lo elaborano in modo indipendente. La comunicazione asincrona non blocca, è accoppiata debolmente ed è scalabile, il che la rende una soluzione ottimale per i sistemi in tempo reale e distribuiti.

Confronto tra modelli basati su richieste e su eventi nell'architettura basata su eventi

In un modello basato su richieste, l'interazione prende il via con la richiesta inviata da un consumatore di eventi a un server e la risposta di quest'ultimo. È un modello di tipo "pull" - ossia con un consumatore che richiede attivamente dati o servizi dal server quando ne ha bisogno, anziché ricevere aggiornamenti automatici - e può essere sincrono o asincrono. I modelli basati su richieste sono comuni nelle applicazioni web e nelle API tradizionali.

In un modello basato su eventi, l'interazione inizia con un evento (una modifica di stato o un'azione che avvia l'elaborazione) e i componenti reagiscono automaticamente al verificarsi di un evento quale una pubblicazione o una sottoscrizione. È un modello tipicamente "push", nel senso che il sistema invia automaticamente ("spinge") eventi o aggiornamenti ai consumatori non appena si verificano, senza attendere che siano essi a richiederli. I modelli basati su eventi sono asincroni, disaccoppiati e ideali per la reattività in tempo reale.

Le principali differenze tra i due modelli possono essere viste in questa ottica: nei modelli basati su richieste, gli utenti richiedono dati quando ne hanno bisogno, mentre i modelli basati su eventi reagiscono automaticamente quando accade qualcosa.

Pattern comuni di architettura basata su eventi

I pattern di architettura basata su eventi sono comuni approcci alla progettazione che definiscono il modo in cui un sistema basato su eventi acquisisce, elabora e consuma gli eventi. I pattern costituiscono strategie riutilizzabili per trattare le modifiche di stato e comunicazione in modo scalabile e disaccoppiato. Le organizzazioni applicano pattern di architettura basata su eventi nelle fasi di progettazione e implementazione di sistemi per risolvere sfide comuni quali la distribuzione degli eventi, la coerenza dei dati e la scalabilità in ambienti asincroni debolmente accoppiati.

Esistono quattro pattern principali per la trasmissione di eventi in un'architettura basata su eventi:

Stili di elaborazione eventi

Gli stili di elaborazione eventi descrivono il modo in cui il sistema rileva gli eventi, li interpreta e agisce di conseguenza. Definiscono la complessità della logica, il timing e le relazioni tra gli eventi che il sistema deve elaborare. Esistono tre diversi approcci all'elaborazione degli eventi una volta che raggiungono un consumatore: elaborazione semplice, elaborazione complessa ed elaborazione del flusso.

1. Elaborazione semplice degli eventi: i consumatori elaborano ciascun evento man mano che viene ricevuto. Alcuni esempi:

2. Elaborazione complessa di eventi: i consumatori elaborano una serie di eventi per rilevare pattern ed eseguire azioni in base al risultato. Alcuni esempi:

3. Elaborazione di flussi di eventi: i consumatori elaborano e agiscono su un flusso costante di dati (dati in movimento) in tempo reale utilizzando una piattaforma di streaming. Alcuni esempi:

Le aziende scelgono lo stile di elaborazione in tempo reale degli eventi in base alle proprie esigenze specifiche e ai casi d'uso.

Come funziona l'architettura basata su eventi

L'architettura basata su eventi è un modello di integrazione creato per pubblicare, acquisire, elaborare eventi e rispondere di conseguenza e in tempo reale in tutti i sistemi distribuiti. Quando si verifica un evento in un'applicazione, viene inviato automaticamente un messaggio a tutte le altre applicazioni che devono essere informate, in modo che possano agire a loro volta.

Vediamo insieme come funziona l'architettura basata su eventi, passo dopo passo:

  1. Si verifica un evento: avviene un cambiamento di stato significativo, per esempio quando un cliente effettua un ordine, un sensore rileva un picco di temperatura o un pagamento non riesce.
  2. Il produttore trasmette l'evento: l'applicazione in cui si è verificato l'evento svolge il ruolo di produttore e pubblica l'evento per un broker.
  3. Il broker instrada l'evento: il broker funge da intermediario per gestire i canali dell'evento e recapitarlo a tutti i consumatori interessati, contribuendo così a garantire una comunicazione affidabile, scalabile e disaccoppiata.
  4. I consumatori reagiscono all'evento: le applicazioni o i servizi abbonati al canale dell'evento lo elaborano e attivano le misure opportune, quali l'aggiornamento dell'inventario, l'invio di un'e-mail di conferma o l'attivazione di un'allerta.

Le architetture basate su eventi sono asincrone e disaccoppiate, nel senso che le applicazioni non devono essere necessariamente a conoscenza l'una dell'altra per condividere informazioni ed eseguire compiti in tempo reale. Le informazioni sugli eventi, o messaggi, possono circolare liberamente e automaticamente tra le applicazioni. Per questo il modello dell'architettura a eventi è molto più veloce e resiliente dei tradizionali modelli a richiesta e risposta, in cui un'applicazione deve prima richiedere a un'altra applicazione le informazioni specifiche di cui ha bisogno e poi attendere una risposta prima di passare al compito successivo. Sempre per la sua natura disaccoppiata, l'architettura basata su eventi è comunemente considerata una buona prassi per la comunicazione di microservizi.

Casi d'uso ed esempi concreti

L'architettura basata su eventi è alla base di esperienze digitali avanzate in tutti i settori, dai servizi bancari al commercio, dalla manifattura alla logistica. Supportando l'automazione basata sull'AI, l'event intelligence e la reattività in tempo reale, l'architettura a eventi permette alle organizzazioni di modernizzare l'IT, disaccoppiare i sistemi preesistenti e operare agevolmente negli ambienti multi-cloud.

Gli esempi seguenti mostrano come funziona all'atto pratico l'architettura basata su eventi.

Settore della ristorazione

  1. Uno studente universitario effettua un ordine per una pizza utilizzando un'app di consegna del cibo. L’applicazione acquisisce i suoi dati di base (nome, indirizzo, estremi di pagamento e ordine) e pubblica l’evento “ordine pizza”.
  2. La pizzeria sottoscrive l’evento, evade l’ordine e risponde al servizio di consegna del cibo pubblicando il proprio evento “ordine pronto”.
  3. A questo punto il servizio incarica un addetto alle consegne, fissa un'ora di arrivo prevista e avvisa il cliente che la pizza ordinata è in arrivo.

E-commerce

  1. Un potenziale acquirente online inserisce i dati della carta di credito su un sito di e-commerce, il quale pubblica l’evento “pagamento inviato”.
  2. Il sistema di pagamento sottoscrive l'evento, elabora il pagamento ed emette il proprio evento "pagamento elaborato", che ne indica la riuscita o l'errore e lo inoltra nuovamente all'interfaccia utente del sito web.
  3. L'interfaccia utente mostra lo stato del pagamento al cliente e lo invita a compiere i passaggi successivi.

Altri esempi di architettura basata su eventi:

Telemetria IoT

Analytics e event intelligence

Automazione

Transazioni finanziarie

Supply chain

Modernizzazione dell'IT e disaccoppiamento dei sistemi preesistenti

Notifiche

Casi d'uso generici dell'architettura a eventi:

I vantaggi dell'architettura basata su eventi

Le organizzazioni possono applicare i vantaggi dell'architettura basata su eventi ai loro sistemi più evoluti. Questi i principali vantaggi dell'architettura basata su eventi:

  1. Reattività e workflow in tempo reale: l'architettura basata su eventi permette ai sistemi di reagire istantaneamente agli eventi man mano che si verificano, attivando workflow e decisioni in automatico e in tempo reale. Questo meccanismo si rivela particolarmente utile durante i periodi di picco della domanda, per esempio durante i saldi stagionali o nei giorni festivi. Le organizzazioni possono applicare questa reattività all'operatività quotidiana, migliorando ogni aspetto, dall'automazione della supply chain al rilevamento delle frodi fino al customer engagement personalizzato.
  2. Velocità ed efficienza utilizzando la comunicazione asincrona: le applicazioni incluse in un'architettura basata su eventi comunicano in modo asincrono, nel senso che i produttori pubblicano messaggi senza aspettare che i consumatori li ricevano. Questo approccio senza blocchi migliora le prestazioni, riduce la latenza e permette ai sistemi di elaborare enormi volumi di eventi senza colli di bottiglia.
  3. Flessibilità e scalabilità attraverso il disaccoppiamento e l'accoppiamento debole: essendo disaccoppiati o debolmente accoppiati, i componenti dell'architettura basata su eventi operano in modo indipendente, ossia senza essere vincolati alla disponibilità o alla logica interna dell'altro. Le operazioni di aggiornamento, test e distribuzione dei servizi possono quindi essere eseguite più facilmente e senza interferire sull'intero sistema. Il disaccoppiamento permette inoltre di aggiungere facilmente ulteriori produttori e consumatori secondo necessità, rendendo possibile una scalabilità senza interruzioni al crescere delle esigenze aziendali.
  4. Resilienza e isolamento dei guasti: con i servizi disaccoppiati, i guasti in un componente non si ripercuotono a cascata sull'intero sistema. Ciascun servizio può fallire in modo indipendente, il che rende l'architettura più durevole e tollerante ai guasti rispetto ai tradizionali modelli strettamente accoppiati.
  5. Integrazione a prova di futuro: l'accoppiamento debole e la progettazione asincrona rendono l'architettura basata su eventi ideale per la modernizzazione dell'IT, il disaccoppiamento dei sistemi preesistenti e le operazioni multi-cloud. Le organizzazioni acquisiscono la flessibilità necessaria per integrare nuove tecnologie, quali l'automazione basata sull'AI e l'event intelligence, senza dover riscrivere i sistemi core.

Sfide, limitazioni e best practice

Oltre agli straordinari vantaggi, le architetture basate su eventi introducono anche nuove sfide progettuali e operative di cui le organizzazioni devono tenere conto. In sede di implementazione dell'architettura basata su eventi, prendi in considerazione le seguenti sfide, limitazioni e best practice che la caratterizzano per garantire sistemi basati su eventi che siano scalabili, resilienti e ben governati.

Contro

Come si inserisce l'event mesh in questo quadro

L'event mesh è una funzionalità architettonica che mette in connessione più broker di eventi tra hyperscaler diversi e in ambienti cloud privati, ibridi e multi-cloud. L'event mesh mette a disposizione un set completo di servizi per eventi avanzati, quali lo streaming, la gestione, il monitoraggio, l'instradamento dinamico dei messaggi e il filtraggio a granularità fine. Mettendo in connessione i broker di eventi in un mesh distribuito, le organizzazioni possono:

Autentica colonna portante dei sistemi evoluti, l'event mesh rappresenta una condizione imprescindibile per architetture basate su eventi scalabili e in tempo reale. Oltre a garantire la reattività in tempo reale, semplifica l'integrazione, dissipa il caos degli eventi e rafforza le capacità di risoluzione dei problemi in tutti gli ambienti distribuiti.

I limiti dell'architettura basata su eventi

Best practice per l'architettura basata su eventi

Caratteristiche dell'architettura basata su eventi

In sostanza, un'architettura a eventi si basa su diverse caratteristiche specifiche che ne fanno la soluzione ideale per le infrastrutture distribuite, ibride e multi-cloud.

Insieme, queste caratteristiche fanno dell'architettura basata su eventi un approccio altamente efficace per la costruzione di sistemi in tempo reale, resilienti, adattabili e predisposti alla crescita, sia che si tratti di supportare microservizi, integrare infrastrutture in cloud o abilitare applicazioni di processi aziendali basati su eventi.

FAQ

Cos'è un evento nell'architettura basata su eventi?
Nell'architettura basata su eventi, l'evento è un cambiamento rilevante nello stato di un processo aziendale o di un sistema, come la creazione, l'aggiornamento o il completamento di un'entità. Gli eventi sono segnali trasmessi dalle applicazioni quando accade qualcosa di importante, in modo che altri sistemi possano esserne informati in tempo reale e reagire senza una rigida correlazione. Un evento, per esempio, si verifica quando il pagamento di un cliente riesce o fallisce, una spedizione arriva o esce da un magazzino e un sensore rileva un picco di temperatura su una macchina.
In cosa si distingue l'architettura basata su eventi da quella basata su richieste?

La differenza principale tra le architetture basate su eventi e su richieste risiede nel modo in cui i sistemi comunicano e reagiscono ai cambiamenti. In un modello basato sulle richieste, l'interazione ha inizio quando un consumatore richiede dati o un'azione da un server, il quale risponde. Questo modello è generalmente sincrono (nel senso che il richiedente attende (è bloccato) fino all'arrivo della risposta) ed è di tipo "pull", nel senso che le applicazioni ricevono aggiornamenti solo quando li chiedono.

In un modello a eventi, l'interazione ha inizio quando si verifica un evento (un cambiamento di stato rilevante in un sistema aziendale) e le applicazioni reagiscono automaticamente. I sistemi a eventi sono asincroni, ossia con i produttori che pubblicano eventi senza attendere che un consumatore risponda. Questo modello ad accoppiamento debole e di tipo "push" permette alle applicazioni di operare in modo autonomo e di elaborare gli eventi in tempo reale in ambienti distribuiti, ibridi e multi-cloud.

Quali sono i componenti principali dell'architettura basata su eventi?

I componenti principali dell'architettura basata su eventi sono i produttori, i consumatori, i broker e i canali di eventi. Insieme, questi componenti creano un flusso di eventi asincrono, debolmente accoppiato, che consente interazioni scalabili in tempo reale in ambienti distribuiti, ibridi e multi-cloud:

  • Produttori: applicazioni che generano o acquisiscono eventi - quali aggiornamenti di ordini, pagamenti e letture di sensori, e li pubblicano nel sistema a eventi
  • Consumatori: si iscrivono, elaborano e reagiscono agli eventi facendo scattare workflow, aggiornando i dati, inviando notifiche o avviando processi a valle
  • Broker di eventi: middleware di messaggistica che indirizza gli eventi dai produttori ai consumatori, offrendo funzionalità quali consegna affidabile, filtraggio, instradamento dinamico, persistenza e riproduzione
  • Canali di eventi: percorsi gestiti dai broker di eventi che collegano produttori e consumatori; i produttori pubblicano gli eventi su un canale e i consumatori si iscrivono ai canali di loro interesse
Quali sono i comuni modelli di architettura basata su eventi?

I modelli di architettura basata su eventi sono approcci di progettazione riutilizzabili che stabiliscono il modo in cui gli eventi vengono catturati, instradati, archiviati e consumati in un sistema a eventi. Questi i principali modelli di architettura basata su eventi:

  • Pubblica/Sottoscrivi (pub/sub): i produttori pubblicano eventi su un canale e più consumatori si iscrivono e reagiscono automaticamente.
  • Streaming di eventi: i produttori pubblicano flussi continui di eventi per un broker e i consumatori possono leggere, riprodurre o elaborare tali eventi in qualsiasi punto del flusso.
  • Segregazione delle responsabilità delle query di comando (CQRS, Command Query Responsibility Segregation): le operazioni di lettura e scrittura sono tenute separate in modelli diversi per propagare gli aggiornamenti in modo asincrono.
  • Sourcing di eventi: i sistemi memorizzano ogni cambiamento di stato come evento immutabile in un registro di tipo append-only e quindi ricostruiscono lo stato corrente riproducendo gli eventi.
Quali sono i vantaggi dell'utilizzo dell'architettura basata su eventi?

I principali vantaggi dell'utilizzo dell'architettura basata su eventi sono i seguenti:

  • Accoppiamento debole: le applicazioni operano in modo indipendente, senza conoscere il funzionamento interno delle altre, consentendo così aggiornamenti, integrazioni ed estensioni più semplici.
  • Scalabilità: nuovi produttori e consumatori possono essere aggiunti in continuo e i carichi di lavoro vengono estesi agli ambienti ibridi e multi-cloud.
  • Resilienza: i servizi disaccoppiati isolano i guasti in modo che un componente possa cessare di funzionare senza influire sull'intero sistema.
  • Velocità e reattività in tempo reale: la comunicazione asincrona e senza blocchi permette ai sistemi di reagire istantaneamente agli eventi di business e di gestire volumi elevati con una bassa latenza.