0

nodejs アプリを Heroku から AWS CodeDeploy に移行しようとしています。

Heroku のデプロイでは、nodejs-compass-grunt ビルドパックを使用して依存関係をインストールし、compass を実行しています。CodeDeploy で使用する AWS に類似したものはありますか? それとも、すべてがインストールされた AMI を用意するだけでよいでしょうか?

4

1 に答える 1

1

Heroku とは異なり、CodeDeploy はPaaSではありません。クラウドインフラに展開されたソフトウェアの管理を支援するサービスです。CodeDeploy は、デプロイするソフトウェアの種類とその依存関係に依存しません。これにより非常に柔軟になりますが、CodeDeploy にソフトウェアのデプロイ方法を指示するために、より多くの作業を行う必要があることも意味します。

フレームワークをホストにデプロイしてから、そのフレームワークに依存するソフトウェアをデプロイする場合は、次の 2 つのオプションがあります。

  1. 依存関係が既にインストールされている AMI を焼き付けてから、サービスのみをデプロイします。
  2. CodeDeploy デプロイの一部としてすべての依存関係をインストールします。

オプション 1 では、依存関係のいずれかを新しいバージョンに移行する場合、新しい OS に切り替える場合と同じ作業を行う必要があります。基本的に、Blue-Green デプロイメントが必要になります。

  1. 新しい AMI を焼きます。
  2. 新しいインフラストラクチャをプロビジョニングします。
  3. サービスを新しいインフラストラクチャにデプロイします。
  4. 既存のインフラストラクチャを新しいインフラストラクチャに置き換えます。
  5. 古いインフラストラクチャを解放します。

CodeDeploy を使用してインプレース デプロイを実行しようとしている場合、これは確実に速度を低下させる可能性があります。とにかくブルーグリーン展開を行いたい場合、失うのは、提供された AMI を使用せず、独自の AMI を管理する必要があることだけです。

オプション 2 では、展開アーカイブの一部としてすべての依存関係をバンドルする必要があります。それらをインストール/再インストールするためのスクリプトも作成する必要があります。その後、BeforeInstall ライフサイクル ステップでこれらのスクリプトを呼び出すことができます。依存関係を更新またはロールバックする場合は、通常のコード変更と同じことを行う必要があります。

  1. 新しい展開バンドルを作成します。(これは理想的には、CodeDeploy を使用する場合のビルド プロセスの最終結果である必要があります)
  2. CodeDeploy を使用して新しいバンドルをデプロイします。

ここでの欠点は、すべてのデプロイに依存関係を再インストールするか、コードを追加して既存のバージョンを確認する必要があり、同じバンドルを再デプロイするだけでは修正されない依存関係が破損するリスクがあることです。

于 2015-09-02T17:09:00.860 に答える