

# Amazon ECS カナリアデプロイに必要なリソース
<a name="canary-deployment-implementation"></a>

マネージドトラフィック移行が実施されるカナリアデプロイを使用するには、サービスが次のいずれかの機能を使用する必要があります。
+ Elastic Load Balancing
+ Service Connect

次のリストは、Amazon ECS カナリアデプロイに設定する必要がある内容について概要を示しています。
+ サービスは Application Load Balancer、Network Load Balancer、Service Connect を使用します。適切なリソースを設定します。
  + Application Load Balancer – 詳細については、「[ブルー/グリーンデプロイ、リニアデプロイおよびカナリアデプロイ用の Application Load Balancer リソース](alb-resources-for-blue-green.md)」を参照してください。
  + Network Load Balancer – 詳細については、「[Amazon ECS ブルー/グリーン、リニアおよびカナリアデプロイの Network Load Balancer リソース](nlb-resources-for-blue-green.md)」を参照してください。
  + Service Connect – 詳細については、「[Amazon ECS ブルー/グリーンデプロイ、リニアデプロイおよびカナリアデプロイ用の Service Connect リソース](service-connect-blue-green.md)」を参照してください。
+ サービスのデプロイコントローラーを `ECS` に設定します。
+ サービス定義でデプロイ戦略を `canary` として設定します。
+ 必要に応じて、次のように追加のパラメータを設定します。
  + 新しいデプロイのベイク時間
  + Canary フェーズ中に新しいサービスリビジョンにルーティングするトラフィックの割合。
  + Canary フェーズ中に残りのトラフィックを新しいサービスリビジョンに移行するまで待機する期間。
  + 自動ロールバックの CloudWatch アラーム
  + デプロイのライフサイクルフック (指定されたデプロイステージで実行される Lambda 関数)

## ベストプラクティス
<a name="canary-deployment-best-practices"></a>

Amazon ECS カナリアデプロイを正常に処理するには、次のベストプラクティスに従ってください。
+ **アプリケーションが同時に実行されている両方のサービスリビジョンを処理できることを確認します。**
+ **デプロイ中に両方のサービスリビジョンを処理するため、十分なクラスターキャパシティの確保を計画します。**
+ **ロールバック手順は、本番環境での実装前にテストします。**
+ アプリケーションの正常性を正確に反映する、適切なヘルスチェックを設定します。
+ グリーンデプロイの十分なテストを可能にするベイク時間を設定します。
+ CloudWatch アラームを実装し、問題を自動的に検出してロールバックをトリガーします。
+ ライフサイクルフックを使用し、各デプロイステージで自動テストを実行します。
+ 小さな Canary の割合 (5～10%) から始めて、問題が発生した場合の影響を最小限に抑えます。
+ 有意義なパフォーマンスデータ収集のための十分な時間を確保できる適切な評価期間を設定します。
+ 自動ロールバックトリガーの CloudWatch アラームを使用して包括的なモニタリングを実装します。
+ アプリケーションの準備状況と機能を正確に反映するヘルスチェックを設定します。
+ 評価中に、技術的メトリクス (応答時間、エラー率) とビジネスメトリクスの両方をモニタリングします。
+ アプリケーションがセッションや状態に関する問題が発生しない状態でトラフィックの分割を処理できることを確認します。
+ ロールバック手順を計画し、定期的にテストして、必要に応じて機能することを確認します。
+ チームがモニタリングして対応できる営業時間内にカナリアデプロイをスケジュール設定します。
+ カナリアデプロイを実施する前に、ステージング環境で変更を詳細に検証します。
+ 手動介入とロールバックの決定に関する明確な手順を文書化します。