Come parte essenziale dell'architettura cloud native , i microservizi sono applicazioni create da servizi liberamente accoppiati e implementabili in modo indipendente. I microservizi, di solito, comunicano tra loro tramite protocolli leggeri come HTTP, code di messaggistica o flussi di eventi. L'architettura basata sugli eventi è spesso il modo migliore per implementare i microservizi perché promuove maggiori livelli di modularità, tolleranza agli errori e scalabilità.
L'architettura basata sugli eventi (EDA) è un modello di progettazione software che consente ai sistemi di rilevare, elaborare, comunicare e rispondere agli eventi in tempo reale. Il sistema EDA comunica gli eventi non appena si verificano, consentendo a qualsiasi persona, servizio o applicazione basata su eventi che deve ricevere informazioni su un evento di rispondere in tempo reale.
La messaggistica asincrona e l'accoppiamento libero sono due aspetti importanti dell'architettura basata sugli eventi. La comunicazione asincrona sostituisce la tradizionale architettura del tipo "richiesta e risposta" in cui i servizi devono attendere una risposta prima di passare all'esecuzione di un'attività. Ciò consente un'integrazione più semplice e rende i sistemi più scalabili poiché possono gestire volumi più elevati di dati in tempo reale con bassa latenza. Inoltre, consente di disaccoppiare o accoppiare liberamente i sistemi correlati. Ciò significa che app e servizi possono comunicare tra loro pubblicando e utilizzando gli eventi senza conoscere molte altre informazioni sull'altro sistema. Di conseguenza, i sistemi basati sugli eventi possono scalare rapidamente e sono altamente resilienti agli errori perché possono continuare a funzionare anche se un componente non è disponibile. Il sistema EDA è anche adatto per l'elaborazione e la gestione in tempo reale di grandi volumi di dati poiché i componenti possono reagire agli eventi ed elaborare i dati non appena arrivano senza dover attendere un dataset completo.
Che cos'è un evento?
Un evento è qualsiasi cambiamento nello stato di un componente interno di un sistema aziendale: un oggetto aggiunto a un bucket, un nuovo record aggiunto a un database, un elemento inserito in un carrello o una password reimpostata. Si tratta di un fenomeno che si è verificato in passato, normalmente in formato JSON o YAML.
Perché è necessaria un'architettura basata sugli eventi?
Tutti i processi aziendali sono guidati dagli eventi e la capacità di reagire rapidamente agli eventi è essenziale per la produttività, l'efficienza e la competitività. Più rapidamente applicazioni, servizi e persone possono ottenere informazioni sugli eventi, più efficacemente può operare un'organizzazione.
In questo ambiente, l'architettura basata sugli eventi è importante perché comunica gli eventi non appena si verificano, a differenza di approcci basati sulle architetture come le API , che aspettano l'aggiornamento periodico dei sistemi.
Quali sono i componenti di un'architettura basata sugli eventi?
L'architettura basata sugli eventi include componenti software e hardware implementati e connessi per fornire comunicazioni e messaggi in tempo reale sugli eventi. Questi componenti includono:
- Editori di eventi: queste fonti di eventi, note anche come produttori di eventi, generano un evento e poi lo pubblicano su un canale o un bus di eventi.
- Bus di eventi: include broker di eventi, code di messaggi e un canale di eventi. È il percorso attraverso il quale gli eventi vengono comunicati dai produttori di eventi ai consumatori di eventi. I canali degli eventi consentono la natura asincrona e libera dell'EDA, migliorando la flessibilità e la scalabilità dei sistemi, nonché l'organizzazione dei relativi gruppi di messaggistica.
Abbonati agli eventi: noti anche come consumatori di eventi o ascoltatori di eventi, gli abbonati ricevono, elaborano e rispondono agli eventi. Le risposte possono includere elementi come l'aggiornamento di un database, l'esecuzione di un'attività, l'avvio di un processo o la generazione di nuovi eventi.
Come funziona l'architettura basata sugli eventi?
Ecco i passaggi necessari per comunicare gli eventi all'interno di un'architettura basata sugli eventi:
- Un editore di eventi produce un evento e pubblica tali dati su uno o più canali sul bus dell'evento.
- L'abbonato all'evento "ascolta" gli eventi sui canali che gli interessano e risponde quando viene pubblicato un evento pertinente. Inoltre, può potenzialmente attivare altri workflow, azioni o eventi.
L'architettura basata sugli eventi viene, solitamente, implementata in un modello di pubblicazione/sottoscrizione (pub/sub) o in un modello di streaming di eventi.
- Pub/sub: in questo modello, noto anche come modello di messaggistica di eventi, i consumatori di eventi si iscrivono a una classe di messaggi pubblicati dai produttori di eventi. Quando i produttori pubblicano un evento, le informazioni vengono comunicate a tutti gli abbonati che desiderano utilizzarle. Questa operazione viene, solitamente, eseguita tramite un broker di messaggi che riceve i messaggi degli eventi, li traduce se necessario, gestisce l'ordine dei messaggi, li rende disponibili agli abbonati ed elimina i messaggi una volta utilizzati.
- Streaming di eventi: in questo modello, i consumatori si iscrivono ai flussi degli eventi inviati dagli editori ai broker e memorizzati nei registri. Anziché ricevere e utilizzare ogni evento non appena pubblicato, i consumatori possono entrare nel flusso in qualsiasi momento e utilizzare solo gli eventi a cui sono interessati. Gli eventi possono essere conservati per un periodo di tempo, consentendo ai consumatori di riceverli in qualsiasi momento. Alcuni processi di streaming di eventi utilizzano una piattaforma di streaming di dati come Apache Kafka per gestire l'acquisizione, l'elaborazione e la trasformazione del flusso di eventi. Lo streaming di eventi può essere utilizzato anche per l'elaborazione di eventi complessi, in cui i consumatori elaborano un gran numero di eventi contemporaneamente.
Quali sono i vantaggi dell'architettura basata sugli eventi?
L'architettura basata sugli eventi offre molti vantaggi alle organizzazioni di ogni settore.
- Maggiore flessibilità del sistema: la natura liberamente accoppiata di un'architettura basata sugli eventi consente alle organizzazioni di modificare, aggiungere o rimuovere facilmente componenti senza influire sull'intero sistema, il che la rende adattabile ai requisiti in continua evoluzione. Per gli sviluppatori, il sistema EDA riduce la complessità rendendo possibile suddividere i workflow monolitici in una serie di servizi semplici e liberi che possono essere gestiti in modo indipendente e comunicati in modo asincrono tramite i messaggi degli eventi.
- Migliore scalabilità: il sistema EDA supporta una facile scalabilità orizzontale, consentendo alle aziende di gestire un aumento dei carichi di lavoro o del traffico tramite l'aggiunta di più istanze di componenti o servizi in base alle esigenze.
- Maggiore resilienza del sistema: la comunicazione asincrona e i componenti liberi del sistema EDA contribuiscono a migliorare la tolleranza agli errori perché il guasto di un componente non causa necessariamente un'interruzione a livello di sistema.
- Funzionalità di elaborazione in tempo reale: l'EDA consente l'elaborazione in tempo reale di grandi volumi di dati e complessi modelli di eventi, il che lo rende adatto alle aziende che richiedono informazioni o risposte immediate a condizioni reali in rapida evoluzione.
- Utilizzo ottimizzato delle risorse: reagendo agli eventi solo quando si verificano, l'EDA aiuta ad ottimizzare l'utilizzo delle risorse e riduce la necessità di eseguire continuamente i processi, portando potenzialmente a risparmi sui costi e a una migliore efficienza.
- Velocità più elevata: l'EDA può velocizzare i sistemi perché i diversi componenti non devono aspettarsi l'un l'altro.
Quali sono i casi di utilizzo dell'architettura basata sugli eventi?
I casi di utilizzo più comuni per l'architettura basata sugli eventi includono:
- Monitoraggio in tempo reale: anziché attendere i risultati di verifiche e aggiornamenti periodici, l'EDA consente ad applicazioni, servizi e team di ricevere avvisi immediati su eventuali anomalie, modifiche e aggiornamenti ai sistemi.
- Replica dei dati: l'EDA semplifica la condivisione di un singolo evento tra più servizi, che possono copiare i dati dei propri eventi in vari database. L'EDA può anche coordinare i sistemi che operano in diverse aree geografiche e account.
- Ridondanza: quando un servizio si interrompe, gli eventi possono persistere all'interno di un router fino a quando il servizio non viene ripristinato e non è in grado di utilizzare nuovamente gli eventi.
- Elaborazione parallela: con l'EDA, un singolo evento può attivare più processi contemporaneamente.
- Integrazione e interoperabilità: l'architettura basata sugli eventi consente ai sistemi in esecuzione su diversi stack di condividere le informazioni senza la necessità di essere strettamente accoppiati.
Quali sono gli esempi di un'architettura basata sugli eventi?
L'architettura basata sugli eventi viene utilizzata in un'ampia gamma di settori e sistemi.
- E-commerce: l'EDA consente alle società di e-commerce di rispondere immediatamente ogni volta che un articolo viene collocato in un carrello, viene effettuato un acquisto, viene elaborato un pagamento o viene spedito un pacchetto.
- IoT: l'architettura basata sugli eventi è fondamentale per la raccolta di dati nei sistemi IoT (Internet of Things) perché attiva le azioni necessarie quando i dispositivi IoT rilevano determinate condizioni o metriche.
- Mercato azionario: quando cambiano le condizioni del mercato, l'EDA può attivare strategie di trading automatizzate.
- Analisi in tempo reale: l'EDA può attivare immediatamente l'analisi degli eventi in tempo reale per rilevare le frodi, monitorare il traffico e prendere decisioni migliori in base alle condizioni in tempo reale.
- Gaming online: l'EDA consente ai giochi online di identificare e rispondere a eventi come le azioni dei giocatori, i personaggi in movimento o il completamento di attività.
- Case intelligenti: sensori e dispositivi intelligenti posizionati all'interno delle abitazioni possono rispondere ai cambiamenti di temperatura, movimento, illuminazione e altri eventi.
- Automazione dei workflow: l'EDA consente alle organizzazioni di automatizzare molti passaggi in un workflow complesso, in cui un evento attiva nuovi passaggi in un processo.
Domande frequenti
All'interno dei sistemi basati sugli eventi, il disaccoppiamento e l'accoppiamento libero sono concetti correlati. Il disaccoppiamento è il processo di eliminazione delle dipendenze tra i diversi componenti interni ad un sistema in modo che nessuno dei due componenti dipenda dall'altro. Ciò consente ai componenti di essere più indipendenti e crea un sistema più flessibile e resiliente. L'accoppiamento libero è una forma di disaccoppiamento che riduce al minimo la dipendenza senza separare completamente i componenti. I componenti possono ancora interagire tra loro, ma senza creare una dipendenza duratura.
Il computing senza server è un paradigma di elaborazione in cui gli sviluppatori possono accedere ai servizi di back-end on-demand per potersi concentrare sulla scrittura del codice senza doversi preoccupare della gestione dei server e dell'infrastruttura in uso. Nell'architettura basata sugli eventi sottostante, le funzioni vengono attivate da eventi come richieste HTTP, caricamenti di file e aggiornamenti del database per semplificare l'architettura delle applicazioni e migliorare la scalabilità.
Perché i clienti scelgono Akamai
Akamai è l'azienda di cybersecurity e cloud computing che abilita e protegge il business online. Le nostre soluzioni di sicurezza leader del settore, l'innovativa intelligence sulle minacce e il team presente su scala globale forniscono una difesa approfondita in grado di proteggere applicazioni e dati critici ovunque. Le soluzioni complete di cloud computing offerte da Akamai assicurano performance elevate e notevoli risparmi grazie alla piattaforma più distribuita al mondo. Le maggiori aziende internazionali si affidano ad Akamai per ottenere la protezione, la scalabilità e le competenze leader del settore di cui hanno bisogno per far crescere le loro attività senza rischi.