2021/03/12

AWSのCodeDeployでデプロイしよう!特徴5つとメリットを紹介

 
  

AWSとは?

Amazon Web Services(AWS)は、アメリカの大手企業「Amazon.com」が運営するクラウドサービスです。 175を超えるサービスを取り揃えており、データベース、ストレージ、アプリケーション開発など、幅広いワークロードに利用できます。 また、無料利用枠が存在しており、手軽に体験ができるのも特徴です。
AWS には、幅広いテクノロジー、業界、ユースケース向けの 175 を超えるフル機能のサービスがあります。https://aws.amazon.com/jp/what-is-aws/

CodeDeployとは?

アプリケーションのデプロイを自動化するサービスをAWS CodeDeployといいます。 デプロイを全て自動的に行ってくれるようになるため、手動での操作が不要になり、アプリケーションを常に最新の状態に保つことができます。 本記事では、AWS CodeDeployの特徴や導入するメリット、使い方についてご紹介します。

AWS CodeDeployの特徴5つ

AWS CodeDeployに似たサービスとして、AWS Elastic BeanstalkやAWS OpsWorksがあります。 Elastic BeanstalkはJava、ASP.NET、Nodejs、Python、Ruby、RailsなどのWebアプリケーションを総合的に管理し、OpsWorksはEC2・オンプレミスに特化しています。それらと比較して、CodeDeployはデプロイのサポートに特化しており、対応の幅が広いのが特徴です。 ただし、環境構築やアクセス許可(サービスロール)などは自分で行う必要があります。あくまでサポーターと捉えておくのが良いでしょう。 この他、複数のAWSアカウント(クロスアカウント)やリージョンでデプロイすることも可能です。 このように、CodeDeployにはさまざまな特徴があります。この項目では、その中でも特に知っておきたいCodeDeployの特徴5つを抜粋し、ご紹介します。

AWS CodeDeployの特徴1:サーバーアプリケーションなどをデプロイできる

AWS CodeDeployは、多様なアプリケーションのデプロイを自動化できます。 対応する種類として、サーバーアプリケーション、サーバーレスアプリケーション(AWS Lambda、AWS SAMなど)、コンテナアプリケーション(AWS Fargate、Amazon EKSなど)、Amazon EC2インスタンスなどがあります。

AWS CodeDeployの特徴2:設定コードの再利用ができる

AWS CodeDeployはプラットフォームやプログラム言語によらず、全ての種類のアプリケーションをデプロイできます。したがって、コードの変更が必要ありません。設定ファイルのAppSpec fileを追加するだけで使用できます。 この機能により、デプロイやテストに一貫性を持たせることができ、信頼性も向上します。

AWS CodeDeployの特徴3:ローリングデプロイができる

AWS CodeDeployにはローリングデプロイ機能が搭載されています。ローリングデプロイは、複数のサーバーに対して順番にデプロイを行う手法です。 通常では、アップデートを行う際、作業のため一時的にシステムを全て停止しなければなりません。しかし、ローリングデプロイではアップデートのあった部分のみを停止し、他のシステムはそのまま稼働し続けることができます。

AWS CodeDeployの特徴4:デプロイ履歴の参照ができる

AWS Codedeployでは、過去のデプロイ履歴を保存しています。どのサーバーにいつのバージョンがあるのかを確認できます。 失敗した時のログも残されており、デプロイが正常に行われているかどうかも見ることができます。もし失敗しているのが見つかった場合は、過去のリビジョンを再デプロイすることでロールバックが可能です。

AWS CodeDeployの特徴5:オンプレミス環境のサーバーにもデプロイできる

AWS CodeDeployは、オンプレミス環境のサーバーにもデプロイできます。 ただし、オンプレミスおよびEC2環境でCodeDeployを使用するには、CodeDeploy エージェントをインストールする必要があります。CodeDeploy エージェントはUbuntu、Windows、Linuxに対応しています。それぞれ専用のエージェントに分かれているので確認しておきましょう。

AWS CodeDeployのメリット6つ

この項目では、AWS CodeDeployを導入するメリット6つについて説明していきます。 CodeDeployは、アプリケーションのデプロイを自動化できる機能が備えられていることをご紹介しました。では、それによって一体どのようなメリットが生み出されるのでしょうか。具体的に見てみましょう。

AWS CodeDeployのメリット1:運用環境を常に最新に保つことができる

AWS CodeDeployを導入すると、運用環境を常に最新の状態にできます。 継続的デリバリー(CD)ツールのCodePipelineと統合することで、アップデートが見つかれば自動的にリリースの準備が始まります。そこにCodeDeployによる自動デプロイが組み合わさり、常に最新版を運用環境に送り続けるパイプラインが形成されます。

AWS CodeDeployのメリット2:高い可用性を維持できる

AWS CodeDeployにはモニタリング機能があり、アプリケーションに高い可用性を持たせることができます。 CodeDeployの適用下では、ローリングデプロイと並行して、デプロイが正常に行われているかどうかをモニタリングしています。もし、失敗が繰り返されている場合、デプロイは自動的に停止されます。

