IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  Architecture | SOA and Web services  >

Amazon Web サービスを利用したクラウド・コンピューティング: 第 1 回 概要

買うより借りるほうが賢い場合

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません

原文はこちら

原文はこちら


レベル: 初級

Prabhakar Chaganti, CTO, Ylastic, LLC

2008年 07月 29日

Amazon Web サービス™を利用したクラウド・コンピューティングについて学ぶ連載「Amazon Web サービスを利用したクラウド・コンピューティング」では、スケーラブルで信頼性の高いアプリケーションを設計し、構築する上で Amazon Web サービスがどのように強力な代替手段を提供するかを探っていきます。第 1 回目の記事では、この仮想インフラストラクチャーを構成するビルディング・ブロックそれぞれの特徴を説明します。Amazon Web サービスを使って Web スケールのシステムを構築する方法を学んでください。

クラウド・コンピューティングとは何か

クラウド・コンピューティングを大まかに定義すると、環境の外にサービスとして提供されているスケーラブルなコンピューティング・リソースを (使用量に応じて支払う方式で) 利用することと言えます。つまり、必要な分だけリソースを使用することが可能で、料金は使用した分だけ発生します。「雲 (クラウド)」のなかに存在するリソースには、インターネットを介していつでも、どこからでもアクセスすることができます。クラウド内のリソースが舞台裏でどのように管理されているかを考える必要はありません。

クラウド・コンピューティングという言葉は、一般に技術的なアーキテクチャーを表す図では、インターネット、あるいは IP ネットワークのことを雲 (クラウド: cloud) で表すことに由来しています。水平方向のスケーラビリティー問題に対するソリューションとして多用されるようになった 2007年から、クラウド・コンピューティングが注目されるようになりました。

アプリケーションのニーズに対してリソースをいつでも使用可能な状態にして、すぐに対応できるようにしておくことは、クラウドの責任です。クラウド・コンピューティングは、ユーティリティー・コンピューティング、あるいはグリッド・コンピューティングとも呼ばれてきました。

スケーラブルなアプリケーションをどのように設計し、どのように実現するかという点で、クラウド・コンピューティングは 1 つのパラダイム・シフトとなります。これまで、成功を遂げた企業はインフラストラクチャーの構築に貴重な時間とリソースを費やすことで競争力を持ち優位に立ってきました。これはよくある、「事前の準備が、いずれは結果をもたらす」というケースでした。しかしこのアプローチは大抵の場合、以下の事態をもたらします。

  • 大規模なデータセンターのなかで大量のコンピューティング能力が使用されないままとなる
  • サーバーの世話をする管理者が必要となる
  • エネルギー費が伴ってくる
未使用のコンピューティング能力は、ただ単に無駄にされてきました。それは、コンピューティング・サイクルを増やすために喜んで出資する他の企業やユーザーに貸し出す手段がなかったためです。

クラウド・コンピューティングを使用すれば、余ったコンピューティング能力を利用できるようにし、利用者に売ることができます。コンピューティングおよび IT インフラストラクチャーをユーティリティーに変換し、誰もが利用できるようにすることで、アプリケーションの勝負を決めるのはコンピューティング・リソースの量ではなく、発想の良さにかかってくることになり、アプリケーション開発の競争がいくらか平等になります。

アプリケーションと IT システムが (ストレージ、コンピューティング・リソース、メッセージング・システム、およびデータベースの需要の拡大に対応するために) 定常的に必要としているリソースは、基本的には商品化されています。したがって、このインフラストラクチャーを価格面、サービス面でメリットのあるベンダーから借りればいいのです。単純な話だと思いませんか?単純ですが、これは革命的な発想です。この発想は今に始まったものではありませんが、Amazon によって導入された画期的なクラウド・コンピューティング環境により、現在この発想が最先端の技術動向となっています。




上に戻る


Amazon Web サービス

Amazon Web サービスとは、Amazon が提供しているコンピューティング・インフラストラクチャーにプログラムでアクセスできるようにするためのサービスの総称です。Amazon が構築し、長年にわたって改良してきた堅牢なコンピューティング・プラットフォームは、いまやインターネットにアクセスする誰もが利用できるようになりました。Amazon では何種類かの Web サービスを提供していますが、この連載では、大部分のシステムの中心的なニーズに対応する基本ビルディング・ブロック・サービスに焦点を絞ります。具体的には、ストレージ、コンピューティング、メッセージング、そしてデータセットです。

