Project is developed using,
The project has a total 10 different services and each service is a big project.
All services have their own reports.
We planning to use Jasper as a reporting tool.
Question is, should we create a separate service for Jasper reporting that will interact with all services via API.
The user has asked for report 1(R1) from service 3(S3), and jasper is a separate service JR.
Now flow I think of is:
API will ask the report to JR. JR will decide what data is required from S3, so it will call S3 and get the required data for R1 by API and prepare a report and send it in the response of API.
Herewith this solution, the benefit is, in future if I want to replace Jasper with another reporting tool, I need to modify only one service and all other services work without any change because of all reporting data requested by JR and report prepared within JR service.
The problem with this solution is, Data loading gets slower because of multiple feign clients and API calls.
The second approach is to create a library.
Add dependency of that library in all 10 services.
The problem with the library is, if I need to replace the reporting tool or want to modify something within it, I have to consider the impact in all 10 modules.
I need a healthy discussion on this approach, how should I integrate reporting in such a large project based on spring boot-microservices.