AWS CodeDeploy とは?デプロイの自動オーケストレーション
AWS CodeDeploy は、新しいバージョンを EC2 インスタンス、Lambda 関数、ECS サービスへどのように展開するかを、ヘルスチェックとロールバックを伴ってオーケストレーションするデプロイサービスです。
稼働中のインフラへ新しいコードを安全に送り込むのは、見た目より難しい作業です。CodeDeploy は展開を自動化します。インスタンスを順序付け、ライフサイクルフックを実行し、ヘルスを監視し、失敗時にはロールバックします。リスクの高い手動ステップを、パイプラインがトリガーできる再現可能で観測しやすいプロセスへと変えます。
CodeDeploy が対象にできるもの
- インストールした agent を介した EC2 およびオンプレミスのサーバー。
- バージョン間でトラフィックをシフトする Lambda 関数。
- blue-green デプロイを行う ECS サービス。
デプロイ戦略
CodeDeploy は in-place(rolling)デプロイと、トラフィックをシフトする前に新しいフリートを立ち上げる blue-green デプロイをサポートします。Lambda と ECS ではトラフィックを段階的に(canary または線形に)シフトできるため、不良なリリースはまず一部のユーザーだけに影響します。
ライフサイクルフック
デプロイは定義済みのライフサイクルイベントを通過し、各ステージにフック(スクリプトや Lambda による検証)をアタッチできます。これにより、トラフィックを完全にシフトする前にコネクションをドレインしたり、smoke test を実行したり、cache を温めたりできます。
自動ロールバック
デプロイ中にヘルスチェックが失敗するか CloudWatch アラームが発火すると、CodeDeploy は最後の正常なバージョンへ自動的にロールバックできます。このセーフティネットこそ、チームが手動でデプロイをスクリプト化する代わりに CodeDeploy を使う主な理由です。
CI/CD での役割
CI が build とテストを行い、実際の展開を CodeDeploy に引き渡します。パイプラインはリビジョン(または新しい task definition)をアップロードし、デプロイを開始して成功を待ちます。CodeDeploy が展開戦略とロールバックを担うため、パイプライン側のステップはシンプルで安全なままです。
重要なポイント
- CodeDeploy は EC2、Lambda、ECS への展開をヘルスチェック付きでオーケストレーションします。
- rolling と blue-green の戦略に加え、canary によるトラフィックシフトをサポートします。
- ヘルスチェック失敗時の自動ロールバックにより、パイプラインでのデプロイがより安全になります。