Amazon が提供する信頼性の高いコスト・エフェクティブなビルディング・ブロック・サービスの上に機能を積み重ねていくことで、多種多様な複合エンタープライズ・アプリケーションを設計することが可能になります。Web サービス自体は環境外部のクラウドにあり、いつでも使用できるようになっています。

Amazon Web サービスの成功例

オンライン・フォト・ストレージ・アプリケーションの SmugMug は、S3 (Simple Storage Service) に 500 テラバイトを超えるデータを保存することで、100 万ドル近くのサービスおよびストレージのコスト削減を図っています。このサービスでは、急激な需要の増加に対応するために EC2 (Elastic Compute Cloud) コンピューティング・リソースに大きく依存しています。

37Signals は人気の高いオンライン・プロジェクト管理ソフトウェア、Basecamp を作成した会社で、S3 を使用してストレージのニーズに対応しています。

New York Times では EC2 の力を存分に発揮させ、36 時間以内に数百の EC2 インスタンスを使って数テラバイト単位のアーカイブ・データを処理しています。

Animoto は、動画の処理に大量のコンピューティング能力を必要とするオンラインの動画作成サービスです。最近、このサービスでは EC2 を使用して処理能力を即座に増強するという方法で、大抵の会社ではシステム・ダウンを引き起こすような Web トラフィックの急増に対処することに成功しました。ある時点で同時に実行された実質的なインスタンス数は、3500 にものぼっています。

料金は使用した量にのみ基づき発生する従量制なので、事前の経費や投下資本は必要ありません。ハードウェアの管理と保守は Amazon が引き受けるのでメンテナンス費もかかりません。

Web が主導する現代では、このような仮想インフラストラクチャーは偉大な平等主義者となります。仮想インフラストラクチャーはわずか数分で素早く組み立てられますが、同じインフラストラクチャーを実際の IT 環境として構築するとなると数週間はかかるでしょう。重要な点は、このインフラストラクチャーには弾性があり (エラスティック)、需要に合わせてスケール・アップすることも、スケール・ダウンすることもできるということです。世界中の企業が、このようなエラスティック・コンピューティングを実用化するようになっています (補足記事を参照)。

インフラストラクチャーへの多額の投資とそのメンテナンスという足かせがなくなるということは、すなわちイノベーションの可能性が大きく広がるということでもあります。なぜなら、ディスク・スペースが足りなくなるのではなどとサーバーの台数を心配する代わりに、ビジネスの構想に専念できるからです。Amazon の概算によると、ビジネスではその 70 パーセントの時間がインフラストラクチャーの構築と管理に費やされ、ビジネスを駆動する構想に実際に取り組む時間はその貴重な時間のわずか 30 パーセントに過ぎません。Amazon にハードウェアとインフラストラクチャーの細かい日常作業 (そして高可用性を実現する方法) を任せている間、皆さんは構想の実現化に集中できるというわけです。

この Web スケールのインフラストラクチャーでは、以下の構成要素が中心的役割を果たします。これらの構成要素が、重要なアプリケーションにはほとんど例外なく必要となる最も一般的なビルディング・ブロックとなります。

ストレージ
ストレージ (ファイル、文書、ユーザー・ダウンロード、あるいはバックアップ用) を必要としない人はいません。アプリケーションに必要なあらゆるものを Amazon S3 (Simple Storage Service) に保存して、スケーラブルで信頼性にも可用性にも優れたこの低コストのストレージを活用してください。
コンピューティング
Amazon EC2 (Elastic Compute Cloud) を使用すれば、必要に応じてコンピューティング・リソースをスケール・アップまたはスケール・ダウンすることができます。この EC2 を使用することによって、新しいサーバー・インスタンスのプロビジョニングが極めて容易になります。
メッセージング
Amazon SQS (Simple Queue Service) が提供する信頼性が高く制限のないメッセージングを利用することによって、アプリケーション・コンポーネントを分離させてください。
データセット
Amazon SDB (SimpleDB) は、スケーラブルでメンテナンスの要らない索引付きストレージを提供し、データセットに対して処理を行ったり、クエリーを実行したりすることが可能です。

これらのサービスは上手く連動するように設計されているため、必要に応じてさまざまに組み合わせることができます。さらにサービスは Amazon 環境内部で実行されるため、サービス間の通信は通常極めて高速です。

この「Amazon Web サービスを利用したクラウド・コンピューティング」の連載記事では、それぞれの Web サービスと、サービスにアクセスするために利用できるライブラリーについて詳しく説明します。
新しく企業を興す場合には、この仮想インフラストラクチャーを活用することで、スケーラブルで信頼性の高いアプリケーションを構築することができます。アプリケーションをホスティングする従来のプラットフォームには、需要量の変動と急増に対応するために大規模なサーバー・ファームが必要となりますが、それに比べ、このインフラストラクチャーを利用すれば大幅なコスト削減となります。その上、極めて優れた冗長性も実現できます。

