Best practice for large number of long running tasks

I’m facing a use case where I need a nightly workflow to run a task for all of our users. Each task can take a few minutes to run, we have a large number of users. What’s the best practice to organize and parallelize in this workflow?

I would recommend a schedule per user.

Another option is to have a single workflow that executes these activities as a batch. See the Java batch samples for inspiration.