Sto facendo un progetto di ricerca in cui sto ricercando le opzioni per gestire i cambiamenti in un'architettura di microservizi basata sugli eventi.
Quindi, diciamo che abbiamo un'applicazione in cui abbiamo ottenuto quattro servizi diversi. Ciascuno di questi servizi ha un proprio database per memorizzare i dati locali.
In questa configurazione, i quattro servizi comunicano tra loro utilizzando un bus eventi. Quindi, quando qualcosa accade in un servizio, pubblica un evento. Tutti gli altri servizi interessati a quell'evento lo elaboreranno a modo loro.
In questo caso i diversi servizi nell'architettura devono avere "contratti" sul contenuto di questi eventi (attributi, ecc.). Quindi i servizi hanno "dipendenze vagamente accoppiate" per questi eventi
La mia domanda è: Come possiamo gestire le modifiche in questi eventi?
Quindi, supponiamo che il servizio A registri nuovi utenti nell'applicazione. Quindi invia un evento "UserRegistered": il servizio B preleva quell'evento e lo elabora, ma alcuni sviluppatori del team di servizio C hanno deciso che hanno anche bisogno di un genere di utente registrato, quindi l'evento viene modificato e l'attributo di genere viene aggiunto all'evento "UserRegistered".
Come possiamo assicurarci che Service B possa ancora ritirare lo stesso evento con quell'attributo extra senza ridistribuire?
E ci sono altri modi per affrontare questo problema, quindi la versione di questi eventi?