Umbrella project should support distributed applications

203 views
Skip to first unread message

Hubert Łępicki

unread,
Oct 18, 2017, 11:31:15 AM10/18/17
to elixir-lang-core
So a little background here. I have a client, who has a really large Elixir umbrella project. It currently consists of over a dozen of OTP apps in apps/ folder and growing. At the very moment, everything is deployed to a single server. The client is tech savvy and with previous Erlang background, so they want to scale by utilizing Erlang's distributed applications architecture (http://erlang.org/doc/design_principles/distributed_applications.html). The interesting bits here are that we will be able to do it with distillery already, since each app can be released separately. The problem is with development environment.

In order to guarantee the proper level of isolation between the apps, we would love to run different apps on different Erlang nodes, even locally. Ideally, that would mirror the production deployment configuration as close as possible, but we might live without stuff like failover here.

It's just an idea I had, but it would be pretty awesome if you could configure the umbrella project in a way that it would bring up the project into not one, but several local BEAM instances, connect them and allow replicating production system locally this way.

I originally posted the question here, which outlines our current thinking on how we can work this around: https://elixirforum.com/t/starting-up-local-cluster-of-nodes-for-local-development/9297
but I figured I'd post here too since it might be a feature that could eventually end up being part of Elixir / umbrella projects.

What do you think?

José Valim

unread,
Oct 18, 2017, 12:14:56 PM10/18/17
to elixir-l...@googlegroups.com
Umbrella projects are three things in one:

1. The mono-repo pattern
2. Sharing of dependencies across projects (to avoid multiple fetching)
3. Loading all code in the same VM (to avoid multiple compilations and multiple runtimes)

In other words, the purpose of umbrellas is to run multiple applications in the same instance. When we see umbrellas misused is exactly because they want to run isolated applications or separated configurations in the same umbrella and that goes against the purpose of umbrellas.  If you want isolation then you should scale back to the mono-repo pattern and use shell scripts, path dependencies or whatever else to manage that.




José Valim
Founder and 
Director of R&D

--
You received this message because you are subscribed to the Google Groups "elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/72133894-e0b5-44e1-aa05-172a6359e885%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Hubert Łępicki

unread,
Oct 18, 2017, 12:19:59 PM10/18/17
to elixir-l...@googlegroups.com
Alrighty, thanks for clearing this up.
>> email to elixir-lang-co...@googlegroups.com.
> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to elixir-lang-co...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4Lq2ZHPDi8h1T85FN9GLdJo0%2BLnyCO%3Dk-DrbC9QNg6%2BMA%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.



--
Pozdrawiam,
Hubert Łępicki
-----------------------------------------------
[ http://hubertlepicki.com ]
Reply all
Reply to author
Forward
0 new messages