Каким образом реализуются админки в микросервисной архитектуре?
Вот есть гипотетический проект реализованный в виде нескольких микросервисов. Пусть это будет магазин. Отдельный сервис для учетных записей пользователей, отдельный для заказов, отдельный для складского учета - у каждого отдельная база, все обмениваются событиями предметной области и поддерживают итоговую согласованность. Но, в то же время, есть менеджеры которым подавай агрегированную статистику с сортировкой и фильтрацией. Каким образом в этом случае реализуются админки в микросервисной архитектуре, ведь не бегать же по всем отдельным базам собирая необходимые данные?
1. Бегать по микросервисам и собирать из них данные через их API для вывода в админке.
+ строгая согласованность
- медленно
2. Завести отдельную базу (Базу), в корой в денормализованном виде хранить все нужные данные вместе. Обновлять данные в Базе при изменениях в микросервисах. Админку строить на основе этой Базы.
+ быстро
- итоговая согласованность (не факт что в момент запроса ситуация будет именно такой как она представлена в единой базе)
3. Смешать оба способа. Что-то получать из базы общей, за чем-то ходить напрямую к сервисам.