Проект разработан с использованием Spring Boot-MicroServices Redis Eureka Feign клиент
Проект имеет в общей сложности 10 различных сервисов, и каждый сервис большой проект. Все сервисы имеют свои отчеты. Мы планируем использовать Jasper в качестве инструмента отчетности. Вопрос в том, стоит ли нам создавать отдельный сервис для отчетов Jasper, который будет взаимодействовать со всеми сервисами через API. Пример: пользователь запросил отчет 1 (R1) из сервиса 3 (S3), а jasper - это отдельный сервис JR. Теперь я думаю о том, что API будет запрашивать отчет у JR. JR решит, какие данные требуются от S3, поэтому она вызовет S3 и получит необходимые данные для R1 через API, подготовит отчет и отправит его в ответ API.
При этом решении преимущество заключается в том, что в будущем, если я захочу заменить Jasper другим инструментом отчетности, мне нужно изменить только одну службу, и все остальные службы будут работать без каких-либо изменений из-за всех данных отчетов, запрошенных JR, и отчетов, подготовленных в службе JR. Проблема этого решения заключается в том, что загрузка данных замедляется из-за множества симулированных клиентов и вызовов API.
Второй подход заключается в создании библиотеки. Добавьте зависимость этой библиотеки во все 10 сервисов. Проблема с библиотекой заключается в том, что если мне нужно заменить инструмент отчетности или что-то изменить в нем, я должен учесть влияние во всех 10 модулях.
Мне нужно здоровое обсуждение этого подхода, как Должен ли я интегрировать отчетность в такой большой проект, основанный на весенних загрузочных микросервисах.