Как выводить вложенные зависимости (реляции) данных между микросервисами?
Есть сервис отвечающий за адреса - Address
Есть сервисы Organization, User, SailPoint
Сейчас у меня монолит. Одна БД
Таблица организаций. Каждая организация ссылается на адрес таблицы адресов. Такая же ситуация с пользователями и торговыми точками.
При выводе ответа, реляция подгружает данные со связанных таблиц.
{address_id: 1,
address: {данные записи 1 из таблицы адресов}
}
Не могу понять. как такое можно организовать при микросервисной архитектура. Например с оркестратором.
Мне опять же нужно выводить ответ с вложенными связанными данными. Но теперь эти данные в разных сервисах, т.к. у каждого сервиса своя БД.
На ум приходит, собрать все address_id полученных организаций, запросить данные из микросервиса адресов.
Затем пройтись по списку организаций и вложить в каждую свой объект адреса.
Или есть решение проще?
Бог дал Моисею одну из заповедей "Не сотвори себе кумира", в Unix есть философия утилита должна делать одно дело, быстро и без ошибок, AWS недавно сказало что излишнее количество микросервисов нужно сокращать.
В вашем случае я советую прислушаться к этим советам. Все эти 4 сервиса не разъединять (хотя SailPoint все же стоит отделить).
Дальше, в самой базе хранить id всех этих сущностей, Ведь допустим для SailPoint важны атрибуты времени работы, адреса и организации, а все остальное можно подтянуть уже позже отображения карточки.