AWS CodeDeploy は、Amazon EC2、AWS Fargate、AWS Lambda、オンプレミスインスタンスなど、さまざまなコンピューティングサービスへのアプリケーションのデプロイを自動化するサービスです。CodeDeploy はアプリケーションのデプロイを完全に自動化するため、手動操作の必要がなくなります。CodeDeploy はローリング更新およびデプロイの正常性追跡機能により、アプリケーションをデプロイ中のダウンタイムから保護します。CodeDeploy では AWS マネジメントコンソール、CLI、SDK、API からデプロイを一元管理し、デプロイを開始、管理、モニタリングできます。デプロイの進行状況を個々の設定イベントに至るまで表示できます。CodeDeploy はデプロイの最近の履歴を追跡および保存するため、過去のデプロイのタイムラインおよび変更履歴を調査できます。
AWS CodeDeploy はプラットフォームや言語に依存せずすべてのアプリケーションと使用できるため、既存の設定コードを再利用できます。また、CodeDeploy API を使用して、アプリケーションのデプロイを既存のソフトウェアデリバリープロセスと統合したり、継続的デリバリーツールチェーンに組み込んだりできます。
自動化されたインスタンスのデプロイ
反復可能なデプロイ
AWS CodeDeploy では、異なるグループ全体に対して、簡単にアプリケーションを繰り返しデプロイできます。CodeDeploy はファイルおよびコマンドベースのインストールモデルを使用しているため、すべてのアプリケーションをデプロイでき、既存の設定コードを再利用できます。同じ設定コードを使用することで、Amazon EC2 インスタンスのデプロイ、テスト、および本番用リリースのステージ全体にわたって、更新を一貫してデプロイしてテストできます。デプロイから手動のステップを排除することで、ソフトウェア配信プロセスの速度と信頼性を高めています。
自動スケーリング
AWS CodeDeploy を使用すると、ソフトウェアのデプロイとスケーリングアクティビティを統合して、動的に変化する運用環境の中でアプリケーションを常に最新の状態に保つことができます。Amazon EC2 インスタンスの場合、CodeDeploy は Auto Scaling と統合されています。Auto Scaling により、トラフィックの急増など、お客様が定義する条件に応じて EC2 の容量をスケールできます。CodeDeploy は新しいインスタンスが Auto Scaling グループに追加されると通知を受け、そのインスタンスが Elastic Load Balancing のロードバランサーに追加される前に自動的にアプリケーションのデプロイを実行します。
オンプレミスデプロイ
AWS CodeDeploy を使うと、開発、テスト、運用環境での実行など、あらゆるインスタンス (データセンターのインスタンスを含む) へのソフトウェアのデプロイを自動化できます (インスタンスは AWS パブリックエンドポイントに接続されている必要があります)。1 つのサービスを使用して、ハイブリッド型アーキテクチャ全体にわたるアプリケーションのデプロイを一貫して行えます。
ダウンタイムの最小化
ローリングおよびブルー/グリーンの更新
AWS CodeDeploy では、アプリケーションを新しいリビジョンにアップグレードする際にダウンタイムが発生しません。AWS CodeDeploy では、Amazon EC2 インスタンス、Amazon ECS サービス (EC2 および AWS Fargate の起動タイプ) 、AWS Lambda 関数にブルー/グリーンデプロイを実行できます。ブルー/グリーンデプロイでは、アプリケーションの新しいバージョンが古いバージョンとともに起動します。新しいリビジョンがテストが実行され準備完了になったら、CodeDeploy は仕様に従って以前のバージョンから新しいバージョンへトラフィックをシフトできます。
CodeDeploy は Amazon EC2 のインスタンスグループ全体にローリング更新を実行することもでき、その際にはどの時点であっても、オフラインになっているインスタンスはごく一部のみです。CodeDeploy はインスタンス全体に段階的に作用するためアプリケーションは利用可能なままであり、トラフィックの提供が中断されません。AWS Lambda 関数の場合、着信トラフィックは古いバージョンから新しいバージョンに徐々にルーティングされます。
デプロイの正常性追跡
デプロイの正常性追跡はローリング更新と連動して実行され、デプロイ中のアプリケーションの可用性を高い状態で維持します。誤った更新がデプロイされると予期しないダウンタイムが発生するおそれがあります。AWS CodeDeploy はデプロイをモニタリングし、失敗した更新が多すぎる場合はデプロイを停止します。
停止とロールバック
アプリケーションの進行中のデプロイは、AWS マネジメントコンソール、AWS CLI、任意の AWS SDK を使用して常に停止できます。停止したデプロイをあとから続行する必要がある場合は、そのリビジョンを再デプロイするだけです。また、以前のリビジョンを再デプロイすることですぐにロールバックできます。
一元管理
モニタリングと管理
AWS マネジメントコンソールから直接、または AWS CLI、SDK、API を使用して、ソフトウェアのデプロイを開始、管理、モニタリングできます。障害が発生した場合は、障害が発生したスクリプトを特定できます。Amazon Simple Notification Service を利用した SMS やメールのメッセージにより、デプロイのステータスをモニタリングするプッシュ通知も設定できます。
デプロイグループ
1 つのアプリケーションを複数のデプロイグループにデプロイできます。デプロイグループは、ステージング環境や運用環境などの特定の環境に構成を一致させるために使用されます。リビジョンをステージング環境でテストし、準備ができたら同じデプロイ手順で同じコードを運用環境にデプロイできます。
デプロイ履歴
AWS CodeDeploy は最近のデプロイの履歴を追跡し、保存します。ターゲットのデプロイグループそれぞれに、現在はアプリケーションのどのバージョンがデプロイされているかを確認できます。特定のデプロイグループに対する過去のデプロイの変更履歴と成功率を調べることができます。また、過去のデプロイのタイムラインを調査して、正常なデプロイとエラーについて詳しく確認することもできます。
導入が容易
言語およびアーキテクチャに依存しない
AWS CodeDeploy はファイルおよびコマンドベースのインストールモデルを使用しているため、任意のアプリケーションをデプロイでき、既存の設定コードを再利用できます。CodeDeploy ではAppSpec の単一の設定ファイルを使用するため、各ライフサイクルイベント (デプロイの段階) でアクション、テスト、または検証を実行するために使用できます。シェルスクリプト、カスタムプログラム、設定管理ツールなど、任意のコードをコマンドとして使用できます。
ツールチェーンの統合
AWS CodeDeploy API を使用することで、アプリケーションのデプロイを既存のソフトウェア配信ツールチェーンと簡単に統合できます。AWS CodePipeline、AWS CodeStar、および一部の AWS パートナーでは、継続的インテグレーションと継続的デリバリーのサービスのために、事前に構築された CodeDeploy の統合を提供しているため、簡単に最新のアプリケーションを自動でデプロイできます。
通知の受信
定義したイベントの確認
デプロイに影響するイベントの通知を作成できます。通知は Amazon SNS 通知の形式で送信されます。各通知には、ステータスメッセージと、その通知を生成したイベントが発生したリソースへのリンクが含まれます。
AWS CodeDeploy の料金についての詳細