Eclipse Virgoプロジェクトに対して昨日,最後の猶予が与えられた。Eclipse Virgoがお蔵入りとなる事態を避けるべく,数人が名乗りを挙げてくれたのだ。SpringSource dm Serverを起源とする同プロジェクトを,Eclipseへの寄贈時からすべて運営してきたのはGlyn Normington氏である。しかしInfoQが8月に伝えたように,氏がプロジェクトからの降板を余儀なくされたことから,プロジェクトの中断は不可避と思われていた。幸いにも何人かの人たちがプロジェクト継続に関心を示して,主要なコンポーネントのメンテナンスやプロジェクト運営への協力を申し出てくれている。
InfoQではEclipse Virgoについて,氏に話を聞くことにした。最初の質問はプロジェクトの生い立ちと,氏がEclipseに参加した経緯に関してのものだ:
Normington: Virgoプロジェクトは2007年の終わり頃,SpringSource Application Platformとして開始されました。その後,Spring Source dm Serverと改名されています。プロジェクトの目標は,よりよいOSGiプラットフォームの提供にありました。モジュール化されていて拡張性があり,JavaEEアプリケーションが簡単に移行できるものを目指していたのです。バージョン1.0を2008年末に,バージョン2.0を続く2009年末にリリースしました。
プロジェクトをEclipseに移行すると決めたのは,他のベンダ,とりわけEclipseベースのツールを開発しているベンダによる採用と連携を促進するためです。移行の発表は2010年1月でしたが,その年の終わりにはベストRTアプリケーションとして,dm ServerがEclipse Community Awardを獲得しています。それ以来,私たちは,多くのベンダや個人と協力していますし,技術力を持ったコミッタからのコントリビューションも増えました。
InfoQ: IT業界で現在,Virgoを使っているのはどこでしょう?
Normington:
- SAPのHANA Cloud PaaSプラットフォームはJavaサーバとしてVirgoを使用しています。このプラットフォームはJava EE 6 Web Profile TCKで認定済みです。SAPのコミッタたちは,VirgoのランタイムやEclipse Libraプロジェクトを通じて,ツーリングに多くの貢献をしてくれています。
- VMwareは,同社のvSphere製品でWebサーバとしてVirgoを採用しています。
- CME Groupには現在,Virgo上で動作するアプリケーションが3つあります。近々4番目が登場します。
- Croatian TelecomではVirgoを使用して,エンドユーザ用と内部専用のアプリケーションをいくつか提供しています。
- Inforでは,VirgoカーネルをベースとしたIONという統合プロダクトを提供しています。
- Webアプリケーション開発用プラットフォームのKonektiでは,WebサーバとしてVirgoを使用しています。
- さらにはTINOSリサーチプロジェクトでも,単一のJVM内で実験用ネットワークスタックを相互に分離する手段として,Virgoが使用されています。
InfoQ: Virgoにはどのようなパッケージがあって,それぞれどのようなユーザ/アプリケーション/ターゲット層を対象としているのでしょうか?
Normington: VirgoのベースとなっているのはVirgo Nanoという,非常に小さなOSGiマイクロカーネルです。これはElipse Equinox(Nanoのベースになっています)を直接使うよりも,もっとバランスの取れたDIYショップ的なものを目指しています。Nanoには広範な診断機能やフル装備のWeb管理コンソールがありますし,さらにJMXインターフェースやssh/telnetコンソールも備えています。ホットデプロイメントもサポートしています。バンドルを 'ピックアップ' ディレクトリに投入するだけで,Declarative Serviceが "マイクロサービス" を介して通信を行い,それを有効にしてくれます。
Virgo Kernelパッケージは,Nanoのマルチバンドルなモジュラリティ構造を実現しています。ユーザのアプリケーションを,カーネル自身とは別の "ユーザリージョン" 内に分離すると同時に,OSGi BlueprintサービスとSpringプログラミングモデルを提供しているのです。
それから,3つのサーバパッケージがあります。Virgo Nano Web はApache TomcatをベースとするNano用のWebサーバです。Virgo Server for Apache Tomcat も同じく,Apache TomcatベースのWebサーバをVirgo Kernelに提供しています。Apache TomcatよりもJettyを希望するユーザには,Kernel用のVirgo Jetty Serverがあります。
Apache Tomcat上で動作する "Snaps"フレームワークも同梱されています。Snapsでは,Webアプリケーションをモジュール化することができます。個々のバンドルがアプリケーションのURL空間において,個別のサブポイントのコンテントとして動作するのです。
総論として,Virgoは充実した機能と完成度を備えています。モジュール化されたWebサーバとしても,あるいはランタイムカーネルとしても,さまざまな種類のアプリケーションで利用することができます。
InfoQ: Springも合わせてに使用する必要はありますか?
Normington: いいえ,Virgo NanoとVirgo Nano WebはSpringから独立しています。同じように,カーネルベースのVirgoパッケージ用のアプリケーションにも,Springを使う必要はありません。どちらかと言えば,例えば "マイクロサービス"プログラムモデルとして,OSGi Blueprint Serviceを使うことになるかも知れません。
InfoQ: 他のバンドル,例えばApache Karafと比べた場合のVirgoの特徴は何でしょうか?
Normington: 大まかに言ってVirgo Kernelは,Apache Karafと同じ程度の機能を備えています。Gogo シェルのように共通のコンポーネントもあります。
InfoQ: あなたはVirgoプロジェクトのリーダを退かれるのですが,コマーシャルユーザとして,今後Virgoをフォローアップする意思はありますか?
Normington:何人かのユーザから,Virgoを継続してほしいという声を聞いています。この数ヶ月間,1週間に半日程度は,プロジェクトの進行維持やユーザの問合せ対応などに費やしていたのではないかと思います。その役割を進んで担おうという人たちを,今後もずっと支援していくつもりです。プロジェクトにはスキルを持ったコミッタがいますので,それほど難しい仕事ではありません。
InfoQ: なぜ辞めるのですか?
Normington: 私は現在,PivotalでPaaSの開発をしています。VirgoをPaaS上で動作させることは不可能ではありません。ですが,適切な粒度にモジュール化されたOSGiアプリケーションが備える,個々のバンドルを動的に起動および停止する機能と,単一の"プッシュ"操作でアプリケーションをローンチするPaaSとでは,相性がよくありません。それにPivotalはある意味でベンチャ企業的な企業経営をしていますから,Virgoに時間を割く余裕がないのです。
InfoQ: 今後はどのようなことを行う予定ですか?
Normington: 現在はCloud FoundryオープンソースPaaSに関わっています。Javaアプリケーションを実行するための "buildpacks" を開発しているのです。Rubyで記述されているのですが,なかなか面白いですよ。
InfoQ: VirgoとEclipseLinkのテストを行うためにOracleがTCKを提供していますが,認証作業は誰かが継続しているのでしょうか。あるいは次のリーダが引き継ぐまで中断しているのですか?
Normington: 新しいプロジェクトリーダが決まるまで保留中です。新リーダと所属する会社に必要な,法務上の手続きがいくつかあるからです。ただし,SAPがすでにHANA Cloudプラットフォームで認証を獲得していますから,技術的な問題は特にないはずです。
InfoQ: SpringSource Enterprise Bundle Repositoryの方はどうなっていますか?
Normington: 私たちはEclipse Bundle Recipesプロジェクトのローンチを支援しています。このプロジェクトは現在,IBMが中心となって,コミュニティベースの高品質なOSGiバンドルの提供を目標にしています。このプロジェクトに,SpringSource Enterprise Bundle Repositoryからマニフェストのテンプレートを提供しました。誰でも使用できるように公開されています。SpringSource Enterprise Bundle Repositoryのコンテントは現在は凍結されていますが,少なくとも今後1年間は利用可能です。