Linux によるクラウド・コンピューティング

クラウド・コンピューティングのプラットフォームおよびアプリケーション

クラウド・コンピューティングとストレージは、物理リソース (プロセッサー、ストレージなど) をインターネットで拡張可能かつ共有可能なリソース (「サービス」としてのコンピューティングとストレージ) に変身させます。この物理リソースのサービスへの変換は、仮想化によって一段とスケーラブルかつ効率的になります。ここで言っている仮想化は新しい概念というわけではなく、サーバーを仮想化して物理システムを共有できるようにするということです。クラウド・コンピューティングでは、ユーザーは実際のリソースがどこにあるのか、そしてリソースがどのように構成されているのかを知らなくても、大量のコンピューティング・リソースやストレージ・リソースにアクセスすることができます。ここで大きな役割を果たすのは、ご想像のとおり Linux です。この記事を読んで、クラウド・コンピューティングについて、そして雲の向こうにどうしてペンギンがいるのか (インターネットの向こうになぜ Linux が必要なのか) を理解してください。[クラウド・コンピューティングに関する最新の developerWorks のコンテンツへのリンクを「参考文献」セクションに新たに追加しましたのでご参照ください (編集者より)]

M. Tim Jones, Consultant Engineer, Emulex Corp.

M. Tim JonesM. Tim Jones は組み込みソフトウェアのエンジニアであり、『Artificial Intelligence: A Systems Approach』、『GNU/Linux Application Programming』(現在、第 2 版です) や『AI Application Programming』(こちらも現在、第 2 版です)、それに『BSD Sockets Programming from a Multilanguage Perspective』などの著者でもあります。技術的な経歴は静止軌道衛星用のカーネル開発から、組み込みシステム・アーキテクチャーやネットワーク・プロトコル開発まで、広範にわたっています。また、コロラド州ロングモン所在のEmulex Corp. の顧問エンジニアでもあります。



2009年 2月 11日 (初版 2008年 9月 10日)

最近の技術的な Web サイトは、いわゆるクラウド・コンピューティングを抜きにしては語れません。クラウド・コンピューティングとは何かと言えば、これはコンピューティング・リソース (コンピューターおよびストレージ) をサービスとして提供することに過ぎません。しかしコンピューティング・リソースがサービスとして提供されることにより、簡単かつユーザーにはわからないようにコンピューターとストレージを追加して、サービスを動的に拡張することが可能になります。このすべては、コンピューティング・リソースを「ユーティリティー (電気・ガス・水道)」と同じく従量制サービスとして見なしているユーティリティー・コンピューティングの概念と似ています。クラウド・コンピューティングとユーティリティー・コンピューティングの違いは、その背後にある目的ではありません。この 2 つの違いは、それを実現するために集められている既存の技術です。

IBM と Amazon Web サービス (AWS)

クラウド・コンピューティングを利用すると、仮想環境でアプリケーションを開発できるようになり、コンピューティング容量、帯域幅、ストレージ、セキュリティー、信頼性などの問題を気にする必要がなくなります。つまり自らのシステムにソフトウェアをインストールする必要はありません。仮想環境では、アプリケーションの開発、デプロイメント、管理が可能な一方で、変換するニーズやビジネス要件に応じてスケール・アップやスケール・ダウンをすることができ、使用した時間と容量に対してのみ料金を支払います。

IBM は Amazon Web サービスと共同で Amazon Elastic Compute Cloud (EC2) 仮想環境で IBM ソフトウェア製品を利用できるサービスを提供しています。EC2 で提供している IBM のソフトウェアには以下のものがあります。

  • DB2 Express-C 9.5
  • Informix Dynamic Server Developer Edition 11.5
  • WebSphere Portal Server and Lotus Web Content Management Standard Edition
  • WebSphere sMash

これらは製品レベルのコードであり、すべての機能とオプションが有効になっています。詳しい情報や、これらの製品の Amazon Machine Images のダウンロード方法については developerWorks Cloud Computing Resource Center を参照してください。

クラウド・コンピューティングに関する他のリソースについては developerWorks の Cloud computing spaceを参照してください。

