Sto realizzando un progetto di ricerca in cui sto ricercando le opzioni per gestire i cambiamenti in un'architettura di microservizi basata sugli eventi.
Quindi, supponiamo di avere un'applicazione in cui abbiamo ottenuto quattro diversi servizi. Ognuno di questi servizi ha un proprio database per archiviare dati locali.
In questa configurazione, i quattro servizi comunicano tra loro utilizzando un bus eventi. Quindi quando succede qualcosa in un servizio, pubblica un evento. Tutti gli altri servizi interessati a quell'evento lo elaboreranno a modo loro.
In tal caso, i diversi servizi nell'architettura devono avere "contratti" sul contenuto di questi eventi (attributi, ecc.). Quindi i servizi hanno "dipendenze vagamente accoppiate" a questi eventi
La mia domanda è: come possiamo gestire i cambiamenti in questi eventi?
Quindi, diciamo che il servizio A registra nuovi utenti nell'applicazione. Quindi invia un evento "" Registrato dall'utente ". Il servizio B raccoglie quell'evento e lo elabora. Ma alcuni sviluppatori del team del servizio C hanno deciso di aver bisogno anche di un genere di utente registrato. Quindi l'evento è cambiato e l'attributo genere viene aggiunto all'evento "Registrato dall'utente".
Come possiamo assicurarci che il Servizio B possa ancora raccogliere lo stesso evento con quell'attributo extra senza ridistribuire?
E ci sono altri modi per affrontare questo problema, quindi il controllo delle versioni di questi eventi?