Я будую нову програму і читав про архітектуру мікропослуг. Сама архітектура має багато сенсу з точки зору розвитку, розгортання та управління життєвим циклом. Однак одне питання, яке виникло, стосувалося того, як обробляти основні дані.
Наприклад, у мене є 2 додатки - скажімо, додаток Sales та додаток Ticketing. Припустимо, що обидва ці програми побудовані як власні мікросервіси. Однак обидва ці програми, якщо вони розгорнуті (якщо припустити, що вони розгорнуті окремо, наприклад, продаж продає MongoDB, а для продажу квитків використовується MariaDB), потрібно мати доступ до тих самих екземплярів основних даних, як облікові записи, продукти. Це означатиме, що для даного суб'єкта основних даних буде створено додаток власника (наприклад, для облікових записів, це може бути додаток продажів) та зацікавлена сторона (наприклад, додаток для продажу квитків повинен мати інформацію про облікові записи).
Це може бути досягнуто декількома способами: - реплікація даних від головного до зацікавленої сторони - синхронне зчитування від зацікавленої сторони до майстра (синхронізація парадигмою архітектури мікропослуг не рекомендується) - власне централізоване сховище
Також навіть у Рахунках може бути основна частина, яка є спільною як для продажів, так і для продажу квитків (наприклад, назва рахунку, адреса тощо). Однак деякі аспекти Рахунку можуть бути ТОЛЬКО актуальними для Продажів, а інші ТОЛЬКО актуальними для продажу квитків.
Будь-які думки / найкращі практики / думки стосовно будь-якого з вищезазначених варіантів?