在Erlang(和Riak)中开发应用程序时的良好实践?

mat*_*hat 19 erlang erlang-otp riak

鉴于依次开发开源分布式应用程序,我们正在熟悉Erlang/OTP和Riak(Core,KV,Pipe等).我们的项目将有许多依赖项:像erlang_js,protobuffs等工具,还有我们需要运行的服务,例如Riak KV.

在Python/Ruby/Node.js中,如果模块放在相对于项目的标准子目录中,您可以引用它们,然后将它们打包在发行版中.您可以在项目目录中启动一个shell,使用您的模块,进行测试等等,如果遵循良好实践,这一切都很容易.

在Erlang/OTP中组织开发环境的最佳实践是什么,所有依赖关系都可以访问(并且可以轻松更新到最新版本),对运行节点的shell访问,测试,发布等等?

Muz*_*hua 27

检查钢筋: https://github.com/basho/rebar用于打包,模板化和管理Erlang/OTP应用程序的版本.您将找到有关如何使用它的完整教程.首先在OTP上

查看本教程,然后再切换到这个教程,它将向您展示发布以及如何在Erlang中处理它们.在开发项目时使用整本书作为参考,因为作者仍​​在逐步添加您可能需要的更多高级内容.

您可能还想继续阅读有关 Erlang应用程序的信息,然后查看下面的这些快速链接:

Erlang Packaging,Process One
OTP Packaging Video by Chicago Boss Guys
Erlang Dependency Management
Richard Jones有关使用依赖项包装Erlang项目的建议和示例
Maven Tool以及如何它用于包装Erlang项目

最重要的是,rebar非常重视!这对于管理具有依赖性的Erlang应用程序非常重要.您可以继续在stackoverflow上发布您的问题以获得任何帮助.

在我忘记之前,请查看Riak社区的大量内容

编辑

此外,检查有关创建目标系统的系统文档以及如何使用Reltool处理版本非常重要.erlang的好处在于它有多种选项可以做什么,只要它易于以这种方式维护你的应用程序.有了目标系统,您将学习如何嵌入Erlang的虚拟机,如何上运行的应用程序二郎Solaris,VxWorks并使用在Windows NT上创建二郎应用程序作为服务erlsrv.

通常,我们确保在作为操作系统启动服务器时,我们的应用程序从它开始.到目前为止,Solaris在嵌入Erlang/OTP VM方面比其他任何操作系统都有更多的自定义.您始终可以使用Escript与(a)嵌入式Erlang VM进行通信,其中escript创建一个允许连接到嵌入式VM的erlang节点(因此它们必须共享相同的cookie)并且嵌入式VM必须允许暂时创建的节点通过执行连接

net_kernel:allow(List_of_nodes)
,确保调用此方法以使嵌入式VM仅允许来自已知严格指定数量的节点的连接.