Amazon Web サービスのユーザーには、以下の 2 種類のサポート・レベルが用意されています。

  • フォーラム・ベースの無料サポート。Amazon フォーラムをモニターする Amazon スタッフによるサポートです。
  • 有料サポート・パッケージ。マンツーマンの電話によるサポートを提供します。ヘルプを求める上で、より配慮された方法が用意されています。
Amazon では、そのすべての Web サービスについてのヘルス・ステータスをパブリックにアクセス可能なダッシュボードで公開しています。このダッシュボードは、サービスに関する問題が発生すると常に更新されます。サービスの停止期間中には、Amazon Web サービス・チームが問題に対処するとともに、15 分から 30 分おきに更新情報を送信します。この更新情報の送信は、問題が修正されるまで続きます。

Amazon では各サービスとやりとりするために、標準ベースの SOAP および REST インターフェースを提供しています。。Amazon またはサード・パーティーによる開発者向けライブラリーはいずれも複数の言語で用意されており、Ruby、Python、Java™、Erlang、および PHP などから選択してサービスとやりとりすることができます。EC2 でコンピューティング・リソースを管理する際には、コマンドライン・ツールも使用できます。REST インターフェースは使いやすく、HTTP で Web サービスへのリクエストを行うプログラミング言語で作成されたクライアントであれば、どれでも使用できます。

Amazon S3 での保存

Amazon S3 (Simple Storage Service) は、データを保存し、取得するための Web サービス・インターフェースを提供します。データは種類を問わず、インターネットを介してどこからでも保存し、アクセスすることができます。S3 に保存できるオブジェクト数には制限がなく、1 オブジェクトあたり 1 バイトから 5GB までのサイズを保存することができます。ストレージ自体が置かれるのは、米国内または EU 内のいずれかです。オブジェクトを保存する場所は、バケット (オペレーティング・システムでのフォルダーの概念と同様) を作成するときに選択することができます。データをセキュアに保存するために使用するインフラストラクチャーは、Amazon がその e-コマース Web サイトの世界的ネットワークを駆動するために使用しているデータ・ストレージ・インフラストラクチャーと同じものです。

アクセス制限は S3 に保存するオブジェクトごとに指定することが可能で、オブジェクトには単純な HTTP リクエストによってアクセスすることができます。さらに、BitTorrent プロトコルを使用すれば、オブジェクトをダウンロードすることさえ可能です。

S3 を使用すれば、ストレージ・スペース、データへのアクセス、あるいはデータの保護について心配する必要はまったくなくなります。ストレージ・サーバーの管理費を考える必要もありません。

第 2 回 Amazon S3 (Simple Storage Service) によるクラウド内のストレージ」では、S3 について詳しく説明します。

Amazon が常にファイルを確実に使用可能な状態にするため、必要なときにはいつでもファイルを使用することができます。Amazon が S3 に規定するサービス・レベル・アグリーメントでは、月単位で 99.9 パーセントのアップタイムを約束しています。

Amazon EC2 によるエラスティック・コンピューティング

Amazon EC2 は、仮想マシンを数分のうちに取得し、需要に応じて処理容量を簡単にスケール・アップ/スケール・ダウンしたりできる Web サービスです。支払うのは、使用した計算時間の分だけです。コンピューティング能力を増やす必要が出てきたと同時に仮想インスタンスを起動し、その後、需要が低くなったら仮想インスタンスを終了することができます。

これらのインスタンスは Linux® をベースとしているため、どんなアプリケーションやソフトウェアでも実行することができます。各インスタンスの制御権はユーザーにあります。EC2 環境自体がベースとしているのはオープンソースの Xen ハイパーバイザーで、これはケンブリッジ大学で開発されたものです。Amazon では、インスタンスのテンプレートとして機能する AMI (Amazon Machine Image) をユーザーが作成できるようになっています。インスタンスへのアクセスは、アクセス権を指定することによって制御できます。ユーザーはインスタンスを使ってあらゆることを実行できますが、唯一の制限事項は、インスタンスは Linux ベースのイメージでなければならないということです。最近になって、Amazon は Sun Microsystems との提携により Open Solaris のサポートを発表しましたが、無料または市販の EC2 用ビルド済みイメージの大多数は Linux をベースとしています。

