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:
- Un pagamento ha esito negativo o positivo
- Un utente effettua il login o il logout
- Lo stock scende al di sotto di una soglia
- Una spedizione lascia il magazzino o giunge a destinazione
- Una violazione della sicurezza innesca un allarme
- Un programma fedeltà aggiorna i saldi dei punti
- Un team dell'assistenza crea un ticket
- Un cliente aggiorna l'indirizzo di spedizione
- Un nuovo utente crea un account
- Un potenziale acquirente pubblica una recensione di prodotto
- Un abbonato rinnova o annulla un abbonamento
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:
- Pubblicazione/sottoscrizione (o “pub/sub”): con lo schema pub/sub i consumatori di eventi sottoscrivono i messaggi e i canali pubblicati dai produttori di eventi. Una volta pubblicato, l'evento viene inviato direttamente a tutti i sottoscrittori utilizzando un broker di eventi. Per evitare duplicazioni, una volta consumati gli eventi non sono più riproducibili né accessibili, perché il broker li elimina.
- Streaming di eventi: con lo streaming di eventi, i produttori pubblicano interi flussi di eventi su un broker. I consumatori sottoscrivono lo stream e possono leggerlo da qualsiasi parte, consumando solo gli eventi che reputano pertinenti. Con lo streaming, gli eventi vengono conservati dal broker anche dopo essere stati consumati.
- Segregazione delle responsabilità delle query di comando (CQRS, Command Query Responsibility Segregation): nel pattern CQRS, il layer di progettazione e architettura delle applicazioni separa le operazioni di lettura e scrittura in modelli diversi. I comandi aggiornano lo stato, mentre le query lo leggono. Nell'architettura basata su eventi, il pattern CQRS opera spesso con gli eventi per propagare i cambiamenti in modo asincrono, migliorando la scalabilità e le prestazioni nei sistemi complessi.
- Sourcing di eventi: con il sourcing di eventi, il sistema registra ogni modifica di stato come evento in un registro di tipo append-only anziché archiviare solo lo stato corrente di un'entità. Lo stato corrente può essere ricostruito riproducendo tali eventi. Il risultato è un audit trail completo adatto a scenari di Time-Travel e recupero dati.
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:
- Un cliente effettua un ordine, istruendo il sistema di inviare un'e-mail di conferma e di aggiornare l'inventario.
- Una richiesta di reimpostazione della password fa scattare un'e-mail immediata con un collegamento sicuro.
- Un pagamento avvenuto regolarmente genera una ricevuta che viene inviata al cliente.
- Un login utente viene registrato all'istante nell'ambito del monitoraggio della sicurezza.
2. Elaborazione complessa di eventi: i consumatori elaborano una serie di eventi per rilevare pattern ed eseguire azioni in base al risultato. Alcuni esempi:
- Diverse transazioni di valore elevato in rapida successione generano un avviso di frode.
- L'innalzamento della temperatura associato all'aumento delle vibrazioni segnala un imminente guasto all'apparecchiatura.
- Ripetuti tentativi di accesso compiuti da paesi diversi nel giro di pochi minuti fanno scattare un avviso di sicurezza.
- Il ripetuto abbandono del carrello acquisti da parte dello stesso utente genera una proposta di sconto personalizzata.
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 fluttuazioni dei prezzi delle azioni determinano l'esecuzione immediata di negoziazioni secondo regole predefinite.
- Una impennata delle citazioni sui social media aggiorna all'istante i cruscotti del sentiment.
- I dati di telemetria trasmessi dai veicoli connessi regolano in modo dinamico i semafori stradali.
- I dati dei flussi di clic provenienti da un sito di e-commerce alimentano suggerimenti di prodotto in tempo reale.
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:
- 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.
- 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.
- 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.
- 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
- 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”.
- La pizzeria sottoscrive l’evento, evade l’ordine e risponde al servizio di consegna del cibo pubblicando il proprio evento “ordine pronto”.
- 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
- Un potenziale acquirente online inserisce i dati della carta di credito su un sito di e-commerce, il quale pubblica l’evento “pagamento inviato”.
- 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.
- 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
- Una smart factory invia in streaming i dati dei sensori installati per rilevare i picchi di temperatura e prevenire guasti alle apparecchiature.
- Veicoli connessi inviano dati di telemetria per ottimizzare in modo dinamico lo scorrimento del traffico.
- Dispositivi per la casa intelligente pubblicano eventi di consumo energetico per attivare suggerimenti di risparmio sui costi.
Analytics e event intelligence
- Un operatore del retail analizza i dati dei flussi di clic in tempo reale per personalizzare i suggerimenti di prodotto.
- Una banca monitora schemi di transazioni ricorrenti per riconoscere le frodi prima che vengano perpetrate.
- Una società di servizi logistici sfrutta lo streaming di dati per prevedere i ritardi nelle consegne e reindirizzare le spedizioni.
Automazione
- Un sistema HR assegna automaticamente l'accesso al software a un neoassunto, incluse le licenze e le autorizzazioni.
- Un sistema sanitario fa scattare avvisi automatici quando i parametri vitali dei pazienti superano le soglie critiche.
- Una piattaforma cloud permette di adeguare le risorse in modo dinamico in base agli eventi relativi ai carichi di lavoro.
Transazioni finanziarie
- Un gateway di pagamento pubblica un evento di tipo "pagamento inviato", attivando i controlli antifrode prima dell'approvazione.
- Una piattaforma di trading esegue gli ordini di acquisto/vendita all'istante seguendo le oscillazioni dei prezzi delle azioni.
- Una banca registra i depositi e aggiorna i saldi contabili in tempo reale.
Supply chain
- Un magazzino aggiorna i livelli di stock e fa partire automaticamente gli ordini di riapprovvigionamento.
- Un servizio di consegne reindirizza gli autisti in tempo reale in base al traffico e agli eventi meteorologici.
- Una impresa manifatturiera adegua i programmi di produzione in base ai segnali della domanda in tempo reale.
Modernizzazione dell'IT e disaccoppiamento dei sistemi preesistenti
- Una società alleggerisce il carico di lavoro dal proprio mainframe pubblicando eventi di business su servizi cloud evoluti per le funzioni chiave.
- Una organizzazione espone interfacce di eventi in tempo reale attorno a un ERP legacy in modo che le nuove applicazioni possano reagire all'istante senza coinvolgere il back-end.
- Un'azienda esegue il mirroring degli eventi di un CRM di vecchia generazione su una piattaforma SaaS avanzata per tenere sincronizzati entrambi i sistemi nel quadro di una migrazione graduale.
Notifiche
- Una impresa di servizi pubblici comunica ai clienti il momento in cui è prevista una interruzione di corrente nella loro zona e li aggiorna sull'avanzamento dei lavori delle squadre di riparazione.
- Un'applicazione di viaggi invia un'allerta in tempo reale ai passeggeri ogni volta che l'assegnazione del gate viene cambiata, affinché possano adeguare immediatamente i loro piani.
- Un servizio di streaming invia suggerimenti personalizzati quando l'utente ha terminato la visione di un programma televisivo.
- Un sistema di sicurezza trasmette allerte ogni volta che viene rilevata un'attività di accesso sospetta.
Casi d'uso generici dell'architettura a eventi:
- Un potenziale acquirente online clicca su un prodotto e il sistema risponde generando consigli di acquisto basati su articoli simili.
- Un rivenditore controlla le transazioni globali per rilevare eventuali frodi e segnala acquisti sospetti alla società della carta di credito.
- Un sistema di customer engagement in tempo reale utilizza lo streaming dei dati di comportamento degli utenti per attivare offerte personalizzate o prezzi dinamici durante una sessione di shopping.
- Nell'ambito dell'assistenza sanitaria, il sistema di monitoraggio pubblica i parametri vitali dei pazienti trasmessi dai dispositivi connessi per allertare all'istante il personale medico quando vengono superate le soglie.
- I servizi delle smart city gestiscono i semafori e gli orari dei trasporti pubblici in base al traffico e agli eventi meteorologici in tempo reale.
- Il rilevamento delle minacce informatiche intercetta attività di rete sospette o tentativi di accesso non autorizzati e risponde in tempo reale.
- L'ottimizzazione delle risorse in cloud permette di adeguare automaticamente la potenza di calcolo negli ambienti multi-cloud quando si verificano picchi di carico di lavoro.
Prodotto SAP
Scopri l'integrazione resiliente degli eventi
Affidati a una rete distribuita di broker che disaccoppia produttori e consumatori per introdurre la scalabilità indipendente, l'isolamento dei guasti e l'operatività continua, anche quando il traffico e i casi d'uso aumentano.
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:
- 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.
- 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.
- 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.
- 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.
- 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
- Complessità dei sistemi distribuiti: la gestione di una rete di broker di eventi in molteplici ambienti introduce un elemento di complessità architettonica. Per progettare flussi di eventi, garantire coerenza degli schemi e gestire una comunicazione asincrona occorre un livello avanzato di pianificazione ed expertise. Senza adeguati controlli di progettazione, le organizzazioni rischiano di farsi travolgere dal caos degli eventi al crescere dei volumi, dei produttori e dei consumatori.
- Governance e compliance: con gli eventi che circolano negli ambienti ibridi e multi-cloud, l'applicazione delle policy di governance, quali la privacy dei dati, la sicurezza e la conformità alle normative, diventa problematica. Le organizzazioni hanno bisogno di solidi quadri di governance per prevenire fughe di dati e accessi non autorizzati e mantenere il controllo su infrastrutture di eventi in rapida espansione.
- Debugging e osservabilità: la risoluzione dei problemi in un sistema asincrono debolmente accoppiato è più complessa che nelle architetture tradizionali. L'individuazione della causa all'origine di guasti o ritardi presuppone funzionalità avanzate di monitoraggio, tracciamento e riproduzione degli eventi. Ciò vale a maggior ragione quando i team tentano di risolvere problemi che emergono da catene di eventi complesse o di intervenire sui sintomi del caos degli eventi.
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:
- Ridurre la complessità attraverso la centralizzazione dell'instradamento e della gestione degli eventi.
- Supportare la governance tramite cataloghi, applicazione di schemi e monitoraggio degli eventi.
- Migliorare l'osservabilità attraverso il tracciamento, la riproduzione e l'analisi avanzata degli eventi.
- Introdurre scalabilità e resilienza in ambienti ibridi e multi-cloud.
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
- Costi generali di gestione: i sistemi basati su eventi richiedono strumenti specializzati per la gestione degli eventi, la validazione degli schemi e il monitoraggio che possono ripercuotersi sulla complessità operativa.
- Requisiti di competenze: l'implementazione e il mantenimento degli event mesh e dei modelli di architettura basata su eventi presuppongono competenze in sistemi distribuiti, broker di eventi e piattaforme di integrazione.
- Rischi di latenza: per quanto l'architettura basata su eventi sia progettata per una reattività in tempo reale, un instradamento degli eventi mal configurato o il sovraccarico dei broker possono dare luogo a latenze.
Best practice per l'architettura basata su eventi
- Standardizza schemi e contratti di eventi: utilizza i registri degli schemi e applica la validazione per mantenere coerenza tra produttori e consumatori.
- Implementa una governance forte: definisci chiare policy per gli eventi per quanto concerne la proprietà, la sicurezza e la compliance. Sfrutta gli strumenti per l'auditing e il controllo degli accessi.
- Rafforza l'osservabilità: distribuisci soluzioni di monitoraggio e tracciamento per seguire i flussi di eventi, rilevare anomalie e semplificare il debugging.
- Progetta secondo criteri di scalabilità e resilienza: utilizza funzionalità di event mesh come il routing dinamico e il filtraggio a granularità fine per ottimizzare le performance e la tolleranza ai guasti.
- Automatizza con l'AI e l'intelligence degli eventi: integra analytics e automazione basati sull'AI per prevedere i problemi, ottimizzare l'instradamento e migliorare il processo decisionale in tempo reale.
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.
- Comunicazione asincrona: è una caratteristica fondamentale dell’architettura a eventi. Anziché attendere una risposta diretta come nei tradizionali modelli basati sulle richieste, le applicazioni pubblicano eventi e continuano ad operare senza subire interruzioni. Questa assenza di blocchi rende possibili interazioni in tempo reale all'interno dei sistemi distribuiti e migliora la reattività anche in presenza di carichi elevati.
- Accoppiamento debole: le applicazioni non hanno necessità di conoscere reciprocamente la disponibilità, la struttura API o la logica interna; si limitano a comunicare attraverso eventi instradati tramite un broker o un event mesh. Con la certezza che i produttori e i consumatori degli eventi operano in modo indipendente, i team possono aggiungere, aggiornare o sostituire servizi senza interferire con il sistema generale, rafforzando l'agilità e la tolleranza ai guasti.
- Scalabilità indipendente: poiché i componenti sono disaccoppiati, i singoli servizi possono aumentare o diminuire in base alla domanda, senza richiedere modifiche alle applicazioni a monte o a valle. Secondo SAP si tratta di un vantaggio fondamentale dell'integrazione basata su eventi, in particolare negli ambienti ibridi e multi-cloud in cui i picchi di carico e i carichi di lavoro distribuiti devono essere gestiti in modo efficiente.
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.
Prodotto SAP
Estendi su vasta scala l'approccio a eventi
Attiva la connettività istantanea e in tempo reale nei sistemi cloud con event mesh su scala enterprise.
FAQ
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.
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
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.
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.
Prodotto SAP
Esplora SAP Integration Suite
Accelera l'innovazione con integrazione basata su eventi, event mesh, API e processi in tempo reale.