AWS CodeDeploy のアイコン

AWS CodeDeploy

EC2、Lambda、ECS へのアプリケーションデプロイを自動化するフルマネージドサービス

何ができるか

AWS CodeDeploy は、EC2 インスタンス、Lambda 関数、ECS サービスへのアプリケーションデプロイを自動化するフルマネージドサービスです。ローリングデプロイ、Blue/Green デプロイ、カナリアデプロイなど複数のデプロイ戦略をサポートし、デプロイ中の問題を検知した場合は自動ロールバックを実行できます。CodePipeline と統合することで、コードのコミットからデプロイまでの完全な CI/CD パイプラインを構築できます。

どのような場面で使うか

EC2 インスタンス群へのアプリケーション更新のローリングデプロイ、Lambda 関数のトラフィックシフトによる段階的リリース、ECS サービスの Blue/Green デプロイによるゼロダウンタイム更新、オンプレミスサーバーへのアプリケーション配布、デプロイ失敗時の自動ロールバックによるサービス安定性の確保など、あらゆるデプロイシナリオで活用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

引っ越し業者に例えるとわかりやすいでしょう。自分で荷物 (アプリケーション) を新居 (サーバー) に運ぶのは大変で、途中で壊れるリスクもあります。引っ越し業者 (CodeDeploy) に頼めば、計画的に荷物を運び、万が一問題があれば元の家に戻す (ロールバック) こともできます。しかも複数の新居に同時に引っ越しを進められます。

CodeDeploy とは

AWS CodeDeploy は、アプリケーションのデプロイプロセスを自動化するサービスです。手動デプロイでは人為的ミスやダウンタイムのリスクが伴いますが、CodeDeploy はデプロイの各ステップを自動化し、一貫性のある信頼性の高いリリースプロセスを実現します。EC2、Lambda、ECS の 3 つのコンピューティングプラットフォームに対応しており、それぞれに最適化されたデプロイ方式を提供します。

デプロイ戦略

CodeDeploy は複数のデプロイ戦略を提供しています。In-Place デプロイでは、既存のインスタンス上でアプリケーションを順次更新します。Blue/Green デプロイでは、新しいインスタンス群を作成してアプリケーションをデプロイし、トラフィックを切り替えます。Lambda 向けにはカナリアデプロイ (少量のトラフィックから段階的に移行) やリニアデプロイ (一定割合ずつ移行) も利用可能です。各戦略にはデプロイ設定でタイムアウトやヘルスチェックの条件を細かく指定できます。

自動ロールバックとモニタリング

CodeDeploy はデプロイ中の問題を検知して自動的にロールバックする機能を備えています。CloudWatch アラームと連携し、エラー率やレイテンシの閾値を超えた場合にデプロイを中止して前のバージョンに戻せます。デプロイの進行状況はコンソールや API でリアルタイムに監視でき、各インスタンスのデプロイステータスを個別に確認できます。SNS 通知を設定すれば、デプロイの成功・失敗をチームに即座に共有できます。

AppSpec ファイルと連携

CodeDeploy のデプロイ動作は AppSpec ファイル (YAML または JSON) で定義します。このファイルにはデプロイ先のファイル配置、ライフサイクルイベントフック (BeforeInstall、AfterInstall、ApplicationStart など)、権限設定などを記述します。ライフサイクルフックではシェルスクリプトを実行でき、デプロイ前後のカスタム処理 (データベースマイグレーション、キャッシュクリアなど) を自動化できます。

Azure・オンプレミスとの比較

Azure の対応サービス Azure DevOps Release Pipelines
オンプレミスでの対応手段 Jenkins、Ansible、Octopus Deploy

AWS の優位点

  • EC2、Lambda、ECS の 3 つのコンピューティングプラットフォームに対応し、それぞれに最適化されたデプロイ戦略を単一サービスで統一的に管理できる
  • CloudWatch アラームと連携した自動ロールバック機能により、デプロイ中の異常を即座に検知して前バージョンに自動復旧でき、サービスの安定性を確保できる
  • CodeDeploy 自体の利用料金は EC2 と Lambda へのデプロイでは無料で、ECS の Blue/Green デプロイのみ課金されるため、コスト効率の高いデプロイ自動化を実現できる

注意点

  • EC2 向けの CodeDeploy エージェントは各インスタンスにインストールが必要で、エージェントの更新管理も運用タスクに含まれる
  • Blue/Green デプロイでは新旧両方のインスタンスが一時的に稼働するため、デプロイ中のコストが一時的に増加する点に注意

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。