Amazon EC2 は、コンピューティング・リソースを容易にスケール・アップ/スケール・ダウンできる、正真正銘の Web スケールのコンピューティングを実現します。このコンピューティング環境は Amazon のデータセンターで稼動しますが、その制御権は完全にユーザーにあります。Amazon では 5 種類のサーバーを揃えており、このうちアプリケーションのニーズに合わせて、商品化されたシングルコアの x86 サーバーから、8 つのコアを搭載した x86_64 サーバーまで選ぶことができます。耐障害性を確実にするには、インスタンスを地理的に分散した場所 (Availability Zone) に配置してください。Amazon では最近、動的にインスタンスに割り当てられる Elastic IP アドレスという概念も採用しています。

Amazon Simple Queue Service による信頼性の高いメッセージング

Amazon SQS (Simple Queue Service) は、Amazon が使用する信頼性の高いメッセージング・インフラストラクチャーへのアクセスを提供します。メッセージの送信、受信は、単純な REST ベースの HTTP リクエストを使用してどこからでも行えます。インストールや構成が必要なものは何もありません。また、作成できるキューの数にも、送信できるメッセージの数にも制限はありません。メッセージング・システムに必要な冗長性と信頼性を実現するため、メッセージは Amazon によって複数のサーバーとデータセンターに保存されます。各メッセージには最大 8KB のテキスト・データを含めることができます。メッセージで使用できる Unicode 文字は、以下のとおりです。
#x9 | #xA | #xD | [#x20 to #xD7FF] | [#xE000 to #xFFFD] | [#x10000 to #x10FFFF]

各キューに可視性タイムアウトを設定し、このタイムアウトによって複数のリーダーによるキューへのアクセスを制御することができます。この場合、アプリケーションがキューからメッセージを読み取ると、タイムアウトの期間が満了するまで、他のリーダーにはメッセージが表示されなくなります。メッセージはタイムアウト期間が満了するとキューに再び現れ、別のリーダー・プロセスで処理できるようになります。

SQS は他の Amazon Web サービスとの統合性に優れています。そのため SQS を使用して分離システムを構築すれば、SQS にメッセージを送信するという手段で EC2 インスタンスが相互に通信し、ワークフローを調整することができます。 またキューを使用して、アプリケーションに応じた自己修復および自動拡張機能を持つ EC2 ベースのインフラストラクチャーを構築することも可能です。SQS が提供する認証メカニズムを使用することで、キューに入れられたメッセージを無許可のアクセスから保護することができます。

Amazon SimpleDB によるデータセットの処理

Amazon SimpleDB (SDB) は、構造化データセットの保存および処理、そして同セットに対してクエリーを実行するための Web サービスです。SDB は従来の意味から言うとリレーショナル・データベースではありませんが、クラウド内でそれほど構造化されていないデータ・ストアを使用するこのスキーマは極めて可用性に優れ、キー付きの値を保存、取得するために利用できます。キーと値のそれぞれのセットには、固有の項目名が必要で、これらの項目自体がドメインに区分されます。各項目が保持可能なデータ量は、最大 256 のキーと値のペアです。データセットに対するクエリーは、ドメインごとに実行できます。クロスドメイン・クエリーは、現在 SDB ではサポートされていません。

SDB は簡単に使用できるにもかかわらず、リレーショナル・データベースのほとんどの機能を提供します。セットアップや構成はまったく必要ないため、メンテナンスは通常のデータベースより遥かに簡単です。管理作業はすべて、Amazon が引き受けます。データには Amazon によって自動的に索引が付けられ、いつでも、どこからでも使用できるようになります。スキーマに束縛されないということは、オンザフライでデータを挿入し、新しい列やキーを動的に追加できるという大きなメリットになります。

SDB は Amazon インフラストラクチャーの一部なので、そのスケール・アップ/スケール・ダウンは裏で自動的に行われます。そのため、ユーザーはより重要な事項に注意を向けることができます。この場合も同じく、データセットのリソースに対する支払いは使用した分にだけ発生します。




上に戻る


スケーラブルなアーキテクチャー

Amazon Web サービスは、以下の特徴により、スケーラブルなシステムを設計しやすくします。

