One build for multiple services and cron jobs?

We currently have three services: web, worker and scheduler. They are all on the same repository and really should all be running the same code. If we deploy to the latest version, they ALL need to be on the latest version. If we revert, they ALL should be reverted to that other version.

How are other’s handling this situation? Do they have 3 services? Or are you combining them into a single service and running multiple processes on that service?

This also relates to the cron job too. Our scheduler is firing off 20 different scheduled jobs. Having a built-in scheduler seemed like a nice way to go but it does seem to compound this same issue 20 fold. Now instead of 3 we’d have 22 services running that require a build each time and we have to coordinate what version it’s running on.

Certainly from an architectural point of view by deploying them as separate services they can all be scaled independently both vertically and horizontally. As well as running in isolation from each other.

If all the services are deploying from the same repo then any updates, assuming you have auto deploys enabled, would be deployed to all of the services and whilst I do agree that having 22 services having to build isn’t great efficiency - they’ll all get the same version, albeit not particularly efficiently. But certainly, if you’re managing this all through a blueprint then it becomes easier to manage.

Regards,

John B