Che cos'è l'architettura basata su eventi?

Le aziende hanno sempre più bisogno di sistemi in grado di reagire istantaneamente a un'ampia gamma di trigger, dalle interazioni con i clienti alle letture dei sensori. I modelli tradizionali di richiesta-risposta, pur essendo validi, potrebbero non offrire sempre l'agilità o la scalabilità necessarie per questi ambienti dinamici. L'architettura basata su eventi (EDA) può offrire un paradigma potente per la creazione di applicazioni reattive, resilienti e scalabili. È un pattern di architettura software che può promuovere la produzione, il rilevamento, il consumo e la reazione agli eventi.

Comprendere l'architettura basata su eventi

Definizione dell'architettura basata su eventi

L'architettura basata su eventi è un modello per la progettazione di applicazioni software in cui i servizi sono a basso accoppiamento e comunicano attraverso la produzione e il consumo di eventi. Un "evento" indica un'occorrenza significativa o una modifica dello stato del sistema. Può trattarsi di qualsiasi cosa, dall'inserimento di un ordine da parte di un cliente, al rilevamento di una variazione di temperatura da parte di un sensore, fino al caricamento di un nuovo file nell'archivio o all'aggiornamento di un record di database.

A differenza dei modelli tradizionali basati su richieste in cui un servizio chiama esplicitamente un altro e attende una risposta, l'EDA consente ai servizi di operare in modo asincrono. Un servizio che genera un evento (il "produttore" o "publisher") si limita ad annunciare che l'evento si è verificato. Altri servizi (i "consumer" o "sottoscrittori") interessati a quel tipo di evento possono quindi reagire in modo indipendente e nei tempi che preferiscono.

I componenti chiave di un'EDA includono in genere:

  • Producer di eventi: applicazioni o servizi che generano eventi
  • Consumer di eventi (o sottoscrittori): applicazioni o servizi che ricevono ed elaborano gli eventi
  • Canale di eventi (o bus di eventi, broker di messaggi, router di eventi): l'infrastruttura intermedia che importa gli eventi dai produttori, li filtra e li consegna ai consumatori interessati; questo componente è fondamentale per disaccoppiare i produttori dai consumatori

Come funziona l'architettura basata sugli eventi?

Il flusso di lavoro in un'architettura basata sugli eventi segue generalmente un pattern coerente.

  • Occorrenza ed elaborazione dell'evento: un'azione significativa si svolge all'interno di un servizio o di un sistema. Ad esempio, un utente potrebbe fare clic su un pulsante "Invia ordine" su un sito web di e-commerce. Il servizio responsabile della gestione di questa azione iniziale (il produttore di eventi) genera un oggetto evento contenente informazioni pertinenti su ciò che è accaduto, come l'ID dell'ordine, gli articoli e i dettagli del cliente.
  • Trasmissione dell'evento: il produttore invia questo evento a un canale di eventi. Questo canale è un componente dedicato dell'infrastruttura, come una coda di messaggi o un sistema di pubblicazione-sottoscrizione (pub/sub), progettato per gestire il flusso di eventi.
  • Filtro e routing degli eventi (tramite il canale eventi): il canale eventi riceve l'evento. Può quindi applicare regole di filtro o instradare l'evento in base al tipo, al contenuto o all'argomento a vari consumer downstream che hanno registrato un interesse per tali eventi. Ad esempio, un evento "order_placed" potrebbe essere indirizzato a un servizio di inventario, a un servizio di notifica e a un servizio di spedizione.
  • Consumo ed elaborazione degli eventi: i servizi interessati (consumer) ricevono l'evento dal canale. Ogni consumer elabora l'evento in modo asincrono e indipendente. Continuando con l'esempio dell'e-commerce:
  • Il servizio di inventario potrebbe ridurre i livelli di stock per gli articoli ordinati
  • Il servizio di notifica potrebbe inviare un'email di conferma dell'ordine al cliente
  • Il servizio di spedizione potrebbe avviare il processo logistico

Vantaggi dell'architettura basata su eventi

L'adozione di un'architettura basata sugli eventi può offrire numerosi vantaggi, in particolare per i sistemi complessi e distribuiti.

Scalabilità migliorata

I servizi in un'architettura EDA sono a basso accoppiamento e possono essere scalati in modo indipendente. Se un servizio di "elaborazione degli ordini" è sottoposto a un carico elevato, puoi scalare solo quel servizio senza influire, ad esempio, sul servizio di "notifica all'utente".

Resilienza e tolleranza agli errori migliorate

L'architettura basata su eventi può contribuire alla robustezza delle applicazioni isolando gli errori dei servizi. La natura disaccoppiata garantisce che un malfunzionamento in un servizio consumer in genere non si propaghi e non causi un guasto completo del sistema.

Maggiore agilità e flessibilità

Gli sviluppatori possono aggiungere, modificare o rimuovere servizi con un impatto minimo su altre parti del sistema. I nuovi servizi possono sottoscrivere flussi di eventi esistenti per aggiungere nuove funzionalità senza richiedere modifiche ai produttori di eventi originali.

Reattività in tempo reale

L'architettura basata sugli eventi aiuta i sistemi a rispondere agli eventi con notevole immediatezza. Questa funzionalità è particolarmente preziosa per le applicazioni in cui è fondamentale un'azione rapida, tra cui il rilevamento delle frodi, l'analisi in tempo reale e il monitoraggio operativo.

Integrazione semplificata

L'EDA può fungere da struttura flessibile per l'integrazione di sistemi disparati, tra cui applicazioni legacy, microservizi moderni e servizi di terze parti. Ogni sistema può pubblicare e consumare eventi senza la necessità di integrazioni dirette point-to-point con tutti gli altri sistemi.

