Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Should separate Erlang applications share the same VM on the same machine?

Tags:

erlang

couchdb

I have a CouchDB instance running on one machine, and thus with its own Erlang VM process. If I have another separate Erlang application running on that machine too, is it be better to share the same VM between CouchDB and my application, or is it recommended to start a new Erlang node?

like image 529
Gabriel Cuvillier Avatar asked Aug 27 '10 10:08

Gabriel Cuvillier


2 Answers

While many would recommend decoupling these subsystems I would take the opposite approach. Erlang has a built in strategy to run many applications on the same release. If your applications talk to each other directly it might make sense for you to bundle them together into a release. This will make calls between the applications faster. Some will argue that all you applications now share the same fate should you need to take the system down for an upgrade that only one of the applications needs. This is a moot point with Erlang where you are distributing your applications across many nodes. Also most upgrades can be done with hot code loading.

like image 118
Vanson Samuel Avatar answered Nov 08 '22 16:11

Vanson Samuel


There is no problem with running several VMs on the same machnie (at least recent OTP releases), however it is quite handy if you have all your applications on one Erlang node. Easier communication, dependency management, supervision, fault-tolerance - you get it for free in this case, not mentioning maintaining only one 'node' in source control system.

The problem starts with CouchDB. It does not have decent build system which let you use it as one of independent Erlang node applications. So in this case you need to have at least 2 VMs (one acts as Couch daemon, the other one hosts your application)

like image 4
user425720 Avatar answered Nov 08 '22 15:11

user425720