Industry standard for running daemonized Erlang/OTP applications?

120 views Asked by At

Some of modern infrastructure components such as Yaws and CouchDB can be installed on Ubuntu with

sudo apt-get install

and then they can be started with

{service_name} start or simply {service_name}

I wonder if there are any differences between this approach and the Erlang/OTP way, that is uploading an OTP release to the production server and then starting it with a rebar-generated script.

What is the industry standard? Install/start a repository-based binary or upload/start a rebar-generated release?

Also, do the repository-based binaries have all the OTP functionality in place, like OTP applications structure, supervision and the option to attach to the live application via console?

1

There are 1 answers

0
tkowal On BEST ANSWER

Every time, you are starting erlang, you are starting a release. Even, if you only type erl in terminal, it runs a release (you can find the .boot, .rel and .script files in erlang_rootdir/releases/name_of_release.

I think this answers your last question: packages installed from repository still have the OTP structure, supervision and all the goodies. There are just couple of bash scripts, that make starting and stopping them more friendly to someone used to service_name start. You should also be able to find a script similar to the one generated by rebar.

Check, where are those files and simply cat them. You should see, they simply start Erlang release.

The only thing, that you can't do with package managers, is hot code upgrade. Most package managers simply stop the running application, install new version and start it back. In Erlang, you can upgrade running release, but this is quite advanced stuff. Besides that - there are no disadvantages of using OS packages.