web-dev-qa-db-ja.com

AWS CodeDeployを高速化する方法はありますか

AWS CodeDeployを使用してサイトをデプロイしていますが、速度があまり安定していないことに気付きました。かなり高速な場合もあれば、展開の各ステップに数分かかる場合もあります。バグや機能停止の場合に、デプロイメントを高速に実行する必要がある場合、これはかなり面倒です。

ただし、CodeDeployの速度に関するドキュメントは見つかりません。また、遅い場合や速い場合のロジックも見つかりません。それをスピードアップする方法はありますか、何がそんなに時間がかかっているのかを知る方法はありますか?

16
Jasper Kennis

CodeDeployはデフォルトではほとんど機能しません。S3またはGithubからコードを取得し、appspec.ymlファイルの指示に従ってyourスクリプトを実行します。

デプロイメントがS3からギガバイトのデータを取得している場合、データ転送に時間がかかることがわかります(特に、帯域幅が制限された小さなEC2インスタンスでは)。配置スクリプトで実行しています。

CodeDeployデプロイメントの手順は次のとおりです。

  • ApplicationStop-このフックを制御します
  • DownloadBundle-CodeDeployはS3/Githubからコードを取得します
  • BeforeInstall-このフックを制御します
  • インストール-CodeDeployは一時的な場所から最終的な宛先にコードをコピーします
  • AfterInstall-このフックを制御します
  • ApplicationStart-このフックを制御します
  • ValidateService-このフックを制御します

太字のものはCodeDeploy次第で、その他はあなた次第です。太字の遅延が異なる場合は、AWSサポートにお問い合わせください。それ以外の場合は、フックを調査する必要があります。

10
ceejayoz

BlockTrafficおよびAllowTraffic

ターゲットグループのヘルスチェック設定を調整するだけで、数分を節約できます。

enter image description hereenter image description here

enter image description hereenter image description here

説明

これが機能するのは、BlockTrafficAllowTrafficの両方が正常なヘルスチェックを待機するためです。デフォルトのヘルスチェック間隔は30秒ごとに1回のチェックであり、正常なヘルスチェックには5つの連続する200応答が必要です。したがって、デフォルトでは2分30秒以上かかります。そして、それはすべてのEC2インスタンスに当てはまります。ヘルスチェックの間隔を減らし、必要なチェックの成功数を制限すると、展開時間が改善されます。

21
Peter Tao

チェックするもう1つの設定は、ターゲットグループの「登録解除の遅延」です。私のヘルスチェック設定はすでに低く、これが私の場合のボトルネックでした。

2
Aaron