Can apps be deployed to nodes selectively?

Say I have a hypothetical umbrella application with two apps: a batch processor and a web server. The batch processor does some expensive computing and I don’t want it to slow down the web server. If I’m deploying this umbrella application to 10 nodes, can I deploy the web server to two of them and the batch processor to the remaining eight?

If not possible with an umbrella application, is this possible at all in Elixir?

It is perfectly possible - the easiest way probably with releases. You can include in a release any combination of applications - splitting in two different sets, sharing common libraries is a common choice.

It’s a bit of a hassle to set up with exrm (you need one “master” application for each bundle you want to create), but distillery was created with that use case in mind. You can find more in the project’s documentation starting here https://hexdocs.pm/distillery/umbrella-projects.html#content

3 Likes