Для людей, которые разбивают монолитные приложения на микросервисы, как вы справляетесь с проблемой разделения базы данных? Типичные приложения, над которыми я работал, часто интегрируются с базами данных по причинам производительности и простоты.
Если у вас есть две логически разные таблицы (ограниченные контексты, если хотите), но вы часто выполняете агрегированную обработку больших объемов этих данных, тогда в монолите вы, скорее всего, откажетесь от объектной ориентации и вместо этого будете использовать стандарт своей базы данных. Функция JOIN для обработки данных в базе данных перед возвратом агрегированного представления обратно на уровень приложения.
Как вы оправдываете разделение таких данных на микросервисы, где, предположительно, от вас потребуется «присоединить» данные через API, а не в базе данных.
Я читал книгу Сэма Ньюмана о микросервисах, и в главе о разделении монолита он приводит пример «Нарушение отношений внешнего ключа», в котором он признает, что выполнение соединения через API будет медленнее, но он продолжает говорить, что ваше приложение в любом случае достаточно быстрое, имеет ли значение, что оно медленнее, чем раньше?
Это кажется немного бойким? Что переживают люди? Какие методы вы использовали для обеспечения приемлемой работы API-соединений?