正确使用版本和relups来部署和更新erlang应用程序很困难,有时也不值得。
来自http://learnyousomeerlang.com/relups:
如果可以以不这样做的方式升级您的应用程序 需要重新安装,我建议这样做。据说分裂 爱立信使用relups花费尽可能多的时间来测试它们 自己测试他们的应用程序。它们是一种可以使用的工具 在使用绝对不会被关闭的产品时。
我想尝试另一种方式。我知道有些人开发复杂的应用程序而不使用版本。如果您是其中之一,请描述您的工作流程。
您是否只是在主机上克隆存储库并运行运行make
的{{1}},然后启动应用程序?或者你可能只复制光束文件?你如何重新加载更新的模块?你使用mochiweb的重载器吗?等
换句话说,如何在没有发布的情况下部署和更新erlang应用程序?这种方式的利弊是什么?
答案 0 :(得分:8)
Relups很复杂,但对于使用版本不是必需的。一个relup是一个升级版本。如果您可以承担一些停机时间,而不是使用relups,您可以简单地取消正在运行的erlang版本,升级它,然后再次启动它。 Relup允许您在不停止系统的情况下进行升级。正如您提到的报价一样,只有在任何停机时间不可接受时才需要这样做。
我个人从未在不使用发行版的情况下在生产环境中运行任何erlang代码。版本允许您将所有依赖项捆绑在一起。该版本是一个独立的应用程序。如果没有发布,我将迷失在自定义目录结构,构建进程,依赖关系管理和启动脚本的无尽迷宫中。
对于处理发布的难度有很多大惊小怪,但根据我的经验,事实并非如此。确实,让现有的工作项目适合发布可能会很棘手,但如果你使用正确的工具从头开始使用它们,那么它比滚动你自己的工具更简单。 Rebar使大多数繁琐的任务变得简单。
不使用版本的缺点是与其他erlang应用程序进行互操作。例如,CouchDB最初并未编写为符合OTP标准。因此,许多想要将其嵌入到erlang应用程序中的人如果不查看其他发行版就无法这样做。