AWS CodeDeployのメリット3:導入が容易である

AWS CodeDeployは、導入が容易です。 CodeDeployでは、プラットフォームやプログラミング言語によらず、設定コードを再利用できることをご紹介しました。また、統合先にはGitHubやJenkinsなどもあり、aws-codedeploy-sample-tomcatというサンプルもアップされています。 これらの要素から、簡単かつ幅広く導入が可能です。また、公式ドキュメントには利用開始までのチュートリアルもあります。

AWS CodeDeployのメリット4:完全自動化でデプロイできる

AWS CodeDeployを導入すると、開発、テストから本番環境まで、全ての段階でデプロイを自動化できます。 手動での操作が一切不要になり、手間が省略され、プロセスの速度が高まります。また、ヒューマンエラーの可能性も排除されるため、誤操作や設定ミスによるデプロイの失敗、ならびにダウンタイムを減らすことにもつながります。

AWS CodeDeployのメリット5:ダウンタイムを最小限に留められる

AWS CodeDeployでは、ダウンタイムが最小限にまで抑制されています。 ローリングデプロイにより、アップデート時にもダウンタイムが発生しません。さらに、デプロイをモニタリングして、失敗が多い場合は停止し、バグの発生によるダウンタイムを防ぎます。 また、AWS マネジメントコンソールやAWS Command Line Interface(CLI)を使用してデプロイを手動で停止することも可能です。

AWS CodeDeployのメリット6:コストを抑えることができる

AWS CodeDeployでは、EC2およびLambdaへのデプロイは無料です。これらで導入する場合は一切のコストがかかりません。 ただし、オンプレミス環境へのデプロイでは1回につき0.02USDの料金が発生します。また、CodeDeployにおいてAmazon S3など他のサービスを併用した場合、そちらの料金も発生するので、その点は注意しましょう。
AWS CodeDeployの料金

AWS CodeDeployのデプロイ方法

AWS CodeDeployでは、インプレイスデプロイ、Blue/Green デプロイの2種類のデプロイ方法があります。 各種デプロイは、AppSpec fileにより管理されています。AppSpecはYAMLまたはJSON形式のファイルで、方法によってその役割は異なります。 設定は、デフォルトではOneAtATimeに指定されています。

インプレイスデプロイ

インプレイスデプロイは、アプリケーションを一旦停止させた後、最新版のリビジョンを上書きして、テスト後に再起動する方法です。 この方法では、ロードバランサーは必須ではありませんが、使用することでバグの発生や古いバージョンが誤って稼働されることを防ぐことができます。 EC2・オンプレミスでのみ使用可能です。

Blue/Greenデプロイ

Blue/Greenデプロイは、アプリケーションの新しいバージョンを別環境でテストし、新しいバージョンが使用可能になったら本番環境に移行する方法です。新しいバージョンのテスト中も古いバージョンを同時に稼働できるため、ダウンタイムを抑制できます。 環境の構築には、AWS CDKやTerraformが使用可能です。 Blue/GreenデプロイはEC2・オンプレミス、Amazon ECS、Lambda関数のいずれでも実行できますが、それぞれ仕組みや動作は異なります。各動作については、以下の項目で説明します。 また、インプレイスデプロイと違い、こちらはロードバランサーであるElastic Load Balancing(ELB)の導入が必須です。前もって準備しておきましょう。

EC2・オンプレミスの場合

EC2・オンプレミスにおけるBlue/Greenデプロイでは、デプロイグループのインスタンスが別の環境に置換された後、最新版が置換先に導入されます。 AppSpecのhooksセクションでは、リビジョンのマッピングや環境変数へのアクセスが行えます。また、filesセクション(コピーするデータの情報を取得)とpermissionsセクション(コピー後のデータにアクセス許可を設定)が使用可能です。

Lambda関数の場合

Lambda関数におけるBlue/Greenデプロイでは、Lambda関数の更新があった場合、現在のバージョンの環境から新しいバージョンの環境へ移行します。どのLambda関数がどのように移行するかを設定できます。 AppSpecのhooksセクションでは、テスト検証する関数の指定を行います。また、resourcesセクションが使用可能で、デプロイするLambda関数を指定します。

Amazon ECSの場合

Amazon ECSにおけるBlue/Greenデプロイでは、ECS内のタスクが現在のバージョンから新しいバージョンへ移行します。 AppSpecのhooksセクションでは、タスク置換中のさまざまなタイミングでタスクを実行します。また、Lambda関数と同様にresourcesセクションが使用可能で、デプロイするECSを指定します。 デプロイ形式は、線形とCanaryから選択できます。

AWS CodeDeployでデプロイを簡単に行おう

AWS CodeDeployを導入することで、これまで手動で行っていたデプロイを全て自動化できます。失敗が相次ぐ時には自動的に停止し、ロールバックもできるのでバグの心配もありません。 デプロイが手間に感じる、またはよく失敗してバグが発生し、正常に稼働しなくなるなどの悩みがある方は、ぜひ検討してみてはいかがでしょうか。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】