3

release と relups を適切に使用して erlang アプリをデプロイおよび更新することは困難であり、価値がない場合もあります。

http://learnyousomeerlang.com/relupsから:

再アップを必要としない方法でアプリケーションをアップグレードできる場合は、そうすることをお勧めします。relup を使用するエリクソンの部門は、アプリケーション自体のテストと同じくらい多くの時間をテストに費やしていると言われています。これらは、強制的にシャットダウンできない製品を操作するときに使用するツールです。

別の方法を試してみたいと思います。複雑なアプリケーションを開発し、リリースを使用しない人がいることは知っています。あなたがその 1 人である場合は、ワークフローについて説明してください。

ホスト上のリポジトリをクローンして実行makerebar get-deps compile、アプリを起動しますか? それとも、beam ファイルのみをコピーしますか? 更新されたモジュールをどのようにリロードしますか? mochiweb のリローダーを使用していますか? 等。

つまり、リリースせずに erlang アプリをどのようにデプロイして更新するのでしょうか? この方法の長所と短所は何ですか?

4

1 に答える 1

9

Relups は複雑ですが、リリースを使用するために必要なものではありません。リラップは、リリースのアップグレードです。relups を使用する代わりに、ダウンタイムを許容できる場合は、実行中の erlang リリースを停止し、アップグレードしてから再起動するだけです。再アップにより、システムを停止せずにアップグレードを実行できます。あなたが提供する見積もりが言及しているように、これはダウンタイムが許容できない場合にのみ必要です.

個人的には、リリースを使用せずに実稼働環境で erlang コードを実行することはありません。リリースを使用すると、すべての依存関係をまとめてバンドルできます。このリリースは自己完結型のアプリケーションです。リリースがなければ、カスタム ディレクトリ構造、ビルド プロセス、依存関係管理、起動スクリプトの果てしない迷路に迷い込んでしまうでしょう。

リリースを扱うことの難しさについては、多くの一般的な騒ぎがありますが、私の経験ではそうではありません。確かに、既存の作業中のプロジェクトをリリースに適合させるのは難しい場合がありますが、適切なツールを使用してゼロからそれらを使用すれば、独自のプロジェクトを作成するよりも簡単です。Rebar を使用すると、関連する面倒な作業のほとんどが簡単になります。

リリースを使用しないことの欠点は、他の erlang アプリケーションとの相互運用に伴います。たとえば、CouchDB は当初、OTP に準拠するように作成されていませんでした。その結果、erlang アプリケーションに組み込みたいと考えている多くの人は、代替のディストリビューションを検討しないと実行できません。

于 2013-08-14T21:57:16.817 に答える