Je fais un projet de recherche où je recherche les options pour gérer les changements dans une architecture de microservice événementielle.
Donc, disons que nous avons obtenu une application où nous avons obtenu quatre services différents. Chacun de ces services possède sa propre base de données pour stocker les données locales.
Dans cette configuration, les quatre services communiquent entre eux à l'aide d'un bus d'événements. Ainsi, lorsqu'un événement se produit dans un service, il publie un événement. Tous les autres services intéressés par cet événement le traiteront à leur manière.
Dans ce cas, les différents services de l'architecture doivent avoir des «contrats» sur le contenu de ces événements (attributs, etc.). Les services ont donc des "dépendances faiblement couplées" à ces événements
Ma question est: comment gérer les changements dans ces événements?
Supposons donc que le service A enregistre de nouveaux utilisateurs dans l'application. Il envoie donc un événement "" UserRegistered ". Le service B récupère cet événement et le traite. Mais certains développeurs de l'équipe du service C ont décidé qu'ils avaient également besoin du sexe d'un utilisateur enregistré. L'événement est donc modifié et l'attribut gender est ajouté à l'événement "UserRegistered".
Comment pouvons-nous nous assurer que le service B peut toujours récupérer le même événement avec cet attribut supplémentaire sans redéployer?
Et y a-t-il d'autres façons d'aborder ce problème que de versionner ces événements?