6

WAR アーカイブとしてパッケージ化され、Jetty にデプロイする必要がある Lift アプリケーションがあります。ただし、いくつかのタスクを自動的に実行できるようにしたいと考えています。

  • ターゲット サーバー (またはサーバーのコレクション) を指定します。開発サーバーからテスト サーバー、運用サーバーまで複数のサーバーがあり、展開先を非常に簡単に制御できるようにしたいと考えています。
  • 宛先 (たとえば、DEVELOPMENT) は、負荷分散の目的で、サーバーのコレクションを意味する場合があります。
  • テスト段階。基本的に、すべての展開でテストのセット全体を実行し、アプリケーションがコンパイルされない場合、または 1 つ以上のテストが失敗した場合は展開を防止したいと考えています。
  • WAR アーカイブは、Linux を実行している 1 つ以上の Amazon EC2 マシンの Jetty の下にデプロイする必要があります (Ubuntu 12.10)。

私は SBT を使用していますが、これが Puppet などとどの程度うまく機能するかわかりません。これについてどう思いますか?

4

4 に答える 4

5

誰かが賢い答えを出してくれることを期待して、この質問を見てきました。彼らはそうしていないので、私は自分の気持ちでこの問題について話し合うと思います.

私の知る限り、これらのタイプの展開を自動化する既存のツールはありません。これは、対処すべきさまざまなシナリオが非常に多いためだと思います。少なくとも、次のものがあります。

  1. 単一の開発サーバー。WAR をコピーしてアプリ サーバーを再起動するだけです。
  2. プロセスは似ていますが、プロセスがユーザーを混乱させたくない単一の運用サーバー。ここでの考慮事項には、再起動後もセッション データを保持することや、使用率の低い時間に再起動を計画することが含まれます。
  3. 多くのノードにロード バランサーがある小さなクラスター。今、物事は本当に複雑になっています。さまざまな LB ツール (HA Proxy、NGINX、Amazon の Elastic LB) を使用している可能性があり、ユーザー エクスペリエンスを気にする場合は、アプリ サーバーのローリング再起動を調整する必要があります。ノード間のセッション データの移行も懸念事項です。
  4. 異なる地理的地域にある小さなクラスターで構成される大きなクラスターがあります。ここでは、#3 + 領域間で調整するために必要な構成を扱っています。

1 と 2 が汎用ツールを見つけるのが最も簡単だと思います。対処する必要があるのがこれらの状況だけである場合は、アプリと共に Jenkins をデプロイするだけです。変更が発生したときに git ブランチからプルし、コードをビルドして Jetty を再起動するように構成するのは非常に簡単です。ただし、3 と 4 に到達するまでには、関連するさまざまなツールの数とそれらを調整する必要があるため、あらゆるタイプの標準的なソリューションが排除されていると思います。これは Java/Scala の世界だけの問題ではないと思います。なぜなら、Rails アプリのデプロイを管理するために作成したカスタム ツールに関する Github 関係者からの書き込みを見たからです。

Puppet に関しては、私は一度も使用したことがありませんが、この種のプロセスには便利なツールになりそうです。クラスターを処理するには、ある種の中央コーディネーターが必要になりますが、Puppet がそれを支援できると信じています。

于 2013-03-19T14:43:13.507 に答える
1

当社の製品BuildMasterを使用して、これらすべてを行うことができます。あなたが Puppet に言及していることに気付きましたが、このツールはソフトウェアの展開と配信ではなく、インフラストラクチャの自動化のために設計されていることに注意することが重要です。

DevOps 分野での作業において、チームのコラボレーションを通じて、ソフトウェアとインフラストラクチャの展開を直交させ、同期させることが重要であることを発見しました (開発者は運用担当者ではなく、その逆も同様です)。

箇条書きに対処するには:

複数のサーバーへのデプロイ

自動展開計画を作成する場合、サーバー グループを指定し、必要に応じてグループからサーバーを追加/削除できます。

テスト段階

本番前に任意の数のテスト環境でワークフローをセットアップできます。これらのワークフローには、ビルドを次の環境に昇格させる前に、テストに合格するための自動チェック (昇格要件) を含めることができます。組み込みのものは単体テストに合格することを保証するためのものですが、コマンド ライン ツールの出力に対してそれらを指定したり、カスタム拡張機能を記述したりすることもできます。

桟橋の展開

WAR ファイルのコピーは、SSH エージェントを使用してアーティファクトをサーバーにデプロイするのと同じくらい簡単です。

于 2013-04-29T16:27:07.433 に答える
0

この質問も見ました。

そして実際には同じ感覚で:考えられるすべての環境を考慮することはできず、フレームワークでは希望するものを選択することができます。したがって、快適な展開ツールを使用してください。

(そしてもちろん、SBTを使用すると、パッケージ化をテストおよび防止できます。また、WARおよびJettyiesの知識を持つ展開ツールが多数あります。)

于 2013-03-20T22:16:05.720 に答える