AWS CodeDeploy の特徴

CodeDeploy を選ぶ理由

AWS CodeDeploy は、Amazon Elastic Compute Cloud (Amazon EC2)、AWS Fargate、AWS Lambda、オンプレミスインスタンスなど、さまざまなコンピューティングサービスへのアプリケーションのデプロイを自動化するサービスです。CodeDeploy はアプリケーションのデプロイを完全に自動化するため、手動での操作が不要になります。CodeDeploy はローリング更新およびデプロイの正常性追跡機能により、アプリケーションをデプロイ中のダウンタイムから保護します。CodeDeploy では AWS マネジメントコンソール、AWS コマンドラインインターフェイス (AWS CLI)、SDK、API からデプロイを一元管理し、デプロイを開始、管理、モニタリングできます。デプロイの進行状況を個々の設定イベントに至るまで表示できます。CodeDeploy はデプロイの最近の履歴を追跡および保存するため、過去のデプロイのタイムラインおよび変更履歴を調査できます。

CodeDeploy はプラットフォームや言語に依存せずすべてのアプリケーションと使用できるため、既存の設定コードを再利用できます。また、CodeDeploy API を使用して、アプリケーションのデプロイを既存のソフトウェア配信プロセスと統合したり、継続的デリバリーツールチェインに組み込んだりできます。

自動デプロイ

CodeDeploy では、異なるグループ全体に対して、簡単にアプリケーションを繰り返しデプロイできます。CodeDeploy はファイルおよびコマンドベースのインストールモデルを使用しているため、すべてのアプリケーションをデプロイでき、既存の設定コードを再利用できます。同じ設定コードを使用することで、Amazon EC2 インスタンスのデプロイ、テスト、および本番用リリースのステージ全体にわたって、更新を一貫してデプロイしてテストできます。デプロイから手動のステップをなくすことで、ソフトウェア配信プロセスの速度と信頼性を高めています。

CodeDeploy を使用すると、ソフトウェアのデプロイとスケーリングアクティビティを統合して、動的に変化する運用環境の中でアプリケーションを常に最新の状態に保つことができます。Amazon EC2 インスタンスの場合、CodeDeploy は Auto Scaling と統合されています。Auto Scaling により、トラフィックの急増など、お客様が定義する条件に応じて Amazon EC2 の容量をスケールできます。CodeDeploy は新しいインスタンスが Auto Scaling グループに追加されると通知を受け、そのインスタンスが Elastic Load Balancing (ELB) のロードバランサーに追加される前に自動的にアプリケーションのデプロイを実行します。

CodeDeploy を使うと、開発、テスト、運用環境での実行など、あらゆるインスタンス (データセンターのインスタンスを含む) へのソフトウェアのデプロイを自動化できます (インスタンスは AWS パブリックエンドポイントに接続されている必要があります)。1 つのサービスを使用して、ハイブリッド型アーキテクチャ全体にわたるアプリケーションのデプロイを一貫して行えます。

ダウンタイムの最小化

CodeDeploy では、アプリケーションを新しいリビジョンにアップグレードする際にダウンタイムが発生しません。AWS CodeDeploy では、Amazon EC2 インスタンス、Amazon Elastic Container Service (Amazon ECS) サービス (Amazon EC2 および Fargate の起動タイプ) 、Lambda 関数にブルー/グリーンデプロイを実行できます。ブルー/グリーンデプロイでは、アプリケーションの新しいバージョンが古いバージョンとともに起動します。新しいリビジョンがテストが実行され準備完了になったら、CodeDeploy は仕様に従って以前のバージョンから新しいバージョンへトラフィックをシフトできます。

CodeDeploy は Amazon EC2 のインスタンスグループ全体にローリング更新を実行することもでき、その際にはどの時点であっても、オフラインになっているインスタンスはごく一部のみです。CodeDeploy はインスタンス全体に段階的に作用するためアプリケーションは利用可能なままであり、トラフィックの提供が中断されません。Lambda 関数の場合、着信トラフィックは古いバージョンから新しいバージョンに徐々にルーティングされます。

デプロイの正常性追跡はローリング更新と連動して実行され、デプロイ中のアプリケーションの可用性を高い状態で維持します。誤った更新がデプロイされると予期しないダウンタイムが発生するおそれがあります。CodeDeploy はデプロイをモニタリングし、失敗した更新が多すぎる場合はデプロイを停止します。

アプリケーションの進行中のデプロイは、コンソール、AWS CLI、任意の AWS SDK を使用して常に停止できます。停止したデプロイをあとから続行する必要がある場合は、そのリビジョンを再デプロイするだけです。また、以前のリビジョンを再デプロイすることですぐにロールバックできます。

一元管理

コンソールから直接、または AWS CLI、SDK、API を使用して、ソフトウェアのデプロイを開始、管理、モニタリングできます。障害が発生した場合は、障害が発生したスクリプトを特定できます。Amazon Simple Notification Service (Amazon SNS) を利用した SMS やメールのメッセージにより、デプロイのステータスをモニタリングするプッシュ通知も設定できます。

1 つのアプリケーションを複数のデプロイグループにデプロイできます。デプロイグループは、ステージング環境や運用環境などの特定の環境に構成を一致させるために使用されます。リビジョンをステージング環境でテストし、準備ができたら同じデプロイ手順で同じコードを運用環境にデプロイできます。

CodeDeploy は最近のデプロイの履歴を追跡し、保存します。ターゲットのデプロイグループそれぞれに、現在はアプリケーションのどのバージョンがデプロイされているかを確認できます。特定のデプロイグループに対する過去のデプロイの変更履歴と成功率を調べることができます。また、過去のデプロイのタイムラインを調査して、正常なデプロイとエラーについて詳しく確認することもできます。

導入が容易

CodeDeploy はファイルおよびコマンドベースのインストールモデルを使用しているため、すべてのアプリケーションをデプロイでき、既存の設定コードを再利用できます。CodeDeploy では AppSpec の単一の設定ファイルを使用するため、各ライフサイクルイベント (デプロイの段階) でアクション、テスト、または検証を実行するために使用できます。コマンドはシェルスクリプト、カスタムプログラム、または設定管理ツールなど、任意のコードを使用できます。

CodeDeploy API を使用することで、アプリケーションのデプロイを既存のソフトウェア配信ツールチェーンと簡単に統合できます。 AWS CodePipeline と一部の AWS パートナーは、継続的インテグレーションと継続的デリバリー (CI/CD) サービスのための事前に構築された CodeDeploy 統合を提供しているため、更新されたアプリケーションの自動デプロイが簡単になります。

通知を受信

デプロイに影響するイベントの通知を作成できます。通知は Amazon SNS 通知の形式で送信されます。各通知には、ステータスメッセージと、その通知が生成される原因となったイベントが存在するリソースへのリンクも含まれます。