Я разрабатываю архитектуру микросервисов для решения, которое будет охватывать несколько модулей, которые могут работать отдельно или могут быть подключаемыми в соответствии с приобретением.
Моя проблема определения архитектурных / инфра-данных заключается в следующем: просто в качестве примера (не реального решения) давайте рассмотрим его как полное решение для управления резервированием со следующими модулями:
Модуль бронирования отелей
Модуль бронирования развлечений (различные мероприятия: театр, музыкальные шоу и т. Д.)
Модуль бронирования автомобиля
Модуль продажи авиабилетов
Каждый модуль будет иметь свой собственный домен: интеграции, правила и базу данных вашего домена. Проблема, которую я пытаюсь решить в этом моделировании обслуживания / хранения, состоит в том, как разделить общие части в служебной шине и повторно использовать ее для всех модулей. но без создания единой модели данных, например:
во всех этих модулях у меня будет пользовательская база (будут другие общие точки), какой лучший подход к созданию уникального, но независимого пользовательского хранилища данных для моделей каждого сервисного модуля?
Я думал о следующих опциях:
1 - иметь служебную шину для управления пользователями в общей базе данных, и каждый модуль будет иметь ссылку на FK пользователя в их схеме непосредственно из базы данных.
Используя этот подход https://www.akadia.com/services/ora_references_constraint.html
Но каково, например, выполнение JOIN между схемами? Может ли это сделать невозможным?
2 - иметь служебную шину для управления пользователями в общей базе данных и реплицировать данные через службы для каждого модуля, каждый из которых будет иметь свою собственную базу пользователей.
Проблемой могут быть несколько пользовательских баз в одном решении.
У каждого модуля есть свои сервисы и модели данных, я не хочу создавать единую модель хранения для всех модулей. Это небольшая система, состоящая из нескольких частей, это решение с несколькими независимыми, но подключаемыми системами.
Первый вариант кажется лучше, но мне не совсем удобно думать о современной архитектуре.
Что вы предлагаете об этой архитектуре, решение NoSQL будет более подходящим?
Любые чаевые приветствуются.