6

私はここで見つけることができるTwelve-Factorアプリ「マニフェスト」に言及しています: http://12factor.net

8番目の要因で、著者は次のように書いています。

12 要素アプリ プロセスは、PID ファイルをデーモン化または書き込みしないでください。代わりに、オペレーティング システムのプロセス マネージャー (Upstart、クラウド プラットフォーム上の分散プロセス マネージャー、開発中の Foreman のようなツールなど) に依存して、出力ストリームを管理し、クラッシュしたプロセスに対応し、ユーザーが開始した再起動とシャットダウンを処理します。

ここで「プロセスは決してデーモン化しないでください」が何を意味するのかわかりません。

特にJavaプロセスのコンテキストで、プロセスをデーモン化することの長所と短所を誰かが説明してもらえますか? また、デーモン化されたプロセスをプロセス マネージャーで管理することはできませんか?

4

1 に答える 1

7

プロセスがデーモン化された場合、それはそのライフサイクルを効果的に単独で管理しようとしていることを意味します。これは、特定の種類のアプリケーションには適していますが、12 要素マニフェストが関係する種類のアプリケーションである分散 Web アプリケーションの場合、通常は問題を意味します。アプリがそれ自体を管理しようとすると、おそらく外部のプロセス マネージャーによって簡単に管理されないか、または最良の場合、これらのマネージャーのカスタム プラグインまたは拡張機能が必要になり、展開が複雑になる可能性があります。

アプリに対して実行したいことと、デーモン化によって妨げられる可能性があることの例は、自動スケーリングです。Mesosなどのツールを使用すると、基本的にシステムに「ここに 50 台のマシンがあり、これらのマシンにアプリを配置します」と伝えたいと考えます。何をどこに置くかを手動で管理するのではなく、クラスター マネージャーに自動的に処理させます。システムが受信するトラフィックの量などの条件に応じて、より多くのまたはより少ないインスタンスを自動的にセットアップする可能性があり、単一のマシンに複数のインスタンスを配置する可能性があります。アプリが自分自身を管理しようとすると、アプリが干渉し、そのような外部管理が不可能になったり、非常に複雑になったりします。

于 2015-02-10T18:50:01.107 に答える