This was interesting simply for the explanation of Erlang systems, but as for the project itself I currently use Supervisor (http://supervisord.org) for this purpose, and I've been pretty happy with it.
Exactly. One of the big ideas of Erlang is to have many lightweight processes (processes in the VM, not OS).
As an example say you have a chat system, you will have a process for each user [0]. If you have a million users, you will end up with a million processes. The supervisor tree watches these processes, so if one crashes a single user may get logged out but everybody else will be unaffected.
[0] In reality you'll probably have it even more fine grained than that, so users will end up with multiple processes.
Comments
This was interesting simply for the explanation of Erlang systems, but as for the project itself I currently use Supervisor (http://supervisord.org) for this purpose, and I've been pretty happy with it.
Any reasons to make the switch?
For when you want to supervise goroutines instead of processes (Presumably because processes are consuming too many resources).
Exactly. One of the big ideas of Erlang is to have many lightweight processes (processes in the VM, not OS).
As an example say you have a chat system, you will have a process for each user [0]. If you have a million users, you will end up with a million processes. The supervisor tree watches these processes, so if one crashes a single user may get logged out but everybody else will be unaffected.
[0] In reality you'll probably have it even more fine grained than that, so users will end up with multiple processes.