2011年2月25日金曜日

jcloudsを採用したGigaSpaces

クラウド市場にあって、GigaSpacesのポジションはユニークだ。通常のクラウドプロバイダーは自社データセンターの余力などを用いてクラウド機能を提供する。しかし、GigaSpacesの本来の発想は、パブリックなサービスとして展開するクラウドプロバイダーと競合するのではなく、OSやミドルウェア、アプリなど多層ソフトウェアスタックで構成される大規模ITシステムの硬直化を解消するためのものである。その核となるのがJavaSpacesだ。

◆ JavaSpacesとは何か
JavaSpacesは複数のJVM(Java Virtual Machine)上にあるオブジェクト(データ)を共有するための仕組みとしてJCPで制定された。これにより個々のオブジェクトはどのJVM上にあろうとも(即ち、どのサーバー上でも)システム内で自由にアクセスが出来る。この自由さは、配下のハードウェアやOSを意識しないJavaと共にクラウドでは重要な要素となる。JavaSpacesではこのオブジェクトが存在するメモリー空間を“スペース”と呼ぶ。GagaSpacesはこのJavaSpacesを実装し、さらに処理ロジックまで推し進め、データ(オブジェクト)と処理を同じ“スペース”内に共存させるアーキテクチャーSBA(Space Based Architecture)を考え出した。
企業のITシステムは通常何層かのスタックされたソフトウェアからなるが、SBAではこれら積み重ねた層をケーキを切るように縦割りにしたプロセシングユニットを横に並べる。この構造によって、必要に応じユニットを追加してスケールアウトを保証する。

◆ GigaSpaces XAP
こうした設計方針のもとで開発されたアプリケーションサーバーがXAP(eXtreme Application Platform)だ。XAPは企業向けの新しいアプリケーションサーバーとして2000年の設立以来、ユニークな地位を築いてきた。XAPは多様なアプリケーションを走らせるだけでなく、システムをダイナミックに構成することができる。この特徴を生かしてグローバルな大企業に浸透を図ってきた。そしてクラウド時代が到来した。2008年6月、XAPのこれまでの企業向け販売だけでなく、AmazonのAWS Solution ProviderとしてEC2上でXAPをリリースした。

最新版(8.0)ではXAPをより汎用性のあるクラウドPaaSとするため、Multi-Tenant Elastic Deployment Frameを採用し、さらにMulti-Cloud Adaptorを組み込んだ。
これによって、未仮想化のオンプレミスでもプライベートクラウドでも、さらにはパブリック上でも稼働が可能となった。

◆ jcloudsプロジェクト
XAP 8.0の要となるMulti-Cloud Adaptorは、多様なクラウドプロバイダーの提供するサービスを抽象化するインターフェースだ。このため採用したのがjcloudsである。jcloudsはオープンソースのクラウド向けライブラリーで、AWS、CloudSigma、Eucalyptus、GoGrid、Google App Engine、IBM Smart Business Development & Test Cloud、Rackspace、vCloud(BlueLock、Terremark)、Windows Azureなどに対応。プロジェクトを立ち上げたのはAdrian Cole氏だ。彼は16才からコードを書き始め、数年前に大規模開発のJavaに携わった。それらの経験の全てを注ぎ込んで、jcloudsを2009年から立ち上げた。


---------------------------
GigaSpacesとjcloudsの動きには、何か共通するものを感じる。
新しいITの世界を切り開こうとする力だ。置かれた環境や現状に臆することなく、定めた目標に向かって世界を変えて行こうというエネルギーである。今日のITを見渡せば、殆どのアプリケーションサーバーがJava EE仕様であるのに対し、XAPはJavaSpaces仕様だ。同社はこの仕様を実装している唯一のベンダーだと言っても良い。前述のように、JavaSpacesではプロセシングユニットを横に並べてスケールアウトする。これは並列処理の世界だ。この技術を遡ればTuple Spaceにたどりつく。この流れはJavaSpaces
だけでなく、LispやPython、Rubyなどにも引き継がれている。
もうひとつのjcloudsもオープンソースでありながら、どのような組織にも属することなく、Adrian Cole氏は黙々と開発を続けてきた。jcloudsはクラウドの未標準化やベンダーのエゴを全て抽象化する。このためにはニュートラルであらねばならない。だから、自分の仕事だと決めていたという。