I'm working on an Erlang project which has a number of different Erlang applications bundled into a single release. Each application has a pretty simple structure - a top level app file, then a single supervisor managing a single gen_server. It uses rebar/reltool to build the release; as a release noob I'm pretty horrified by the amount of strange configuration options that have to go in rebar.config and reltool.config to make the whole thing work.
Then I discover erlang.mk and relx, which seems a much saner/simpler way of building a release. It does however seem that erlang.mk only works with a single top- level application (that is, one application with the same name as the underlying project). Which got me wondering, is my original structure really optimal, given the simplicity of each application ? Might it not make more sense to have a single application with a single top- level supervisor, then a second layer of supervisors underneath this, each managing one of my gen_servers ? Then I can use erlang.mk and hopefully remove a whole load of rebar- related complexity into the bargain.
So: any advice on the pros/cons of using multiple applications on the one hand, versus using a single application with an extra layer of intermediate supervisors on the other ?