3

正确使用 release 和 relups 来部署和更新 erlang 应用程序很困难,有时甚至不值得。

来自http://learnyousomeerlang.com/relups

如果可以以不需要 relups 的方式升级您的应用程序,我建议您这样做。据说爱立信使用 relups 的部门测试它们的时间与他们自己测试应用程序的时间一样多。它们是在处理绝对不能关闭的产品时使用的工具。

我想尝试另一种方式。我知道有些人开发复杂的应用程序并且不使用版本。如果您是其中之一,请描述您的工作流程。

您是否只是在主机上克隆存储库并运行make哪个运行rebar get-deps compile然后启动应用程序?或者也许你只复制梁文件?你如何重新加载更新的模块?你使用 mochiweb 的重新加载器吗?等等。

换句话说,你如何在没有发布的情况下部署和更新 erlang 应用程序?这种方式有什么好处和坏处?

4

1 回答 1

9

Relups 很复杂,但对于使用发布来说不是必需的。一个 relup 是一个版本的升级。如果您可以承受一些停机时间,而不是使用 relups,您可以简单地删除正在运行的 erlang 版本,升级它,然后重新启动它。relup 允许您在不停止系统的情况下进行升级。正如您提供的报价所述,只有在任何停机时间都不可接受时才需要这样做。

如果不使用发布,我个人永远不会在生产环境中运行任何 erlang 代码。发布允许您将所有依赖项捆绑在一起。该版本是一个独立的应用程序。如果没有发布,我将迷失在自定义目录结构、构建过程、依赖管理和启动脚本的无尽迷宫中。

关于处理发布的困难有很多普遍的大惊小怪,但根据我的经验,情况并非如此。确实,让现有的工作项目适合发布可能很棘手,但如果您使用正确的工具从头开始使用它们,这比滚动您自己的更简单。Rebar 使所涉及的大部分繁琐任务变得简单。

不使用发布的一个缺点是与其他 erlang 应用程序的互操作性。例如,CouchDB 最初并不是为了兼容 OTP 而编写的。结果,许多想要将其嵌入到他们的 erlang 应用程序中的人如果不考虑替代发行版就无法做到这一点。

于 2013-08-14T21:57:16.817 回答