I have a basic java Dropwizard service within cluster of microservices. It manages user resources with restful api styles. Let's call it user-app Then there is a new operation / api endpoint that takes long time. I decided to have a background jobs (with Quartz) to remove the long running operation from user-app and instead only let the user-app to trigger new quartz job for users/long-operation. This Quartz jobs is called user-scheduler service, a separate service in the cluster. Both user-scheduler and the main user-app service is using user-db database. The original thought of creating user-scheduler is to separate concern when scaling jobs, i.e. we can add/remove user-app without changing user-scheduler.
Now I have concern that these two services are integrating via database, which is a violation of https://microservices.io/patterns/data/database-per-service.html . But is it really though? those two are still part of user-xxx service, and thus they are allowed to talk with database.
So my question is, Do you create separate service for background job? If not, how do you handle scaling for the job?