Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

コールドスタンバイ構成でCDは可能か

Avatar for 平目 平目
December 26, 2025

 コールドスタンバイ構成でCDは可能か

2025年12月26日に行われた、
AWS10分LT会 vol.8(https://aws-likers.connpass.com/event/376870/ )に
登壇した時の資料になります。

Avatar for 平目

平目

December 26, 2025
Tweet

More Decks by 平目

Other Decks in Technology

Transcript

  1. 30 CodeDeployでの更新はインプレース更新で行います。 今回の構成ではBlue-Greenデプロイが困難な為です。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS

    CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  2. 31 手法としては一般的と思われるCDの手順と同等で、 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS CodeDeploy

    AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  3. 32 開発者がCodeCommitリポジトリに対してGit Pushを発行。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS

    CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  4. 33 CodeCommitはDefalut EventBusに対してEventを発行します。 これは内部処理ですね。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit

    AWS CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  5. 34 EventBridgeで発生したEventを検知して、 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS CodeDeploy

    AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  6. 35 EventBridgeで発生したEventを検知して、 CodePipelineを実行します。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS

    CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  7. 36 CodePipelineは(必要なら)CodeBuildを経て、 CodeDeployを実行します。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS

    CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  8. 37 CodeDeployはターゲットグループとして各環境のEC2に対して インプレースデプロイを行う訳ですが、 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS

    CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  9. 38 コールドスタンバイ構成だとこれが上手く行きません。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS CodeDeploy

    AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  10. 42 今回の構成だとどちらかのサーバがダウンしている状態なので、 CodeDeployが 上手く行かない! 環境A 環境B AWS CodeCommit AWS CodeDeploy

    AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  11. 43 両方のサーバをターゲットグループとしたCodeDeployを実行すると、 片方のサーバのCodeDeploy Agentが処理しないので、失敗します。 CodeDeployが 上手く行かない! 環境A 環境B AWS CodeCommit

    AWS CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  12. 44 ただこれでCodeDeployを実行しないのは勿体ないので、 タグ戦略でターゲットグループを設定することで 稼働中サーバだけを特定して更新する方法に変更しました。 CodeDeployが 上手く行かない! 環境A 環境B AWS CodeCommit

    AWS CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  13. 45 でも、このままだと環境の入れ替え、できないですよね… CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS CodeDeploy

    AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  14. 46 なので、別口でのコード更新方法も検討する必要があります。 今回は「EC2のOS側での起動」をトリガーにしました。 CodeDeployでの インプレース更新 環境A 環境B AWS CodeCommit AWS

    CodeDeploy AWS CodePipeline Default Event Bus Amazon EventBridge 本構成での処理手順 ・Git Push ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行
  15. 48 本環境機は起動すると、必ずCustom Event Busに対して サーバが起動したことを知らせるEventを発行するようにしました。 Custom Event Bus 環境A 環境B

    本構成での処理手順 ・サーバ起動 ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行 CodeDeployでの 起動時更新
  16. 50 ここから先は通常の配布と同じ流れです。 Custom Event Busのイベントを検知し、コードを配布します。 AWS CodeDeploy AWS CodePipeline Amazon

    EventBridge Custom Event Bus 環境A 環境B 本構成での処理手順 ・サーバ起動 ・Eventの発行 ・Eventの検知 ・CodePipelineの実行 ・CodeDeployの実行 CodeDeployでの 起動時更新