One build multiple services
A
Alexey Panteleev
We're considering migrating from Heroku where our Java and Scala apps are essentially monorepos for API+workers. Heroku runs a build once and then can deploy the API and all the workers quickly, they even have incremental builds which are very valuable for Scala projects.
Render builds from scratch for each service (for each line in your Procfile), no incremental builds are available either. So instead of one build and multiple quick deploys, we are looking at 4,5 builds/deploys. Scala apps take a long time to be built so we're looking at hours in deployment times. :(
Right now we're looking into building elsewhere and then deploying the final Docker images, but it would be great if build-once-deploy-multiple-services was supported by Render natively.
We also use Coolify for some self-hosted apps and they support the "build-server" concept. Maybe something to borrow from them: https://coolify.io/docs/knowledge-base/server/build-server
Here is another idea from Coolify, push Docker image to a registry after building/deploying so that other services could deploy from the image (see attached image) without building again: https://coolify.io/docs/knowledge-base/docker/registry
Thank you
Photo Viewer
View photos in a modal
Log In
m
mikey
+1
We have a monolithic docker container which can either run our backend or our workers. This isn’t as crazy as it sounds as our worker code is implemented in the same language, framework (Django), etc as the web app - it just needs to run outside a http request.
Deploying as a separate service on render means we lose the consistency and atomicity of the same artifact running for both tasks.
Heroku natively supports multi-process jobs. Fly now has a similar concept.