クラウド・コンピューティングを支える概念のなかで、特に重要な概念はスケーラビリティーですが、スケーラビリティーを可能にする技術は仮想化です。仮想化では複数のオペレーティング・システムとアプリケーションを 1 つの共用のコンピューターに集約することで、サーバーをうまく活用できるようになります。また、仮想化ではオンライン・マイグレーションも可能なので、サーバーが過負荷状態になった場合には、オペレーティング・システムのインスタンス (およびそのアプリケーション) をより簡潔な新しいサーバーにマイグレートすることができます。

クラウド・コンピューティングは一見したところ、エンタープライズ外部のコンピューティングとストレージをクラウドにマイグレートしているだけに過ぎません。ユーザーがリソースの要件 (コンピューティングと WAN (Wide Area Network)、必要な帯域幅など) を定義すると、クラウド・プロバイダーがそのインフラストラクチャー内で、必要なコンポーネントをアセンブルします (図 1 を参照)。

図 1. リソースをインターネットへマイグレートするクラウド・コンピューティング
リソースをインターネットへマイグレートするクラウド・コンピューティング

しかしここで疑問となるのは、リソースを自分で管理する代わりに、クラウド内に仮想的に存在させる利点がどこにあるのかということです。これには多くの理由がありますが、私が最も重要だと思う 2 つの理由は、コストとスケーラビリティーです。クラウド・コンピューティングの目標は、コンピューティング・リソースのコストを、自分で用意して管理する場合よりも低くすることです。このコスト削減には、柔軟性とスケーラビリティーの向上が伴います。クラウド・コンピューティング・プロバイダーはその仮想インフラストラクチャーを使用して、帯域幅やコンピューディング・リソースの増加に対応させるためにユーザーの仮想環境を容易に拡張することができるからです。

環境面におけるクラウド・コンピューティングの利点は、リソースを仮想化して異なるアプリケーションで共有することにより、サーバーを一層有効に活用できることです。図 2 にその一例を示します。この例では、アプリケーションごとに独立した 3 つのプラットフォームがあり、そのそれぞれが専用のサーバーで実行されています。クラウド内ではオペレーティング・システムとアプリケーションでサーバーを共有 (仮想化) してサーバーを有効活用することができるため、サーバーの数が減る結果となります。サーバー数が少なくなるということは、必要なスペースが減り (データ・センターの占有スペースの最小化)、冷却のための電力も節約できるということです (二酸化炭素排出量の最小化)。

図 2. 仮想化およびリソースの使用
仮想化およびリソースの使用

ただしトレード・オフはあります。クラウド・コンピューティングでも欠点は免れませんが、これらの問題については後で検討することにして、まずはクラウド・コンピューティングが何であるかを詳しく探っていくことにします。

クラウド・コンピューティングの内部構造

クラウドの内部を覗いてみると、これは単なる 1 つのサービスではなく、実際にはサービスの集合となっていることがわかります (図 3 を参照)。それぞれの層が、提供するサービスのレベルを定義します。

図 3. クラウド・コンピューティングの階層構造
クラウド・コンピューティングの階層構造

提供されるサービスのうち、最も下のレベルにあるのはインフラストラクチャー (Infrastructure) です (Infrastructure-as-a-Service、略して IaaS)。IaaS では、インフラストラクチャー (コンピューティング・リソースおよびストレージ) をサービスとしてリースします。これはつまり、処理能力が保証された仮想化コンピューターだけではなく、ストレージとインターネット・アクセス用に確保された帯域幅も提供されるということです。この層では基本的に、特定のサービス品質制限が設定された、任意のオペレーティング・システムおよびソフトウェアを実行可能なコンピューターまたはデータ・センターをリースすることができます。

クラウド・コンピューティングの価値

クラウド・コンピューティングのリソースを使うとリソースの管理コストを削減できるという他にも、クラウド・コンピューティングの利点はあります。その 1 つは、インターネットを介したコンピューティング・リソースを利用することで、そのリソースの配置場所に関する問題がまったくなくなることです。リソースが例えば自然に冷却される場所にあれば、エネルギー消費量を抑えることができます。

