Panoramica
L'architettura guidata dagli eventi è uno stile architetturale software che funge da modello per la progettazione delle applicazioni. In un sistema event driven, l'acquisizione, la comunicazione, l'elaborazione e la persistenza degli eventi costituiscono i pilastri portanti della soluzione. Questa è la principale differenza rispetto a un modello request driven.
Molte delle progettazioni di applicazioni moderne sono architetture guidate da eventi, come ad esempio i framework di interazione con il cliente che hanno bisogno di utilizzare i dati dei clienti in tempo reale. Le applicazioni guidate dagli eventi possono essere create in qualsiasi linguaggio di programmazione perché l'essere "event driven" indica un approccio alla programmazione e non un linguaggio. L'architettura guidata dagli eventi consente un livello minimo di associazione delle applicazioni, l'opzione ideale per le architetture moderne e distribuite.
Un'architettura guidata dagli eventi viene definita a basso livello di associazione perché chi crea un evento (noto come producer eventi) non conosce né il destinatario dell'evento (noto come consumer eventi) né le conseguenze che derivano dal verificarsi dell'evento.
Cos'è un evento?
Per evento si intende qualsiasi avvenimento, o variazione, rilevante nello stato del sistema hardware o software. Un evento non equivale alla notifica di un evento, che è costituita invece da un messaggio inviato dal sistema per notificare a un'altra parte del sistema il verificarsi di un determinato evento.
La sorgente di un evento può essere interna o esterna. Gli eventi possono essere generati da un utente, come un clic o una battuta, da una sorgente esterna, come l'output di un sensore o dal sistema, come il caricamento di un programma.
Come funziona un'architettura guidata dagli eventi?
Un'architettura guidata dagli eventi è composta da producer eventi e consumer eventi. Il producer rileva o percepisce un evento e lo rappresenta come messaggio. Non conosce il consumer né l'esito dell'evento stesso.
Dopo il suo rilevamento, l'evento viene trasmesso dal producer eventi al consumer eventi attraverso i canali di eventi, dove una piattaforma di elaborazione degli eventi lo elabora in modo asincrono. Nel momento in cui si verifica un evento, i consumer eventi devono essere notificati e, successivamente, possono elaborarlo o semplicemente esserne coinvolti.
La piattaforma di elaborazione degli eventi risponderà correttamente all'evento e invierà l'attività downstream ai consumer designati. L'attività downstream è dove viene visualizzato l'esito di un evento.
Apache Kafka è una piattaforma distribuita di data streaming che viene utilizzata spesso per elaborare gli eventi ed è in grado di gestire flussi di eventi di pubblicazione, sottoscrizione ed elaborazione in tempo reale. Apache Kafka supporta una vasta gamma di esempi di utilizzo, che richiedono produttività e scalabilità elevate e, minimizzando il ricorso a integrazioni point to point per la condivisione dei dati in determinate applicazioni, consente di ridurre la latenza a millisecondi.
Esistono anche altri componenti di gestione eventi middleware disponibili sul mercato che possono essere utilizzati come piattaforme di elaborazione degli eventi.
Modelli di architettura guidata dagli eventi
Un'architettura guidata dagli eventi può essere basata su un modello pub/sub o di flusso di eventi.
Modello pub/sub
Si tratta di un'infrastruttura di messaggistica basata su sottoscrizioni a un flusso di eventi. Con questo modello, al suo verificarsi o in seguito alla sua pubblicazione, l'evento viene inviato ai sottoscrittori che devono essere informati.
Modello di flusso di eventi
Con un modello di flusso di eventi, gli eventi vengono annotati in un registro. I consumer eventi non effettuano la sottoscrizione a un flusso di eventi, ma possono leggere ogni parte del flusso e parteciparvi in qualsiasi momento.
Di seguito sono riportate alcune tipologie di flussi di eventi:
- L'elaborazione di flussi di eventi usa una piattaforma di flussi di dati, come Apache Kafka, per inserire gli eventi ed elaborarne o trasformarne il flusso. Questa tipologia di elaborazione può essere utilizzata per rilevare modelli significativi nei flussi degli eventi.
- L'elaborazione semplice degli eventi avviene quando un evento attiva un'azione immediata da parte del consumer.
- L'elaborazione complessa degli eventi richiede a un consumer eventi di elaborare una serie di eventi per rilevare dei modelli.
I vantaggi dell'architettura guidata dagli eventi
Un'architettura guidata dagli eventi può aiutare le organizzazioni a realizzare un sistema flessibile che consenta loro di trasformarsi prendendo anche decisioni in tempo reale. Disporre di informazioni in tempo reale significa poter sfruttare tutti i dati disponibili che riflettono lo stato attuale del sistema per prendere qualsiasi decisione aziendale, sia manuale sia automatizzata.
Gli eventi vengono acquisiti dalle rispettive fonti, tra cui i dispositivi, le applicazioni e le reti dell'Internet of Things (IoT), man mano che si verificano e ciò consente ai producer e ai consumer eventi di condividere lo stato e le informazioni della risposta in tempo reale.
Aggiungendo un'architettura guidata dagli eventi ai loro sistemi e applicazioni, le aziende sono in grado di migliorare la scalabilità e i tempi di risposta delle applicazioni nonché l'accesso ai dati e il contesto su cui far poggiare il processo decisionale.
Perché scegliere Red Hat per l'integrazione Agile?
Le moderne architetture applicative cloud native a basso livello di associazione e sviluppate attraverso i metodi agile e DevOps hanno bisogno di un approccio altrettanto agile e scalabile all'integrazione.
Nella visione di Red Hat, l'integrazione agile è esattamente questo: un approccio al collegamento delle risorse che combina tecnologie di integrazione, tecniche di distribuzione agile e piattaforme cloud native per migliorare la velocità e la sicurezza nella distribuzione del software.
Red Hat propone piattaforme di integrazione e software di gestione in grado di connettere rapidamente tecnologie e microservizi esistenti in ambienti hybrid cloud e supportare l'architettura guidata dagli eventi con l'agile integration.