Я роблю дослідницький проект, де досліджую варіанти обробки змін в архітектурі мікросервісів, керованих подіями.
Отже, скажімо, ми отримали додаток, де ми отримали чотири різні сервіси. Кожна з цих служб має власну базу даних для зберігання локальних даних.
У цьому налаштуванні чотири служби спілкуються один з одним за допомогою шини подій. Тож коли щось трапляється в службі, він публікує подію. Усі інші служби, які зацікавлені в цій події, оброблять її по-своєму.
У такому випадку різні служби в архітектурі повинні мати "договори" про зміст цих подій (атрибути тощо). Тож служби мають "слабо пов'язані залежності" від цих подій
Моє запитання: як можна впоратись із змінами в цих подіях?
Отже, скажімо, сервіс A реєструє нових користувачів у додатку. Таким чином, він надсилає подію "UserRegistered". Служба B підбирає цю подію та обробляє її. Але деякі розробники в команді сервісу C вирішили, що їм також потрібна стать зареєстрованого користувача. Тому подія змінено і гендер атрибута додається до події "UserRegistered".
Як ми можемо переконатися, що служба B все ще може взяти ту саму подію з цим додатковим атрибутом без перерозподілу?
І чи є інші способи наблизитись до цієї проблеми після версії цих подій?