« DynamoDB Streamsについての事前情報 | メイン | 【AWS発表】Amazon Aurora - Amazon RDSに費用対効果の高いMySQL互換のデータベースが登場!! »

【AWS発表】コードの管理とデプロイのための新しいAWSのサービス群

今日はアプリケーションのリポジトリ管理、リリースワークフロー管理、デプロイのための新しいAWSのサービス群を紹介します!これらはアプリケーション開発者やシステム管理者のみなさんが、クラウド上で簡単かつ安全にアプリケーションを管理するために大きく役立ってくれるでしょう。まずはサービスラインナップを御覧ください。

  • AWS CodeDeploy - あなたのEC2 Fleet(日本語訳すると「EC2の艦隊」になりますが、かっこいいのでそのまま使います)に対して、サービスのダウンタイムをゼロ、もしくは最小にしつつ、効率的にコードをデプロイしてくれるサービスです。Fleetは1インスタンスから数万インスタンスまで、どんなサイズのものでも扱うことが可能です。
  • AWS CodeCommit - Gitリポジトリをホストするマネージドサービスです。これを利用することにより自身でリポジトリサーバーを管理する手間から開放されます。もちろん、既存のGit周辺ツールをそのまま利用することができます。

  • AWS CodePipeline - このサービスはリリースプロセスを自動化するのに役立ってくれます。必要に応じたワークフローを定義し、テスト、ステージング、本番といった様々な環境への開発中のコードデプロイや動作確認作業のようなフローを自動化することができます。もちろん、CodePipelineは様々なサードパーティーツールと一緒に利用することが可能です。

AWS CodeDeployは本日リリースされましたので、既にみなさん自身で試してみることができます。他の2つのサービスについてはリリースの目処が見えてきたらまたお知らせします。これらのツールは、もちろんそれぞれ独立して動作するように設計されています。さらに一緒に利用することによってより高い価値を提供するようになっていますので、リリースを楽しみにお待ちください。

AWS CodeDeploy

AWS CodeDeploy(以下、CodeDeploy)は、サービス停止が許されないミッションクリティカルな環境においての迅速な開発と迅速なデプロイにフォーカスを置いて設計されています。こちらも冒頭でお話したように、どんなサイズのEC2 fleetに対しても、ダウンタイムを発生させることなくコードをデプロイすることができます。CodeCommitはEC2のアップデート時にELBから一旦取り外したり、複数のAvailability Zoneに配置されたEC2群の高い可用性を失わないようにデプロイプロセスを進めてくれたりと、AWS上でのベストプラクティスが失わないようにケアをしてくれます。

CodeDeployの一番重要な仕事はもちろんのことアプリケーションのデプロイです。特定のアプリケーションのバージョンをEC2群に配布します。また、指定したスクリプトを起動させることもできます。これらの動作を記述するために、YAML形式のファイルが利用されます。ターゲットのEC2を指定するには、たとえばタグを利用したり、関連付けられているELBを利用したりします。

デプロイ対象のEC2インスタンスにはCodeDeployのエージェントソフトウェアをインストールして起動しておく必要があります。これはApache2.0ライセンスのもとで配布されるオープンソースソフトウェアで、LinuxもしくはWindowsで動作します。そしてアプリケーションコードの取得からパーミッションの設定、そしてスクリプトの起動などを司ります。エージェントのセットアップにはいくつか方法があります。1つはマネージメントコンソールでEC2起動のためにAMIを選択するときに「Deploy Ready」というチェックを入れ、インスタンス起動時に動作させることができます。もちろん、既に起動中のインスタンスに対してインストールすることも可能です。

CodeDeployはChefやPuppetと一緒に利用することもできます。また、EclipseやVisual Studioのプラグインとしても利用できますので、今までどおりの開発フローの中に組み込んで利用することができます。

このサービスももちろんマネジメントコンソール、CLI、API経由で利用できます。それでは、マネージメントコンソールを使ったデモアプリケーションのデプロイをひととおり試してみましょう。(このデモアプリケーションはマネージメントコンソールに同梱されています)非常に沢山のスクリーンショットがありますが、これらはほとんど最初のセットアップのためのものです。一度設定してしまえば、非常に多くのメリットを享受することができるでしょう。

デモはAWS CloudFormationを利用します。このテンプレートはCodeDeployDemoとタグ付けされた3台のEC2インスタンスを起動します。

Ci_1

そしてまずはアプリケーションを作成します。

Ci_2

それからデプロイのためのアプリケーションのリビジョンを作成します。このサンプルではS3に格納されていますが、もちろんこれはCodeCommitやGitHub上に格納されていても構いません。

Ci_3

CodeDeployが利用するIAM Roleを指定します。

Ci_4

次にDeployment Configurationが必要になります。デフォルトで用意されているもののなかからひとつを選んで利用することもできますし、自身で設定を作成することもできます。

Ci_5

自身でカスタムDeployment Configuraitonを作成する場合はこんな感じです。

Ci_6

最後にここまでの設定をレビューして、デプロイを実行します。

Ci_7

アプリケーションはDeployment Configurationに沿ってデプロイされていきます。コンソールは状況を逐次的に表示します。

Ci_8

一度設定を作ってしまえば、あとは数クリックで何度でもデプロイを実行できます。

Ci_9

AWS CodeCommit

アプリケーションのソースコードがみなさんの知的財産であることは間違いないでしょう。また、それはみなさんが時間と労力をかけてつくりあげた成果物であることも間違いないことでしょう!AWS CodeCommit(以下、CodeCommit)はこれらを安全に保管してくれるサービスです。すでに冒頭でお話したように、これはGitリポジトリをホストしてくれるマネージドサービスです。すでにお持ちのGitについての経験やツール群(CLIやIDEなど)は、もちろんそのまま活用することができます。このサービスを使い、いままでどおりチームでコードを編集したり、比較したり、同期することができます。

あなた(もしくはあなたの組織のクラウド管理者)は、CodeCommitのリポジトリを作成やパーミッションの設定、利用可能な状態にするなど一連の作業を非常に簡単に行うことができます。CodeCommitはコードやバイナリ、メタデータなどの冗長化された可用性の高いストレージに格納します。

CodeCommitはAWSクラウド上で動作していますので、開発者やチームが複数のロケーションに分散しているケースや、外部ベンダやパートナーと一緒に作業をするケースにも非常によくマッチします。会社のファイアウォールに穴をあけるなどの必要もありませんし、ストレージの容量なども気にする必要はありません。CodeCommitはチェックイン時にコードを暗号化して格納し、開発者や管理者からのアクセスはIAM Roleを使って識別します。

CodeCommitのコンソールのスクリーンショットを一部だけお見せしておきます。お楽しみに!
Ci_10

 

AWS CodePipeline

今日の多くのリリースプロセスは「スモークテストをして問題なければリリース!」というような単純なものではないでしょう。ワークフローが複雑になるほど、自動化の価値が高まってくるのは言うまでもありません。

AWS CodePipeline(以下、CodePipeline)はこのワークフローをコード化して自動化するのに役立ちます。これにより、インフラストラクチャのために割く時間をより小さくし、機能開発により多くの時間を割くことができるでしょう。これを利用すれば例えば、コミットされたコードや差分に対して、事前に定義されたテスト群が毎回自動的に実行され、コード自体やその品質に問題ないことを担保することができます。

CodePipelineではGUIを使ってリリースプロセスをモデル化することができ、直列、並列にさまざまなステージを定義できます。さらに時間ベースや、手動での承認を必要とするゲートを定義し、各ステージの間に配置することができます。たとえば新しい差分のステージングへのデプロイは、平日の日中の時間帯にのみ行う、というようなことを定義することができます。

CodePipelineはあなたのコードリポジトリの更新を監視し、それをトリガーにしてワークフローを起動することもできます。たとえば本番リリースのためのワークフローとして、自動的にリリース用ブランチのコードをビルドしてテストケースを実行し、ステージングサーバーにデプロイします。そして最終的に手動での承認(マニュアルゲート)を通って本番サーバー群にデプロイされる、といったようなことを実現することができるのです。

こちらがCodePipelineのコンソールのスクリーンショットです。
Ci_11

 

CodeDeployは今日リリースされましたので今すぐにでも使いはじめることができます!CodeCommitとCodePipelineについてもリリースを楽しみにお待ちください!

 

今井

コメント

トラックバック

この記事のトラックバックURL:
http://www.typepad.com/services/trackback/6a00d8341c534853ef01bb07a8d9a0970d

【AWS発表】コードの管理とデプロイのための新しいAWSのサービス群を参照しているブログ:

Featured Event

2016年3 月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31