What is the benefit of Umbrella Apps (In terms of microservices, deployment etc.)

I might be missing something here so feel free to fill me in if I am. Basically I am confused to the actual benefit of umbrella apps. I spent the last week converting Blex to an umbrella app with the following structure:

BlexWeb <- Blex(Holds posts, comments etc.) <- Auth & Cache & Utils & Processor(MD converter)

So in the above (poorly constructed diagram), Blexweb has a dependency of blex which has a dependency of Auth, Cache, Utils and Processor.

What I don’t really get is what is the benefit of having something like this structure as opposed to having it all under one app, namespaced in the lib directory:

e.g. Blex.Auth.Authenticator -> lib/blex/auth/authenticator.ex

From my understanding, when you make a change in an umbrella app (say the Auth app from above), I still reregenerate an entire release containing all the apps and deploy that, instead of the typical microservice approach and just release that app. So in this regard I don’t see the benefit either?

Anyone able to explain this one a bit better to me because I think I am missing something here!

1 Like

I recommend to watch https://www.youtube.com/watch?v=6NTmUQClHrU where you can find nice introduction to umbrella app