Я создаю новое приложение и читал об архитектуре микро-сервисов. Сама архитектура имеет большой смысл с точки зрения разработки, развертывания и управления жизненным циклом. Однако возникла одна проблема, связанная с обработкой основных данных.
Например, у меня есть 2 приложения - например, приложение «Продажи» и приложение «Продажа билетов». Предположим, что оба эти приложения созданы как собственные микро-сервисы. Однако оба этих приложения при развертывании (при условии, что они развернуты отдельно, скажем, Sales использует MongoDB, а Ticketing использует MariaDB), должны будут иметь доступ к одним и тем же экземплярам основных данных, например, «Счета», «Продукты». Это будет означать, что для данного объекта основных данных будет существовать приложение-владелец (например, для Учетных записей это может быть приложение «Продажи») и заинтересованная сторона (например, приложение «Билетная заявка» должно иметь информацию об Учетных записях).
Это может быть достигнуто несколькими способами: - репликация данных от мастера к заинтересованной стороне - синхронное чтение от заинтересованной стороны к мастеру (зависимость от синхронизации не рекомендуется парадигмой архитектуры микросервисов) - собственный централизованный репозиторий
Также даже в рамках Учетных записей может существовать основная часть, которая является общей как для Продаж, так и для Билетов (например, имя учетной записи, адрес и т. Д.). Однако некоторые аспекты Учетной записи могут быть ТОЛЬКО релевантными для продаж, а другие - ТОЛЬКО для продажи билетов.
Какие-нибудь мысли / лучшие практики / мнения относительно любого из вышеупомянутых вариантов?