Estoy haciendo un proyecto de investigación donde estoy investigando las opciones para manejar los cambios en una arquitectura de microservicios basada en eventos.
Entonces, digamos que tenemos una aplicación donde obtuvimos cuatro servicios diferentes. Cada uno de estos servicios tiene una base de datos propia para almacenar datos locales.
En esta configuración, los cuatro servicios se comunican entre sí mediante un bus de eventos. Entonces, cuando algo sucede en un servicio, publica un evento. Todos los demás servicios que estén interesados en ese evento lo procesarán a su manera.
En ese caso, los diferentes servicios de la arquitectura deben tener "contratos" sobre el contenido de estos eventos (atributos, etc.). Por lo tanto, los servicios tienen "dependencias débilmente acopladas" a estos eventos
Mi pregunta es: ¿Cómo podemos manejar los cambios en estos eventos?
Entonces, digamos que el servicio A registra nuevos usuarios en la aplicación. Por lo tanto, envía un evento "" Registrado por el usuario ". El servicio B recoge ese evento y lo procesa. Pero algunos desarrolladores del equipo del servicio C decidieron que también necesitan un género de un usuario registrado. Por lo tanto, el evento se cambia y el género del atributo se agrega al evento "UserRegistered".
¿Cómo podemos asegurarnos de que el Servicio B aún pueda recoger el mismo evento con ese atributo adicional sin volver a implementar?
¿Y hay otras formas de abordar este problema luego de versionar estos eventos?