AWS CodeDeploy デプロイメント戦略詳細解説

AWS CodeDeployでは、アプリケーションの特性やビジネス要件に応じて最適なデプロイメント戦略を選択できます。本記事では、各デプロイメント戦略の詳細な設定方法と実践的な使い分けについて解説します。

デプロイメント戦略の分類

CodeDeployで利用可能なデプロイメント戦略は、プラットフォーム別に以下のように分類されます。

プラットフォーム別対応表

プラットフォームIn-PlaceBlue/GreenCanaryLinear
EC2/オンプレミス
Lambda
ECS
EKS

EC2/オンプレミス環境でのデプロイメント戦略

In-Place デプロイメント

In-Place デプロイメントは、既存のインスタンス上でアプリケーションを直接更新するアプローチです。

メリット

  • 追加リソースが不要でコスト効率が良い
  • シンプルな設定で実装できる
  • ロールバックが高速(前バージョンのバックアップから復元)

デメリット

  • 更新中のサービス停止(ダウンタイム発生)
  • 更新失敗時の影響が大きい
  • データベース変更を伴う場合のリスクが高い

適用ケース

  • 開発・検証環境
  • メンテナンス時間が確保できるシステム
  • コスト最優先のプロジェクト

Blue/Green デプロイメント

Blue/Green デプロイメントは、新しいインスタンスセットを作成してトラフィックを切り替えるアプローチです。

詳細設定オプション

Blue/Green デプロイメントでは、以下の詳細な設定が可能です。

トラフィック再ルーティング設定

  • 即座にトラフィックを再ルーティング:検証完了後すぐに切り替え
  • 指定時間後に自動再ルーティング:一定時間の監視後に自動切り替え
  • 手動承認後に再ルーティング:人的確認を経てから切り替え

終了設定

  • 即座に元のインスタンスを終了:コスト最適化
  • 指定時間後に元のインスタンスを終了:ロールバックに備えて保持
  • 元のインスタンスを保持:手動での削除

デプロイメント設定の詳細

EC2/オンプレミス環境では、以下の定義済みデプロイメント設定から選択できます。

In-Place デプロイメント設定

設定名説明健全性しきい値使用ケース
CodeDeployDefault.EC2AllAtOnceすべて同時更新最低0台が健全開発環境
CodeDeployDefault.EC2HalfAtATime半分ずつ更新50%が健全小規模本番環境
CodeDeployDefault.EC2OneAtATime1台ずつ更新75%が健全高可用性要求
カスタム設定独自の設定任意設定特別な要件

Blue/Green デプロイメント設定

設定名説明特徴使用ケース
CodeDeployDefault.EC2BlueGreenDeployment標準Blue/Green新インスタンス作成、段階的トラフィック移行本番環境での無停止デプロイ
CodeDeployDefault.EC2BlueGreenDeploymentValidateOnly検証のみデプロイ後の検証フェーズのみ実行検証環境での動作確認

Lambda 関数でのデプロイメント戦略

Lambda 関数では、関数エイリアスを使用したトラフィック制御により、Canary・Linearデプロイメントが実現されます。

Canary デプロイメント

新バージョンに一定割合のトラフィックを送り、段階的に切り替えるアプローチです。

Canary設定例

設定名正式名称トラフィック移行監視時間用途
Canary10Percent5MinutesCodeDeployDefault.LambdaCanary10Percent5Minutes10% → 100%5分迅速な検証
Canary10Percent10MinutesCodeDeployDefault.LambdaCanary10Percent10Minutes10% → 100%10分標準的な検証
Canary10Percent15MinutesCodeDeployDefault.LambdaCanary10Percent15Minutes10% → 100%15分慎重な検証

Linear デプロイメント

一定間隔で段階的にトラフィックを移行するアプローチです。

Linear設定例

設定名正式名称増分間隔特徴
Linear10PercentEvery1MinuteCodeDeployDefault.LambdaLinear10PercentEvery1Minute10%ずつ1分間隔迅速展開
Linear10PercentEvery2MinutesCodeDeployDefault.LambdaLinear10PercentEvery2Minutes10%ずつ2分間隔標準展開
Linear10PercentEvery3MinutesCodeDeployDefault.LambdaLinear10PercentEvery3Minutes10%ずつ3分間隔慎重展開