このスタックでインフラストラクチャーの上にあるサービス・レベルはプラットフォーム (Platform) です (Platform-as-a-Service、略して PaaS)。PaaS は IaaS と似ていますが、このサービスには特定のアプリケーションに重点を置いたオペレーティング・システムとそのアプリケーションに必要なサービスが含まれます。例えば PaaS は仮想サーバーおよびストレージの他に、特定のオペレーティング・システムとアプリケーションのセット (通常は、VMware の .vmdk フォーマットのような仮想マシン (VM ファイル)) を提供し、さらに MySQL データベースやその他の専用ローカル・リソースなどの必要なサービスへのアクセスを提供します。つまり PaaS は、IaaS に特定アプリケーションのカスタム・ソフトウェア・スタックを加えたサービスということになります。

図 3 の最上部にあるのは、提供可能な最も単純なサービス、アプリケーション (Application) です。この層は Software-as-a-Service (SaaS) と呼ばれ、ローカル・コンピューターで (またはクラウドからリモートで) 実行するソフトウェアを中央システムからデプロイするモデルとなっています。従量制サービスの SaaS では、アプリケーションをリースして、使用した時間の分だけ支払うことができます。

以上が、クラウド・コンピューティングの大まかな概要です。この概要では、クラウドが持つ他の側面のいくつかは省略しています。その 1 つ、data-Storage-as-a-Service (dSaaS) はストレージを従量制サービスとして提供し、利用者への請求は使用した容量 (ストレージの使用量)、そして使用量 (ストレージの帯域幅要件) をベースにするというものです。その他、インターオペラビリティーの内部メカニズム、さらには Web サービスなどの外部 API (Application Program Interface) を提供するクラウド・サービスも登場しています。


クラウド・コンピューティングの展望

ここ数ヶ月の間、クラウド・コンピューティング関連インフラストラクチャーへの投資が増大しています。この膨大な投資は、クラウド内でのリソース仮想化が必要とされていることを表しています。昨年は多くの新しいサービスも登場しました。そのうちのいくつかを図 4 に示します。

図 4. クラウド・コンピューティング層ごとのオファリング
クラウド・コンピューティング層ごとのオファリング

このオファリングのリストはかなり頻繁に変わるため、決してすべてを網羅しているわけではありませんが、一部のオファリングと、これらのオファリングがどのように区別されるかについての概要はわかるはずです。この記事の「参考文献」に、オファリングへのリンクをいくつか抜粋して記載しています。


クラウド内の Linux およびオープンソース

ここからは、Linux とオープンソース・コミュニティーがクラウド・コンピューティングの世界にどのように貢献しているかを探っていきます。ご想像のとおり、Linux とオープンソース技術はクラウド・コンピューティングの世界で大きな役割を果たしています。

サービスとしてのソフトウェア (SaaS)

SaaS では、サービスとしてのソフトウェアにインターネット経由でアクセスすることができます。SaaS の初期の手法は、アプリケーション・サービス・プロバイダー (ASP) でした。ASP では、インターネットでホストまたは配信されるソフトウェアを購読することができます。ASP が提供するソフトウェアに対しては、その使用量に応じて料金が請求されます。このように、ユーザーはソフトウェアを購入することなく、必要に応じてソフトウェアをリースすればよいだけとなります

SaaS の例

従来のアプリケーションと SaaS アプリケーションとの違いとして興味深い例は、SoftwarePlanner.com によるアプリケーションのライフサイクル管理ツールです。この会社ではそのツールを、カスタマーが企業内でアプリケーション・スイートをホストするという従来のモデルを使用したツール、あるいは SaaS として提供します。後者の場合、カスタマーがアプリケーション・スイートをホストすると同時に、そのアプリケーション・スイートをインターネットで使用できるようにします。

