photo by onesevenone photo by Garry'


Digital Gadget #115

雲の上のコンピュータ -- クラウドコンピューティングの浸透


■ クラウドコンピューティングの利点と問題点

クラウドコンピューティングとはネットワークの向こう側にサービスを提供するサーバー群が 存在し、ユーザーからはサーバが何処にある、何台あるかなどと意識せずに利用できるサービス形態です。 もともとはネットワーク構成を図示するときにインターネット網を モクモクと広がる「雲(クラウド)」で描くところに由来しています。 ユーティリティコンピューティングと呼ばれる、コンピュータリソースを水道やガスのような 使った分だけ料金を支払って使われる場合も多いサービス形態です。

近年 Google を中心として広まってきた Webメールや 一連の Web 上で使えるオフィスツールなどのサービスや シンプルで本体には基本機能しか持たない Apple の MacBook Air なども 大きな意味でクラウドコンピューティングを具現化したものと言って良いでしょう。 またクラウドコンピューティング向けのサービスが安価に借りられるようになったおかげで、 大学での研究者や一般の研究者が大規模なリソースを獲得する方法としても現実性が出てきました。 ただし、いきなり巨大なスケール感で Web アプリケーションを開発することがなかなかできないことも 懸案です。今扱っている 1000倍〜 100万倍のデータ量やユーザ数を扱うアプリケーションの仕組みを 考えろといってもなかなか難しいものです。

これからはクラウドコンピューティング的なサービスの企画や設計ができる技能が求められるでしょう。 Google と IBM が大学向けのクラウドコンピューティングを推進する機関として Academic Cluster Computing Initiative を設立し、技術面、機材面でも後押ししています。

クラウドコンピューティングの利点には以下のようなものがあります。

  • 初期投資を極力少なく、スケーラブルなサービスを開始することができる。
  • 開発者側、サービス提供者にとってサーバのメンテナンスとは無縁
  • 急に規模を拡大する必要になった場合、費用以外は比較的容易に増やすことができる。
  • 専用サーバーのレンタルと比べると安価に必要な分だけ借りることができる(又は無料で使える)
  • サービス開始時、開発時のサーバーセットアップ作業の面倒さが無い。
  • Web 上の様々なサービスを組み合わせて利用できる。
  • 必要に応じて資源を増減でき、開発者が行う構築作業が少なくてすむ。
  • サービス提供者に、機器運用・管理・バックアップの手間がかからない。
  • 多くの一般的な共通のソフトウェアの組みあわせによって構成されている。

一方クラウドコンピューティングの問題点として懸念されているのは以下のとおりです。

  • ダウンタイムの対応が困難。
  • 24時間365日、100% 動き続けなければならない重要なアプリケーションの場合はまだまだ運用が難しい。
  • OS環境、ソフトウェア環境など、自由なものを選ぶことが出来ず、サービス側の環境に合わせなければいけない
  • 細かいチューニングや、独自のカスタマイズなどが許されてない場合が多い
  • 開発者にとって、全てをネットワークごしに行わなければならない即時性の無さ
  • 従来の Web アプリケーション開発者が数千台、数万台といった巨大なサーバーリソースに慣れていないこと

