<div dir="auto">Further, a "module" is a code organisational thing, "applications" and similar OTP entities, like "supervisor", "gen_server "or "gen_statem", are runtime things.<div dir="auto"><br></div><div dir="auto">Thus, an "application" is made up of a bunch of "modules" that implement either libraries of functions and/or processes that that do stateful work (usually implemented using "gen_..." frameworks).</div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, 29 Aug 2018 21:50 Robert Raschke, <<a href="mailto:rtrlists@googlemail.com">rtrlists@googlemail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div>The main equivalent of a microservice is what Erlang calls an "application". This is an entity that you are supposed to be able to start, stop and up/downgrade as a thing in its own right. And it may depend on other "applications", in turn it may be depended upon, or it can be independent or even just a stateless library. </div><div dir="auto"><br></div><div dir="auto">Multiple "applications" make up your system, called a "release" in Erlang. Whether your "applications" are distributed across multiple nodes or not is up to you. <br><br><div class="gmail_quote" dir="auto"><div dir="ltr">On Wed, 29 Aug 2018 19:50 Code Wiget, <<a href="mailto:codewiget95@gmail.com" target="_blank" rel="noreferrer">codewiget95@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>
<div name="messageBodySection" style="font-size:14px;font-family:-apple-system,BlinkMacSystemFont,sans-serif">Hi everyone,
<div><br></div>
<div>With many programming languages, it is easy to think of ways to separate projects into distinct micro services. With Erlang, I'm having trouble deciding on how to spread out functionality. Because the Erlang VM can run multiple different fully independent applications, it seems tedious to spin up 5 different Erlang VM’s to do different things when it could all be accomplished on one.</div>
<div><br></div>
<div>At the same time, as you scale, you probably want to separate functionality…</div>
<div><br></div>
<div>So, do you have a rule of thumb or rules by which you decide on how to separate functionalities into modules vs applications vs entire releases?</div>
<div><br></div>
<div>Thanks!</div>
</div>
</div>

_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" rel="noreferrer noreferrer" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer noreferrer noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div></div></div>
</blockquote></div>