nodejs アプリを Heroku から AWS CodeDeploy に移行しようとしています。
Heroku のデプロイでは、nodejs-compass-grunt ビルドパックを使用して依存関係をインストールし、compass を実行しています。CodeDeploy で使用する AWS に類似したものはありますか? それとも、すべてがインストールされた AMI を用意するだけでよいでしょうか?
nodejs アプリを Heroku から AWS CodeDeploy に移行しようとしています。
Heroku のデプロイでは、nodejs-compass-grunt ビルドパックを使用して依存関係をインストールし、compass を実行しています。CodeDeploy で使用する AWS に類似したものはありますか? それとも、すべてがインストールされた AMI を用意するだけでよいでしょうか?
Heroku とは異なり、CodeDeploy はPaaSではありません。クラウドインフラに展開されたソフトウェアの管理を支援するサービスです。CodeDeploy は、デプロイするソフトウェアの種類とその依存関係に依存しません。これにより非常に柔軟になりますが、CodeDeploy にソフトウェアのデプロイ方法を指示するために、より多くの作業を行う必要があることも意味します。
フレームワークをホストにデプロイしてから、そのフレームワークに依存するソフトウェアをデプロイする場合は、次の 2 つのオプションがあります。
オプション 1 では、依存関係のいずれかを新しいバージョンに移行する場合、新しい OS に切り替える場合と同じ作業を行う必要があります。基本的に、Blue-Green デプロイメントが必要になります。
CodeDeploy を使用してインプレース デプロイを実行しようとしている場合、これは確実に速度を低下させる可能性があります。とにかくブルーグリーン展開を行いたい場合、失うのは、提供された AMI を使用せず、独自の AMI を管理する必要があることだけです。
オプション 2 では、展開アーカイブの一部としてすべての依存関係をバンドルする必要があります。それらをインストール/再インストールするためのスクリプトも作成する必要があります。その後、BeforeInstall ライフサイクル ステップでこれらのスクリプトを呼び出すことができます。依存関係を更新またはロールバックする場合は、通常のコード変更と同じことを行う必要があります。
ここでの欠点は、すべてのデプロイに依存関係を再インストールするか、コードを追加して既存のバージョンを確認する必要があり、同じバンドルを再デプロイするだけでは修正されない依存関係が破損するリスクがあることです。