クラウドコンピューティングで提供されるコンピューティングリソースは ソフトウェア・プラットフォーム・ハードウェア・データベースの大きく4種類に分けられます。 広い意味で捉えると独自のソーシャルネットワークをユーザごとに構築できる Ning (http://www.ning.com/ )のようなサービスも、 クラウドコンピューティングの仲間に入るかもしれません。

 SaaS(Software as a Service)
 PaaS (Platform as a Service)
 HaaS(Hardware as a Service)
 DaaS(Database as a Service)

それではこれらのクラウドコンピューティング周辺のサービスで 現在サービスが提供されているものをいくつか紹介していきましょう。


■ Google App Engine

http://code.google.com/appengine/

Google が提供する Web アプリケーション実行環境です。 現在は Python 言語のみに対応しています。プレビュー期間のため、利用者数制限が行われていますが、 2008年5月28日から開催される Google I/O というイベントに合わせて制限が解除されるもようです。 現在は無料ですが、本稼働が始まると CPU数、ストレージの量、 ネットワーク利用量に応じて課金されるもようです。 このサービスは Google がインフラとしてアプリケーション環境を提供するとともに、 有用なアプリケーションを Google が買収した際に、 Google 本流のサービスにすぐに統合しやすいという Google 側のメリットも考えられているのかもしれません。 また、Google App Engine 向けに開発環境を提供する企業や、専用のツールをいくつか登場してきています。


■ Amazon EC2 (Amazon Elastic Compute Cloud)

http://aws.amazon.com/ec2

Linux の仮想サーバ環境を提供するもの。安価ではあるがサービスの利用は有料です。 インスタンスの実行時間、ネットワークバンド幅、ストレージ量に応じて課金されます。 インスタンスを立ち上げていない時間は無料のため、 必要に応じて瞬間的に大量の処理を行う場合にも向いています。 仮想化された Linux, Windows, OpenSolaris が活用できます。 旧来、Google に比べ、Amazon が運用している技術はなかなか表に出てきませんでした。 Amazon を支えている技術と同じ技術で提供されていると考えると信頼感がいくぶん増すかもしれません。 EC2 サービスを自動的にスケールする技術として Scalr がオープンソース化されました。


■ Amazon S3 (Amazon Simple Storage Service)

http://aws.amazon.com/s3

Amazon S3 は Web サービスインタフェースを使って利用する開発者向けのオンラインストレージサービスです。 Webサービスインタフェースには RESTとSOAP用が用意されています。 ストレージ容量とデータ転送量によって料金が請求され、格安で利用できます。 99.99%の可用性を誇りますが、以前サイトがダウンした際は、数多くのS3利用サービスに影響を及ぼしました。 大量・大規模のデータをどうやって保存するのか頭を悩ませること無しに、 スケーラビリティのあるサービスの開発に注力できるのが S3 サービスの特徴です。 また Amazon EC2 と Amazon S3 を補完するサービスとして Amazon SimpleDB (http://www.amazon.com/b?ie=UTF8&node=342335011) が提供されています。


■ Microsoft SQL Server Data Services

http://www.microsoft.com/sql/dataservices/default.mspx

SQL Server Data Services はデータベース的なオンラインストレージサービスです。 Microsoft Sync Framework, ADO.NET, REST, SOAP による Web サービスとしての利用が可能です。


■ Microsoft Mesh Live

http://www.mesh.com/

アプリケーションの協調動作を行うためのプラットフォーム。オンライン上に各自のデスクトップ領域を作ることができる。 単にファイル同期するだけのものではなく、デバイス間の同期のためのフレームワークが提供されたものと考えられる。 Google Gears のようなオンラインのアプリケーションをオフラインで動かす技術の逆とも言えるもので、 オフラインのアプリケーションをオンライン化して利用して活用するための枠組み。


■ Force.com

http://www.salesforce.com/platform/

オンラインでのサービス開発環境。オンラインデータベース環境の構築や、Web サービスを組み合わせることなどが可能。 アプリケーションや、端末機器の違いに応じてユーザインタフェースを切り替える仕組みを持つことが特徴。 独自のオンデマンドプログラミング言語 Apex を利用する。


■ Apache Hadoop

http://hadoop.apache.org/core/

Apache Hadoop はクラウドコンピューティングのベースとなる分散プラットフォーム技術。 Google の MapReduce と同様のものであるが、論文以外の内容が公開されていないため、 一般に利用しようと考えると MapReduce 機能実装をも含む Hadoop になります。 Google の MapReduce 環境用プログラミング言語 sawzall と同様に Hadoop 向け並列プログラミング環境として Pig (http://incubator.apache.org/pig/) が提供されています。 また Hadoop, Pig とともに Yahoo! が積極的に支援を行っています。


■ Project Hydrazine

http://www.sun.com/software/products/hydrazine/index.jsp

Project Hydrazine は Sun Microsystems が提供するクラウドコンピューティング環境。 旧来の環境 Photoshop や NetBeans などのプラグインが用意され、 素材を持ってくることや、ワークフローに組み込むことが出来るそうだが詳細はまだわからない。


■ Mozilla Weave

https://services.mozilla.com/

Web ブラウザ Firefox を提供する Mozilla の研究機関 Mozilla Labs からの技術。 ブックマークを初めとして各種履歴やプログラムの設定、 カスタマイズ情報などをオンラインに保存し、Firefox のアカウントから操作・管理できるようにする仕組み。


■ Nirvanix SDN

http://www.nirvanix.com/platform.aspx

クラウドコンピューティング環境におけるオンラインストレージサービス。 利用者の多いノードにコピーを集中させたり、地域ごとに分散させることができる。 CDN (Content Delivery Networks) の逆を行うストレージ版だと考えられる。


■ Cleversafe

http://www.cleversafe.org/

オープンソースの分散ストレージ技術。広域のストレージグリッドとして展開するとともに、 それらのストレージをアプリケーションからマウントできるファイルシステムとして扱える。


■ Mosso

http://www.mosso.com/

自動的に負荷分散する仕組みに長けたアプリケーションのホスティングサービス。 PHP, Ruby, .NET, Perl, Python の言語が使える。Java には現在対応していない。 若干利用料が高いが、Web アプリケーションを手軽に分散・運用するには適しているであろう。


■ Joyent

http://joyent.com/

世界的に広がるソーシャルネットワーク facebook 向けのアプリケーションや、 Google の提唱する OpenSocial を高速化するためのサービスを提供している。


■ 未来のコンピューティングサービス

クラウドコンピューティングの重要な特性としてよく言われれるのが以下の9つの項目です。 [ 参照元:Joyent's weblog (http://www.joyeur.com/) ]

  1. 仮想化レイヤーネットワークの安定性
  2. インスタンスの作成、削除、クローニングの為の API
  3. アプリケーション層の相互運用性
  4. ステート層の相互運用性
  5. アプリケーションサービス(例:メール環境、支払いのための環境)
  6. 自動スケール機能(デプロイ後は忘れていいように)
  7. ハードウェアの負荷分散
  8. ストレージサービス。できれば独自の API 出はないオープンなプロトコルのもの。
  9. ルート権限は必要に応じて

大型コンピュータの黎明期、 コンピュータは 5台しかない売れないと思われていました。  「コンピュータはせいぜい5台分の市場しかないだろう」 という逸話が残されています。 (ただし後日、実際にはこのような発言は無かったと確認されているようです)

当時は真剣に、現在は笑いとともに紹介される台詞ですが、 現在再び実は本質をついている発言であるとも言えます。 現在のコンピュータが街中に氾濫している状況を見ると 笑い飛ばされるような発言かもしれませんが、 よくよく考えてみると、近い将来のことを言い得ているのかもしれません。 Yahoo Research の Prabhakar Raghavan 氏の発言では地球上のコンピューティングサービスは Amazon, Google, IBM, Microsoft, Yahoo の 5社に集約されるとコメントしています。 あながち世界に5台のコンピュータというのは嘘ではなかったかもしれません。

日本の片隅にあるノートパソコン一台から、 世界中を相手にする巨大な Web アプリケーションを開発することも無理では無いのだと思えると無限の可能性が感じられます。 CPU の進化のスピードほどネットワークのスピードは劇的には速くなってはいませんが、 世の中は確実に雲の上のコンピュータ(クラウドコンピューティング)に向かっている気がします。



Copyright © 1998-2009 by Yukio Andoh 安藤幸央 yukio.andoh@gmail.com