Estensibilità

L'aggiunta di nuove funzionalità o la reazione a eventi esistenti in modi nuovi spesso comporta semplicemente la distribuzione di un nuovo servizio per i consumatori che si iscrive al flusso di eventi pertinente.

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti gratuiti da spendere su Google Cloud.

Casi d'uso dell'architettura basata su eventi

Le caratteristiche dell'EDA la rendono adatta a un'ampia gamma di applicazioni in vari settori.

L'EDA è un modello comune per abilitare la comunicazione e il flusso di dati tra i microservizi. Invece di chiamate API dirette e sincrone che possono creare un accoppiamento stretto, i microservizi possono pubblicare eventi quando il loro stato cambia e altri microservizi possono sottoscrivere questi eventi per reagire di conseguenza.

Le applicazioni che gestiscono flussi di dati ad alta velocità, come i dati dei sensori IoT, i log delle applicazioni, i feed dei social media o i dati dei mercati finanziari, possono utilizzare l'EDA per elaborare, analizzare e reagire a queste informazioni in tempo reale. Questo può aiutare a potenziare dashboard, sistemi di avviso o processi decisionali automatizzati.

Dalla gestione dei livelli di inventario in risposta alle vendite all'elaborazione degli ordini attraverso varie fasi (pagamento, spedizione, evasione) fino all'invio di notifiche ai clienti, EDA può aiutare a gestire i flussi di lavoro complessi e asincroni inerenti alla vendita al dettaglio online. Se un servizio di elaborazione dei pagamenti è lento, l'evento dell'ordine può comunque essere acquisito ed elaborato da altri servizi come la prenotazione dell'inventario.

Molti processi aziendali sono intrinsecamente basati su eventi. Ad esempio, la presentazione di una richiesta di risarcimento assicurativo (evento) può attivare una serie di attività a valle: controllo delle frodi, valutazione, comunicazione con il cliente e, infine, elaborazione del pagamento. L'EDA può aiutare a modellare e automatizzare questi flussi di lavoro in modo efficace.

Quando è necessario mantenere la coerenza dei dati tra più sistemi o archivi di dati, è possibile utilizzare l'EDA. La modifica di un database (un evento) può essere pubblicata, consentendo ad altri database o cache di sottoscrivere questi eventi di modifica e di aggiornarsi.

Le funzioni serverless (come le funzioni Cloud Run) sono spesso progettate per essere basate su eventi. Vengono eseguite in risposta a vari trigger di eventi, come il caricamento di un oggetto in Cloud Storage, l'arrivo di un messaggio in una coda o una richiesta HTTP. L'EDA è una soluzione naturale per la creazione di applicazioni che utilizzano componenti serverless.

Il rilevamento delle frodi in tempo reale, il monitoraggio del mercato azionario e l'elaborazione delle transazioni sono applicazioni finanziarie critiche che traggono vantaggio dalle funzionalità di bassa latenza e alta velocità effettiva dell'EDA.

In che modo Google Cloud utilizza l'architettura basata su eventi?

Google Cloud fornisce una suite di servizi robusta che può consentire ai clienti di creare ed eseguire il deployment di potenti applicazioni basate su eventi. La piattaforma stessa sfrutta i principi basati su eventi per contribuire a fornire servizi scalabili e resilienti. Per i clienti che creano soluzioni basate su eventi, Google Cloud offre diversi servizi gestiti chiave:

  • Pub/Sub: si tratta di un servizio di messaggistica in tempo reale distribuito a livello globale, scalabile e affidabile che funge da bus di eventi o broker di messaggi in un'architettura basata sugli eventi. Pub/Sub aiuta i servizi a pubblicare eventi e altri servizi a sottoscrivere questi eventi in modo asincrono. Disaccoppia gli editori dai sottoscrittori e supporta funzionalità come la distribuzione "at-least-once", le sottoscrizioni push e pull e il filtro dei messaggi.
  • Eventarc: Eventarc può fornire un modo standardizzato per gestire il flusso di eventi collegando le origini eventi (come le modifiche ai bucket Cloud Storage, i completamenti dei job BigQuery o gli eventi di applicazioni personalizzate) ai consumatori di eventi. Consente agli sviluppatori di attivare facilmente servizi Cloud Run, funzioni Cloud Run o flussi di lavoro in risposta agli eventi.
  • Cloud Run: questa piattaforma di computing completamente gestita consente di eseguire i container stateless, rendendoli richiamabili tramite richieste HTTP o tramite eventi da Pub/Sub (spesso tramite Eventarc). Utilizzando le funzioni Cloud Run, puoi eseguire il deployment di piccoli pezzi di codice monouso (funzioni) che rispondono a un'ampia gamma di eventi senza la necessità di gestire server o ambienti di runtime. All'interno dell'architettura basata su eventi, i servizi Cloud Run possono essere molto efficaci come consumer di eventi, elaborando carichi di lavoro attivati da questi eventi.
  • Workflows: una piattaforma di orchestrazione completamente gestita che consente di definire, eseguire il deployment e gestire flussi di lavoro serverless. I flussi di lavoro possono essere attivati da eventi (tramite Eventarc o Pub/Sub) e possono coordinare le chiamate a vari servizi Google Cloud e API basate su HTTP, il che li rende adatti all'orchestrazione di processi aziendali complessi basati su eventi.
  • Dataflow: per l'elaborazione di eventi complessi (CEP) e l'analisi dei flussi di dati, Dataflow può fornire una piattaforma unificata per l'elaborazione dei dati in modalità flusso e batch. Può importare flussi di eventi da Pub/Sub, eseguire trasformazioni, aggregazioni e analisi sofisticate e quindi inviare i risultati ad altri sistemi o attivare ulteriori azioni.

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud