ハイブリッド・クラウドで重要な役割を担うAmazonWebServices
Amazon Web Serviceが提供するクラウド・サービスの中でも、簡単・迅速にサービス開始、システム構築を可能とする「AWS Elastic Beantalk」と「AWS CloudFormation」。これら2つのサービスが、今までのクラウド・サービスと比べどのような点で新しいのか、またハイブリッド・クラウドを構成する際にどう有効なのかについて、ご紹介します。
テクノロジーコラム クラウド
- 2012年01月01日公開
急速にサービス拡充するAmazon Web Services
Amazon Web Services(AWS)は、2002年7月にAmazon.comの技術とデータにアクセスできるプログラミング・インターフェイスを提供するため、EC事業者向けにサービス開始しました。当初は、Amazonで販売されている商品情報を取得するAPIや、ショッピングカートを操作するAPIをSOAPやXML/HTTPで提供していました。
2006年8月には、サービス名に「クラウド」の名を冠したIaaS(*1)型のパブリック・クラウド(*2)である「Amazon Elastic Compute Cloud (Amazon EC2)」のベータ版の提供が開始されました。
2012年1月現在、AWSのWebサイトのトップページにリストされているだけでも28のサービスが提供されています。2006年8月のAmazon EC2のリリースから、約2ヶ月毎に1つという驚くべき速さで新規サービスを提供していることになります。
■AWSが提供している代表的なサービス
Amazon Elastic Compute Cloud (Amazon EC2) |
サーバ仮想化技術を活用し、規模を自在に変更可能なコンピュータ処理能力を提供するサービス |
Auto Scaling | Amazon EC2の能力を自動的にスケール・アウト、スケール・インを行うサービス |
Amazon CloudFront | ハイパフォーマンスでグローバル規模にコンテンツを配信するサービス |
Amazon Relational Database Service (Amazon RDS) | RDBMSを簡単にセットアップ、運用、拡張可能にするデータベースサービス |
Amazon Simple Queue Service(Amazon SQS) | メッセージによる非同期通信のための、信頼性の高い、拡張性のあるキューサービス |
Amazon Simple Notification Service (Amazon SNS) | イベント駆動型のワークフローやメッセージング・アプリケーションを構築するための、メッセージング・システムを提供するサービス |
Amazon CloudWatch | Amazon EC2やAmazon RDSなどのAWSリソースや、AWS上で実行するアプリケーションのモニタリングを実行するサービス |
Elastic Load Balancing | 複数のAmazon EC2インスタンス等の間で負荷を分散するロードバランサを提供するサービス |
各サービス同士の統合により、効率的なシステム構築を実現
AWSと他のクラウド・サービスとの大きな違いは、AWSは単なるサービスの集合体ではないということです。AWSの各サービスにはAPIやコマンドライン・インタフェース(CLI)が提供されているのが特徴で、コンピュータ処理、データベース、ストレージ、メッセージング、その他のサービスをプログラマブルに統合することで、開発時間の短縮やシステムの構築が可能になります。
例えば、「Amazon CloudWatchでトラフィックの増加を検知し、Auto ScalingでEC2インスタンスを自動的にスケール・アウトさせ、Elastic Load Balancingで処理を振り分ける」といったように、複数のサービスを統合することにより急激なトラフィック増加にも耐えうるスケーラブルで完全なコンピュータ・プラットフォームを短期間に構築できます。
2011年には、新たに「AWS Elastic Beanstalk」と「AWS CloudFormation」という2つのサービスを開始しました。これまでのAWSのサービスの多くは、単独のコンピュータ処理やストレージとしての利用や他のサービスと統合して利用することを目的としたIaaS型のクラウド・サービスであったのに対し、新サービスでは、複数のサービスを統合したPaaS(*3)型のクラウド・サービスとなっています。
これからこの2つの新サービスについてご紹介します。
【用語解説】
- *1:IaaS
- OSを含む任意のアプリケーションのディプロイ(*4)および実行場所、およびコンピューティング・リソースのプロビジョニング機能を提供するクラウド・インフラストラクチャ。
- *2:パブリック・クラウド
- インターネット上で一般公開または大規模な業界団体のために運用されるクラウド。
- *3:PaaS
- プロバイダがサポートする言語やツールで作成したアプリケーションをディプロイするためのクラウド・インフラストラクチャ。
- *4:ディプロイ
- アプリケーションを利用可能な状態に準備すること。
サービスを簡単で迅速に開始する「AWS Elastic Beanstalk」
AWS Elastic Beanstalkは、スケーラブルなWebサービスを提供可能にするPaaS型のクラウド・サービスです。Webアプリケーションをディプロイ(*1)するだけで、Amazon EC2、Amazon S3、Elastic Load Balancing、Auto Scaling、Amazon SNSのコンピューティング・リソースを活用し、自動的に容量のプロビジョニング、ロードバランシング、自動スケーリング、およびアプリケーション・ヘルスモニタリングができます。
なお、AWS Elastic Beanstalk自体の利用は無料で、AWS Elastic Beanstalkが動作させたEC2インスタンスの利用時間等、AWSの各サービスの利用に応じて課金が行われます。
JavaのWebアプリケーションを迅速にサービス開始可能
AWS Elastic Beanstalkは、Java SDK環境としてはJava 5またはJava 6を、Webコンテナ環境としては32bitまたは64bit Amazon Linux上で動作するTomcat 6またはTomcat 7をサポートしています。具体的には、以下のことができます。
- AWS Elastic BeanstalkにディプロイしたWebアプリケーションの環境設定は、AWS Management Console(*2)から簡単に設定できます。
- 動作中のWebコンテナのサーバログを取得したり、CPU使用率、リクエスト数、レイテンシ等の推移をグラフでモニタリングしたりできます。
- アプリケーションの複数のバージョンを管理できるので、アプリケーションを以前のバージョンにロールバックできます。
- トラブルシューティングのために、異なるバージョンのWebアプリケーションを同時に実行できます。
AWS Elastic Beanstalkには、他サービス同様、各種APIやCLIが提供されており、プログラマブルに既存の開発環境、開発プロセスに組み込んで利用可能です。
留意点としては、AWS Elastic Beanstalkでスケール・アウト、スケール・インを行うことで、ローカルに保持していたコンピューティング・リソースにアクセスできなくなることがあります。このため、永続化はAmazon S3のような外部ストレージやAmazon RDSのようなDBMSに行うなど、アプリケーションの設計時には注意が必要です。
AWS Elastic Beanstalkの特徴
(1)ベンダー・ロックインされない
PaaS型クラウド・サービスでは、マルチテナントやスケール・アウトを実現するためにアプリケーションから利用できるAPIやサービスに厳しい制約が付けられ、ディプロイするPaaS型クラウド・サービスへのベンダ・ロックインを余儀なくされることが少なくありません。
一方、AWS Elastic Beanstalkは、Webアプリケーションをディプロイする上での制約が非常に少なく、ベンダ・ロックインされないPaaS型クラウド・サービスといえます。
(2)特定の言語や環境に依存しないことを目指している
AWS Elastic Beanstalkでは、現在サポートされている動作環境はWebコンテナ のTomcatのみですが、フレームワーク自体は、複数の言語、複数のアプリケーシ ョン環境をサポートするようにデザインされています。今後はJava以外の言語も含めた複数の環境が利用可能になるため、特定の言語や環境に縛られることがありません。
また、AWS Elastic Beanstalkは、AWSのIaaS型クラウド・サービスをベースとした環境で動作しており、ディプロイするWebアプリケーション毎にそれぞれ独立したEC2インスタンスを起動します。それぞれ独立した仮想マシンのWebコンテナ上で動作させるため、Webアプリケーションから利用できるAWSのサービスや、EC2インスタンスとの連携、データベースの利用等について制約が少ないため、AWS Elastic Beanstalkの環境に依存することがありません。
このようにAWS Elastic Beanstalkで動作可能なアプリケーションは、他環境でも簡単に動作可能です。この長所を活かし、AWS Elastic Beanstalkとオンプレミスのプライベート・クラウド(*3)との間でアプリケーションを自動的にマイグレーションするハイブリッド・クラウド(*4)の構成なども考えられ、非常に興味深いサービスと言えます。
【用語解説】
- *1:ディプロイ
- アプリケーションを利用可能な状態に準備すること。
- *2:AWS Management Console
- AWSの各種サービスを簡単で直感的に操作できるWebベースのGUI。
- *3:プライベート・クラウド
- 単独の組織のために運用されるクラウド。
- *4:ハイブリッド・クラウド
- プライベート・クラウド、パブリック・クラウドなどの2つ以上のクラウドから構成されるクラウド。
システムを簡単・迅速に構築する「AWS Cloud Formation」
AWS CloudFormationは、アプリケーションスタック(アプリケーション、ミドルウェア、インフラストラクチャなどの複合体)を表現するテンプレートを記述し、アプリケーションスタック全体の起動を自動化するサービスです。テンプレートの記述に従ってAWSリソースを作成し、適切な順序で実行します。テンプレートは保存でき、同じアプリケーションスタックの起動を再現可能ですし、起動時にDBMSの接続先のようなパラメータを渡すことも可能です。
なお、AWS CloudFormation自体の利用は無料で、AWS CloudFormationが動作させたEC2インスタンスの利用時間等、AWSの各サービスの利用に応じて課金が行われます。
アプリケーションスタック
現在アプリケーションスタックには、次のサービスを含むことができます。
EC2インスタンス EBSボリューム Elastic IPアドレス Amazon RDS Databaseインスタンス Amazon SimpleDBドメイン Amazon SNSトピック AWS Elastic Beanstalk Amazon Route 53 DNSレコード Amazon S3バケット |
EC2セキュリティグループ Elastic Load Balancing Auto Scalingグループ Amazon RDSセキュリティグループ Amazon SQSキュー Amazon SNSサブスクリプション Amazon CloudWatchアラーム Amazon CloudFront配信 |
アプリケーションスタックを構成するテンプレートはJSON形式で記述します。AWSが用意したサンプル・テンプレートのほか、独自のテンプレートを作成・利用することも可能です。テンプレート中でURLを用いて他のテンプレートを参照でき、既存テンプレートを組み合わせて階層化して利用することもできます。
例えば、Amazon RDSやAmazon SQSをそれぞれ起動する既存テンプレートがある場合、既存テンプレートを組み合わせて新しいテンプレートを作成することで、Amazon RDSとAmazon SQSを利用するシステムのアプリケーションスタックを、容易に構築できます。
サンプル・テンプレートには様々な種類があります。テンプレートだけで簡単にシステムが構築可能な代表的なサンプル・テンプレートには下記のとおりテンプレートが用意されています。
代表的なサンプル・テンプレート
- WordPress(ブログ)
- Tracks(プロジェクトトラッキング)
- Gollum(GitHub によって使用される wiki)
- Drupal(コンテンツマネジメント)
- Joomla(コンテンツマネジメント)
- Insoshi(ソーシャルアプリ)
- Redmine(プロジェクトマネジメント)
便利なツールとして、実行するEC2のインスタンスやS3のバケットをウィザード形式で指定するだけで、起動や設定に関する情報を抽出してJSON形式のテンプレートを自動作成するCloudFormerが用意されています。
まずは、サンプル・テンプレートやCloudFormerが作成したテンプレートを元に拡張して利用するのが良いかもしれません。
AWS CloudFormationの特徴と留意点
AWS CloudFormationは、EC2インスタンス上で動作させるアプリケーションのブートストラッピング(*1)ができることが大きな特徴です。
AWS CloudFormatinのブートストラッピングには、アプリケーション設定済みのAmazon Machine Image(AMI)を用いる方法と、ChefやPuppetといった構成管理ツールを利用する方法があります。それぞれの長所・短所は以下のとおりです。
■ブートストラッピング
方法 | 長所 | 短所 |
---|---|---|
アプリケーション 設定済みAMIを用いる |
起動が速い | アプリケーションがAMIに組込み済みなのでバージョンアップに追従できない |
構成管理ツールを 利用 |
アプリケーションのバージョンアップに柔軟に追従できる | 起動時にアプリケーションのインストールや設定を行うので起動が遅い |
アプリケーション設定済みAMIの方法を利用する場合、頻繁なアプリケーションのバージョンアップが必要なく、AutoScalingの要求に応じて迅速なインスタンスの起動が求められるような、運用サービス環境等の用途に向いています。
一方、構成管理ツールを利用する場合は、ミドルウェアやツールのバージョンアップに追従して環境の更新を求められる頻度が高い、検証環境等の用途に向いています。
以上のように、AWS CloudFormationを利用することでアプリケーションスタックを作成および管理することができます。インフラストラクチャの構築はAWS CloudFormationに任せてしまえば、PaaS型のクラウド・サービスと同じようにアプリケーションをディプロイするだけでサービス可能になる環境を、テンプレートを指定してボタンやコマンド一つで構築することができます。AWS CloudFormationはテンプレートで定義した任意のPaaS型クラウド・サービスを起動するための基盤サービスとも捉えることができるのではないでしょうか。
【用語解説】
- *1:ブートストラッピング
- 起動時にアプリケーションのインストールおよび設定を行い、ベースとなる環境を構築すること
まとめ
AWSのPaaS型サービスはハイブリッド・クラウドで重要な役割を担う
ここまでAWSが提供するクラウド・サービス、特に、最近サービスを開始した2つのPaaS型のクラウド・サービスを紹介しました。
当初はバズ・ワードとして取り上げられることが多かった「クラウド・コンピューティング」ですが、最近では、急激なトラフィックのバーストへの対応が必要なシステムや、期間限定でしか利用されないようなシステムを中心に、必要な時に必要なリソースだけを利用するシステムの動作環境として重要な選択肢の一つとなっています。
しかし、「クラウド・コンピューティング」を利用したサービスを構築する上で、いくつかの課題に直面することがあります。
PaaS型のクラウド・サービスでは、柔軟な設定変更や自由にシステム間の連携が行えないことが多く、サービスとして適用できないことがあります。また、IaaS型のクラウド・サービスでは、OSのインストールから必要になることが多く、通常のシステム構築と同等もしくはそれ以上のスキルや期間が必要になることがあります。
このようなIaaS型クラウド・サービスとPaaS型クラウド・サービスが抱える課題を解決するための方法として、Amazonが提案したのが、今回紹介した2つのPaaS型のクラウド・サービスだといえます。
AWS Elastic Beanstalkを導入することでサービスを「簡単で迅速」に開始でき、従来から提供しているIaaS型のクラウド・サービスと組み合わせることで、サービスの規模拡大にあわせた柔軟な設定変更やシステム拡張を可能にします。
AWS CloudFormationを導入することで、システムをテンプレートベースで「簡単で迅速」に構築できます。
Amazonが示した「PaaS型のクラウド・サービスをIaaS型のクラウド・サービスで拡張するモデル」は、それぞれのクラウド・サービスの弱点を補完しあう構成になっており、「クラウド・コンピューティング」を提供するベンダが今後進むべき方向性の重要な指針のひとつになると私は思います。
更に、「クラウド・コンピューティング」は、将来的にはパブリック・クラウドやプライベート・クラウドといったディプロイメント・モデルを超えて、ハイブリッド・クラウドへのシームレスな統合が進んでいくことが想定されています。
この際、ベンダ・ロックインしないAWS Elastic Beanstalkは、ハイブリッド・クラウドを構成するPaaS型クラウド・サービスの有力な選択肢になり得ますし、システム起動を自動化するAWS CloudFormationは、ハイブリッド・クラウドを構成するクラウド間でシステムのマイグレーションを行う重要なサービスになる可能性を秘めています。
今回紹介した2つのサービスは、単にAWSが始めたPaaS型クラウド・サービスというだけでなく、将来的にハイブリッド・クラウドを構成する中でも重要な位置付けのサービスになるのではないでしょうか。これらのサービスを中心としたAWSのサービスの動向には今後も注目が必要です。
NTTテクノクロス株式会社