Cos'è un'architettura basata su eventi?
Un'architettura basata su eventi usa gli eventi per attivare e comunicare tra servizi disaccoppiati ed è comune nelle applicazioni moderne create con microservizi. Un evento è un cambiamento di stato, o un aggiornamento, come un articolo che viene messo nel carrello su un sito Web di e-commerce. Gli eventi possono comunicare lo stato (ad esempio, l'articolo acquistato, il suo prezzo e un indirizzo di consegna) o possono funzionare da identificatori (ad esempio, un avviso di spedizione dell'ordine).
Le architetture basate su eventi hanno tre componenti: produttori dell'evento, router dell'evento e consumatori dell'evento. Un produttore pubblica un evento sul router, che filtra e inoltra gli eventi ai consumatori. I servizi di produttore e consumatore vengono disaccoppiati, il che consente di dimensionarli, aggiornarli e implementarli in maniera indipendente.
Per un'analisi più approfondita, dai un'occhiata alla nostra serie di AWS Online Tech Talks su come utilizzare Amazon EventBridge per creare architetture basate su eventi disaccoppiate. Impara i fondamenti delle architetture basate su eventi e le nozioni di base su Amazon EventBridge, come la creazione di un router di eventi, l'impostazione di origini di eventi SaaS e molto altro ancora.
Vantaggi di un'architettura basata su eventi
Dimensiona e gestisci gli errori in modo indipendente
Disaccoppiando i servizi, ognuno sarà a conoscenza del router di eventi e non di quello che riguarda gli altri. Questo significa che i servizi sono sì interoperabili, ma se uno ha un problema, gli altri rimarranno operativi. Il router di eventi si comporta come un buffer elastico che gestisce i picchi nei carichi di lavoro.
Sviluppa con agilità
Non devi più scrivere codici personalizzati per eseguire il polling, filtrare e instradare gli eventi; il router di eventi filtrerà e inoltrerà automaticamente gli eventi per i clienti. Il router elimina anche la necessità di coordinamento eccessivo tra i servizi di produttore e consumatore, velocizzando così il processo di sviluppo.
Controlla con facilità.
Un router di eventi funziona come una sede centralizzata per il controllo dell'applicazione e la definizione delle policy. Queste policy possono limitare chi può pubblicare e iscriversi a un router e controllano quali utenti e quali risorse hanno le autorizzazioni per accedere ai dati. Inoltre, permettono di crittografare gli eventi sia in transito sia a riposo.
Taglia i costi.
Le architetture basate su eventi utilizzano la tecnologia push, quindi tutto accade on demand quando un evento si presenta nel router. In questo modo, non devi pagare per il polling continuo per controllare un evento. Questo si traduce in minore consumo di larghezza di banda della rete, minore utilizzo della CPU, minore capacità di parco istanze inattiva e minori handshake SSL/TLS.
Come funziona: architettura di esempio
Ecco un esempio di architettura basata su eventi per un sito e-commerce. Questa architettura permette al sito di reagire ai cambiamenti da una vasta gamma di origini durante i momenti di picco di domanda, evitando però il collasso dell'applicazione e l'over-provisioning delle risorse.
Quando utilizzare questa architettura
Replica dei dati tra più regioni su più account
Puoi utilizzare un'architettura basata su eventi per coordinare i sistemi tra i team che operano e implementano su più regioni e account. Utilizzando un router di eventi per trasferire i dati tra sistemi, puoi sviluppare, dimensionare e implementare i servizi in modo indipendente rispetto agli altri team.
Monitoraggio e avvisi sullo stato delle risorse
Invece di controllare continuamente le risorse, puoi utilizzare un'architettura basata su eventi per monitorare e ricevere avvisi su anomalie, modifiche e aggiornamenti. Queste risorse includono i bucket per l'archiviazione, le tabelle di database, le funzioni serverless, i nodi di calcolo e molto altro.
Fan-out ed elaborazione in parallelo
Se hai molti sistemi che devono funzionare in risposta a un evento, puoi utilizzare un'architettura basata su eventi per il fan-out degli eventi senza dover scrivere un codice personalizzato per l'inoltro a ogni consumatore. Il router inoltrerà l'evento ai sistemi, ognuno dei quali può elaborare l'evento in parallelo con scopi diversi.
Integrazione di sistemi eterogenei
Se hai dei sistemi in esecuzione su diversi stack, puoi utilizzare un'architettura basata su eventi per condividere informazioni tra loro senza accoppiarli. Il router di eventi stabilisce l'indirezione e l'interoperabilità tra i sistemi in modo che possano scambiarsi messaggi e dati rimanendo sempre indipendenti.
Dovrei utilizzare un'architettura basata sugli eventi?
Le architetture basate su eventi sono ideali per migliorare l'agilità e per eseguire spostamenti rapidi. Generalmente si trovano nelle applicazioni moderne che utilizzano i microservizi o in qualsiasi applicazione che abbia componenti disaccoppiati. Se adotti un'architettura basata su eventi, potresti dover ripensare il modo in cui visualizzi il design della tua applicazione. Per raggiungere gli obiettivi, devi considerare:
• La durabilità dell'origine degli eventi. L'origine degli eventi deve essere affidabile e garantire distribuzione, se devi elaborare ogni singolo evento.
• I tuoi requisiti di controllo delle applicazioni. La tua applicazione deve riuscire a gestire la natura asincrona dei router di eventi.
• Il tracciamento del flusso del tuo evento. L'indirezione dovuta all'architettura basata su eventi permette il tracciamento dinamico con servizi di monitoraggio, ma non quello statico con l'analisi del codice.
• I dati nell'origine del tuo evento. Se devi ricostruire lo stato, l'origine dell'evento deve essere deduplicata e ordinata.
Scarica la guida sull'architettura basata sugli eventi di AWS »
Da dove iniziare
Ci sono due tipi principali di router utilizzati nelle architetture basate su eventi: i bus di eventi e gli argomenti degli eventi. In AWS, offriamo Amazon EventBridge per creare bus di eventi e Amazon Simple Notification Service (SNS) per creare argomenti degli eventi.
Si consiglia l'utilizzo di Amazon EventBridge quando si desidera creare un'applicazione che reagisca agli eventi delle applicazioni SaaS, dei servizi AWS o delle applicazioni personalizzate. EventBridge utilizza uno schema predefinito per gli eventi e ti permette di creare regole applicate in tutto il corpo dell'evento per eseguire il filtraggio prima dell'inoltro ai clienti.
Amazon SNS è consigliato quando si desidera creare un'applicazione che reagisca a velocità di trasmissione effettiva elevata o eventi a bassa latenza pubblicati da altre applicazioni, microservizi o servizi AWS o per applicazioni che richiedono fan-out molto elevato (migliaia o milioni di endpoint). Gli argomenti SNS sono indipendenti dallo schema dell'evento.
Ottieni l'accesso immediato al piano gratuito di AWS.