SaaS に対するもう 1 つの見方は、ソフトウェアをインターネット経由で使用し、リモートから実行するということです。このソフトウェアは、ローカル・アプリケーションが使用する (Web サービスとして定義された) サービスという形を取ることも、Web ブラウザーを通じて観察されるリモート・アプリケーションで使用されるサービスという形を取ることもあります。リモート・アプリケーションのサービスの一例は、標準 Web ブラウザーによって複数のエンタープライズ・アプリケーションを提供する Google Apps です。アプリケーションをリモートから実行するには一般に、必要なサービスを公開するアプリケーション・サーバーが必要となります。この場合のアプリケーション・サーバーとは、ソフトウェア・サービス (トランザクション管理やデータベース・アクセスなど) のための API を公開するソフトウェア・フレームワークのことです。アプリケーション・サーバーには、例えば Red Hat JBoss Application Server、Apache Geronimo、IBM® WebSphere® Application Server などがあります。その他にも数多くのアプリケーション・サーバーがあるので、完全なリストについては「参考文献」を参照してください。

最近の SaaS の例としては、Google の Chrome ブラウザーもあります。新しいデスクトップとして理想的な環境であるこのブラウザーは、従来の Web ブラウズ・エクスペリエンスに加え、アプリケーションを (ローカルまたはリモートで) 提供することができます (詳細については「参考文献」を参照)。

サービスとしてのプラットフォーム (PaaS)

PaaS は、(一連の物理サーバーで仮想化された) 1 つ以上のサーバー、オペレーティング・システム、そして特定のアプリケーション (Web ベースのアプリケーションの場合は Apache や MySQL など) を丸ごと仮想化したプラットフォームであると表現することができます。これらのプラットフォームには、事前に定義されていて選択できるものもあれば、必要なユーザー固有のアプリケーションがすべて含まれる VM イメージを指定できるものもあります。

PaaS の例として興味深いのは Google App Engine です。このサービスでは Google の極めてスケーラブルなアーキテクチャーに Web アプリケーションをデプロイすることができます。App Engine は、インターネットで参照できる Python アプリケーションのサンドボックスを提供します (今後は他の言語もサポートされる予定です)。また、ユーザーの認証、イメージの操作、そして E メール送信のサポートに加え、データを (Google Query Language (GQL) を使用して) 永続的に保存、管理するための Python API も提供します。基礎となるオペレーティング・システムへのアクセスは、Web アプリケーションが実行されるサンドボックスによって制限されます。App Engine では、アプリケーションで利用できる機能は制限されるものの、有益な Web サービスの構築がサポートされます。詳細については、「参考文献」を参照してください。

注: App Engine では、特定の帯域幅とストレージの制約内であれば、アプリケーションを無料でデプロイすることができます。App Engine で実動 Web サイトを作成する場合には、使用料が課せられます。

PaaS のもう 1 つの例、10gen はクラウド・プラットフォームであるだけでなく、独自のクラウドを作成するために使用できるダウンロード可能なオープンソースのパッケージです。App Engine と同様のソフトウェア・スタックを持つ 10gen は、提供する機能も App Engine と似ていますが、明確な違いがいくつかあります。それは、10gen では Python だけでなく JavaScript および Ruby プログラミング言語でもアプリケーションを開発できることです。このプラットフォームでもサンドボックスの概念を使用してアプリケーションを分離し、多数の (もちろん Linux でビルドされた) コンピューターがそれぞれ固有のアプリケーション・サーバーを使用する、信頼性に優れた環境を実現します。

サービスとしてのインフラストラクチャー (IaaS)

IaaS ではコンピューター・インフラストラクチャーをサービスとして提供します。この層が PaaS と異なる点は、ソフトウェア・スタックなしで仮想ハードウェアを提供することです。ソフトウェア・スタックを提供する代わりに、利用者が 1 つ、または複数の仮想サーバーで呼び出す VM イメージを指定します。IaaS は (物理インフラストラクチャーにアクセスしない) サービスとしてのコンピューティングのなかで、最も自然な形となっています。最もよく知られている商用 IaaS プロバイダーは EC2 (Amazon Elastic Compute Cloud) です。EC2 では、特定の VM (オペレーティング・システムとアプリケーションのセット) を指定してアプリケーションをその VM にデプロイすることも、独自の VM イメージを提供してサーバーで実行させることもできます。料金は、計算時間、使用したストレージ、そして使用ネットワーク帯域幅の分しか発生しません。