信頼性
これらのサービスは、Amazon のビジネスにも使われている、実践で試された可用性の高いデータセンター内で実行されます。
セキュリティー
そのまますぐに使用できる基本的なセキュリティーおよび認証メカニズムが用意されています。Amazon Web サービスをベースに各アプリケーションに固有のセキュリティーを加えることで、これらのメカニズムを必要に応じて拡張することができます。
費用便益
固定費や一定のメンテナンス・コストは一切ありません。支払いは従量制なので、必要に応じてリソースと予算を増減できます。
開発の容易性
単純な API により、この仮想インフラストラクチャーとライブラリーの最大限の能力を活用できます。ライブラリーの言語は、最も一般的に使われているプログラミング言語のなかから選べます。
弾性
需要に応じてコンピューティング・リソースをスケール・アップ/スケール・ダウンしてください。1 台のサーバーから、アプリケーションのニーズに合わせた任意の数のサーバーにまで簡単にスケーリングすることができます。
一体性
4 つの中核的ビルディング・ブロック・サービス (ストレージコンピューティングメッセージングデータセット) は互いに最適に連動することを前提に設計されているため、多種多様なアプリケーション・ドメインに対応する完全なソリューションとなります。
コミュニティー
活気に満ちた活動的なユーザー・コミュニティーを活用してください。このコミュニティーが、これらの Web サービスの普及を促し、このインフラストラクチャーをベースとした独創性にあふれたアプリケーションを作成しています。



上に戻る


今後のための準備

今後の連載「Amazon Web サービスを利用したクラウド・コンピューティング」で Amazon Web サービスの詳細を探っていく準備として、Amazon Web サービスのアカウントにサインアップしておく必要があります (「参考文献」を参照)。サインアップすると、X.509 セキュリティー証明書と併せて、セキュリティー・アクセス・キーとして公開鍵と秘密鍵の 2 つが提供されます。この 2 つの鍵が、「第 2 回 Amazon S3 (Simple Storage Service) によるクラウド内のストレージ」で各種のライブラリーとツールを使用する際に必要となります。

これらの Web サービスを操作するために用意されているツールおよびライブラリーは、さまざまな言語で作成されています。この連載の記事では固有の言語にとらわれずに、複数の言語で例を扱っていくようにしますが、Java、Ruby または Python についての十分な知識があると役に立ちます。




上に戻る


まとめ

今回の記事では、Amazon のクラウド・コンピューティング環境を紹介し、このインフラストラクチャーの 4 つの主要な構成部分について簡単に概説しました。連載の今後の記事では、Amazon Web サービスそれぞれについて詳細を探り、この仮想インフラストラクチャーを利用してアプリケーションを構築するために用意された各種のライブラリーとツールについて説明していきます。



参考文献

学ぶために

製品や技術を入手するために
  • IBM 製品の評価版をダウンロードして、IBM® DB2、Lotus®、Rational®、Tivoli®、および WebSphere® のアプリケーション開発ツールとミドルウェア製品を使ってみてください。


議論するために


著者について

Prabhakar Chaganti photo

Prabhakar Chaganti が CTO を務める Ylastic は、EC2、S3、SQS、SimpleDB を含めたユーザーの AWS クラウド・コンピューティング環境全体を設計、管理、モニターするための統一インターフェースを構築している新興企業です。彼は最近、『Xen Virtualization』および『GWT Java AJAX Programming』という 2 冊の本を書いています。VMware Global Virtual Appliance Challenge では、最も革新的な仮想アプライアンスに贈られるコミュニティー特別賞も受賞しています。




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



 


 


不充分・不完全である大変素晴らしい
 


この記事を共有する

del.icio.us del.icio.us newsing newsing FC2ブックマーク FC2ブックマーク
Choix! Choix! ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
MM/memo MM/memo CZブックマーク CZブックマーク livedoorクリップ livedoorクリップ
はてなブックマーク はてなブックマーク Buzzurl(バザール) Buzzurl(バザール)




上に戻る


IBM、IBM ロゴ、ibm.com、DB2、developerWorks、Lotus、Rational、Tivoli、および WebSphere は、International Business Machines Corporation の米国およびその他の国における商標です。これらおよび他の IBM 商標に、この情報の最初に現れる個所で商標表示 (® または TM) が付されている場合、これらの表示は、この情報が公開された時点で、米国において、IBM が所有する登録商標またはコモン・ロー上の商標であることを示しています。このような商標は、その他の国においても登録商標またはコモン・ロー上の商標である可能性があります。現時点での IBM の商標リストについては、www.ibm.com/legal/copytrade.shtml の「Copyright and trademark information」をご覧ください。 Java およびすべての Java 関連の商標およびロゴは、Sun Microsystems, Inc. の米国およびその他の国における商標です。Linux は、Linus Torvalds の米国およびその他の国における商標です。 他の会社名、製品名およびサービス名等はそれぞれ各社の商標です。

    日本IBMについて プライバシー お問い合わせ