Estou fazendo um projeto de pesquisa em que estou pesquisando as opções para lidar com alterações em uma arquitetura de microsserviço orientada a eventos.
Então, digamos que temos um aplicativo em que temos quatro serviços diferentes. Cada um desses serviços possui um banco de dados próprio para armazenar dados locais.
Nesta configuração, os quatro serviços se comunicam usando um barramento de eventos. Então, quando algo acontece em um serviço, ele publica um evento. Todos os outros serviços interessados nesse evento irão processá-lo à sua maneira.
Nesse caso, os diferentes serviços na arquitetura precisam ter "contratos" sobre o conteúdo desses eventos (atributos etc.). Portanto, os serviços têm "dependências fracamente acopladas" a esses eventos
Minha pergunta é: como podemos lidar com as mudanças nesses eventos?
Então, digamos que o serviço A registre novos usuários no aplicativo. Por isso, ele envia um evento "" UserRegistered ". O serviço B pega esse evento e o processa. Mas alguns desenvolvedores da equipe do serviço C decidiram que também precisam do sexo de um usuário registrado. Portanto, o evento é alterado e o atributo gender é adicionado ao evento "UserRegistered".
Como podemos garantir que o Serviço B ainda possa capturar o mesmo evento com esse atributo extra sem reimplementar?
E existem outras maneiras de abordar esse problema e depois fazer a versão desses eventos?