Amazon EC2 のオープンソースの実装である Eucalyptus プロジェクト (Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems) は、この商用サービスとインターフェースに互換性があります。EC2 と同様に、Eucalyptus も Linux と Xen を利用してオペレーティング・システムを仮想化します。Eucalyptus はカリフォルニア州立大学サンタ・バーバラ校でクラウド・コンピューティングの調査を目的に開発されました。Eucalyptus はこの大学の Web サイト (「参考文献」を参照) からダウンロードすることも、ある制限の範囲内であれば Eucalyptus Public Cloud で試してみることもできます。

EC2 スタイルの IaaS には、Enomalism クラウド・コンピューティング・プラットフォームもあります。Enomalism は、EC2 に似た機能を備えたクラウド・コンピューティング・フレームワークを提供するオープンソースのプロジェクトです。Enomalism がベースとするのは Linux で、Xen と KVM (Kernel Virtual Machine) の両方をサポートします。ただし、他の純粋な IaaS ソリューションとは違い、Enomalism には TurboGears Web アプリケーション・フレームワークと Python をベースとしたソフトウェア・スタックが用意されています。


その他のクラウド開発

今まで説明した開発だけでなく、クラウド環境で役立つ Linux ベースのオープンソース・パッケージは他にもあります。その 1 つ、Hadoop は PaaS と似ていますが、このオープンソースの Java™ ソフトウェア・フレームワークではネットワークで接続された一連のサーバーで大量のデータセットを操作することに重点を置いています (これは、大規模なデータセットの並列処理を可能にする Google MapReduce から発想を得ています)。そのため、特に Yahoo! をはじめとする Web 検索や広告アプリケーションで活躍しています。Hadoop にはまた、Google アプリケーションを模倣したいくつかのサブプロジェクトもあります。例えば、Google BigTable データベースのような機能を提供する HBase、そして GFS (Google File System) のような機能を提供する HDFS (Hadoop Distributed File System) です。


問題と今後の課題

クラウド・コンピューティングでは明らかに、プライバシーとセキュリティーの 2 つが重要な問題となります。プライバシーは暗号化によって対処できますが、クラウド・コンピューティング・サービスを選択するときには相当な注意が必要です。e-コマースでさえも、Web がまだ成長し始めたばかりの頃には懐疑的な目で見られていました。しかし今では世界中で、年間何兆ドルにも相当する e-コマース・トランザクションが行われています。このように今日の Web を安全にしている技術 (SSL (Secure Sockets Layer) など) はすべて、クラウド・コンピューティングでも利用できるはずです。


さらに詳しく調べてください

クラウド・コンピューティングの急激な増加は、まだ始まったばかりです。それはクラウド・コンピューティングを推し進める力となるであろう Linux でのオープンソースの開発にしても同じことで、開発が開始されてから、それほど時間は経っていません。クラウド・コンピューティングに膨大な投資が行われていることを考えると、集中データ・センターへの復帰という動きがあることは確かです。この近い将来に、興味深い新たな技術とアーキテクチャーが登場することが期待されます。

参考文献

学ぶために

製品や技術を入手するために

  • SaaS のローカルおよび Web サービス・モデルを提供するアプリケーション・サーバーのなかでは、JBoss Application ServerGeronimoWebSphere Application Serverがとりわけよく使用されています。
  • Google App Engine および 10gen ソフトウェア・スタックを試してみてください。PaaS ソリューションを実証するこの 2 つは、仮想オペレーティング・システムをユーザー・アプリケーションのソフトウェア・スタックとともに提供します。
  • 最も注目すべき IaaS ソリューションは Amazon EC2 ですが、EucalyptusEnomalism などのオープンソースのソリューションもあります。IaaS はすぐに VM を実行できる仮想ハードウェア・インフラストラクチャーを提供します。
  • Hadoop は、大量のデータをスケーラブルかつ効率的に処理できるソフトウェア・スタックです。プログラミング・ベースのプラットフォームに併せ、分散ファイル・システムとアプリケーションを提供します。
  • developerWorks から直接ダウンロードできる IBM ソフトウェアの試用版を使用して、Linux で次の開発プロジェクトを構築してください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux, WebSphere
ArticleID=343437
ArticleTitle=Linux によるクラウド・コンピューティング
publish-date=02112009