Cos'è un evento, e cosa non è

banner

📚 In questa serie — Event-Driven Architecture:

  1. Event-driven architecture: cos’è
  2. Cos’è un evento, e cosa non è ← sei qui!
  3. Eventi, query, messaggi e dintorni
  4. EDA: inoltrare gli eventi
  5. Queue, Event Bus, Stream: Quale usare?

In questa seconda parte dedicata alle architetture event-driven, parliamo degli eventi: cosa sono e, soprattutto, cosa non sono?

Cos’è un evento

Come già detto nell’introduzione a questa serie di articoli, la Event-Driven Architecture è un pattern di comunicazione, più che una architettura vera e propria; è necessario quindi definire, prima di tutto, come un sistema possa far comunicare i suoi componenti in questo contesto.

Esempio di architettura event-driven

Come dice il nome stesso, l’architettura è basata sugli eventi, ma è importante definire cosa sia un evento e, di conseguenza, cosa non lo sia.

Un evento è la documentazione immutabile di un cambiamento di stato avvenuto nel sistema.

Sì, ma cosa vuol dire? Prendiamo questa frase e scomponiamola in parti più piccole.

Documentazione immutabile

Un evento è un’informazione che viene registrata in modo immutabile, ovvero che non può essere modificata. Questo è fondamentale perché, se un evento può essere modificato, non possiamo sapere chi lo abbia fatto e perché, e di conseguenza non risulterebbe più affidabile.

Ad esempio, se un evento informa il sistema dell’avvenuto pagamento di una transazione X di importo €10 e, successivamente, questo evento viene mutato in un evento di importo €100, il sistema non avrà modo di sapere se il pagamento è stato effettuato per €10 o per €100 e perché, e in caso di storno o rendicontazione, non saprebbe riconciliare i dati in suo possesso. In questi casi, infatti, è necessario registrare un nuovo evento - Variazione di €90 in positivo dell’importo della transazione X -, che sia a sua volta immutabile.

Cambiamento di stato

Per cambiamento di stato si intende una situazione in cui un oggetto, un’entità o un sistema passa da uno stato a un altro. Questo cambiamento può essere causato da un’azione interna o esterna al sistema stesso.

Un esempio di cambiamento di stato è il pagamento di una fattura: il sistema che gestisce le fatture, ricevuto il pagamento, cambia lo stato della fattura da Non pagata a Pagata, emettendo un evento che documenta questo cambiamento - Pagamento della fattura X. -.

Questo evento sarà poi consumato da altri sistemi che, in base al suo contenuto, potranno eseguire delle azioni.

Avvenuto nel sistema

Una nota importante è che un evento non rappresenta la modifica di un dato (Es. Aggiornamento dello stato della transazione X da “Da Pagare” a “Pagata”), ma il cambiamento di stato da un punto di vista di business (Es. Pagamento della fattura X).

Questo è importante perché, se un evento rappresentasse la modifica di un dato, esso sarebbe legato al sistema che lo ha generato, creando quello che nel mondo dell’architettura software viene chiamato alto accoppiamento (high coupling), rendendo più arduo il mantenimento e l’evoluzione del sistema stesso.

Per saperne di più, leggi il capitolo dedicato alle architetture de “Il Libro Open Source”.


🔗 Leggi anche:

Bio autore

Michael Di Prisco - Sviluppatore full-stack, da oltre un decennio nel settore, appassionato di tutto ciò che riguarda JavaScript.

TheRedCode.it - Il mondo #tech a piccoli #bit

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Welyk
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls Italy
Logo di Improove
Logo de Il Libro Open Source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di DevDojo

Vuoi diventare tech content creator? 🖊️

Se ti va di raccontare la tua esperienza nel mondo tech, questo è il posto giusto.

Cerchiamo voci autentiche, esempi pratici e punti di vista utili per chi legge.

Scrivici a collaborazioni[at]theredcode.it con una proposta: idea, taglio del contenuto e una breve presentazione. Non vediamo l'ora di leggere la tua esperienza!

Invia la tua idea