目次


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

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

Comments

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

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

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

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

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

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

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

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

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

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

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

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

このスタックでインフラストラクチャーの上にあるサービス・レベルはプラットフォーム (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 に対するもう 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 でのオープンソースの開発にしても同じことで、開発が開始されてから、それほど時間は経っていません。クラウド・コンピューティングに膨大な投資が行われていることを考えると、集中データ・センターへの復帰という動きがあることは確かです。この近い将来に、興味深い新たな技術とアーキテクチャーが登場することが期待されます。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

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