ECS サービスでのデプロイメント戦略

ECS環境では、サービスの更新とローリングデプロイメントにより、様々なデプロイメント戦略が実現できます。

ECS Blue/Green デプロイメント

ECS設定のポイント

  • タスク定義の新リビジョン作成
  • Target Groupの動的作成・切り替え
  • ヘルスチェック設定の最適化
  • ロードバランサーリスナー設定

ECS デプロイメント設定

設定名正式名称説明特徴
AllAtOnceCodeDeployDefault.ECSAllAtOnce即座に100%トラフィック移行最速デプロイ
Canary10Percent5MinutesCodeDeployDefault.ECSCanary10Percent5Minutes10%を5分間、その後100%迅速な検証
Canary10Percent15MinutesCodeDeployDefault.ECSCanary10Percent15Minutes10%を15分間、その後100%慎重な検証
Linear10PercentEvery1MinutesCodeDeployDefault.ECSLinear10PercentEvery1Minutes1分ごとに10%ずつ移行段階的デプロイ
Linear10PercentEvery5MinutesCodeDeployDefault.ECSLinear10PercentEvery5Minutes5分ごとに10%ずつ移行安全重視デプロイ

EKS サービスでのデプロイメント戦略

Amazon EKSでのデプロイメントも、ECSと同様にBlue/Green方式でCanary・Linearデプロイメントが利用できます。

EKS デプロイメント設定

設定名正式名称説明特徴
AllAtOnceCodeDeployDefault.EKSAllAtOnce即座に100%トラフィック移行最速デプロイ
Canary10Percent5MinutesCodeDeployDefault.EKSCanary10Percent5Minutes10%を5分間、その後100%迅速な検証
Canary10Percent15MinutesCodeDeployDefault.EKSCanary10Percent15Minutes10%を15分間、その後100%慎重な検証
Linear10PercentEvery1MinutesCodeDeployDefault.EKSLinear10PercentEvery1Minutes1分ごとに10%ずつ移行段階的デプロイ
Linear10PercentEvery5MinutesCodeDeployDefault.EKSLinear10PercentEvery5Minutes5分ごとに10%ずつ移行安全重視デプロイ

EKS設定のポイント

  • Kubernetesマニフェストでのサービス・デプロイメント定義
  • Application Load Balancerとの統合
  • Pod のヘルスチェック設定
  • リソース制限と自動スケーリング設定

戦略選択の指針

リスク・コスト・時間による比較

戦略リスクコストデプロイ時間ダウンタイム適用環境
In-Placeあり開発・検証
Blue/Greenなし本番・重要システム
Canaryなし実験的機能
Linearなし安定性重視

ビジネス要件による選択

高可用性が最優先

  • Blue/Green または Linear デプロイメント
  • 自動ロールバック設定必須
  • 詳細な監視とアラート設定

コスト効率を重視

  • In-Place デプロイメント
  • メンテナンス時間帯の活用
  • 最小限の検証環境

新機能の段階的リリース

  • Canary デプロイメント
  • A/Bテスト機能との組み合わせ
  • ユーザーフィードバックの収集

技術的制約による選択

データベース変更を伴う場合

  • Blue/Green デプロイメント
  • データベースマイグレーション戦略の検討
  • ロールバック計画の策定

セッション管理が必要な場合

  • Sticky Session設定の考慮
  • セッション情報の外部化
  • 段階的な移行戦略

レガシーアプリケーション

  • In-Place デプロイメントから段階的移行
  • モダン化計画との連動
  • 監視機能の段階的強化

実装のベストプラクティス

1. 適切な監視設定

2. 段階的な戦略移行

既存システムでは、段階的にデプロイメント戦略を進化させることを推奨します。

フェーズ1: In-Place → 監視強化 フェーズ2: Blue/Green → 自動化 フェーズ3: Canary/Linear → 最適化

3. 環境別戦略設定

環境推奨戦略理由
開発In-Place高速イテレーション
ステージングBlue/Green本番同等の検証
本番Canary/Linearリスク最小化

適切なデプロイメント戦略の選択により、アプリケーションの品質と可用性を向上させながら、効率的なリリースプロセスが実現できます。ビジネス要件と技術的制約を総合的に検討し、最適な戦略を選択しましょう。