このページの本文へ

クラウド時代に向けたオラクルのFusion Middleware製品戦略

JavaアプリケーションサーバーにOSは必要ない

2010年08月11日 09時00分更新

文● 渡邉利和

  • この記事をはてなブックマークに追加
  • 本文印刷

8月10日、日本オラクルはミドルウェア製品群に「Oracle JRockit Virtual Edition」と「Oracle Virtual Assembly Builder」の2つの新製品を追加、インメモリ・データグリッド「Oracle Coherence」の新バージョンも発表した。

自律型/高密度のクラウド環境を

Fusion Middleware事業統括本部 ビジネス推進本部長の龍野 智幸氏

 まず登壇した同社のFusion Middleware事業統括本部 ビジネス推進本部長の龍野 智幸氏は、同社のクラウドに対する取り組みの基本的な考え方について紹介した。「パブリッククラウドのメリットを企業内で運用されてきた基幹系システムに取り入れる」という点はこれまでも一貫して同社が主張しているところだ。また、「仮想化はリソースを分割する手法で、ハードウェアリソースの効率化につながり、IT部門の利便性を向上させる」「グリッドは複数のリソースを集約して1つに見せる技術で、可用性を高めてユーザー部門の利便性を高める」という点も従来から同社が主張していることだ。そして、企業システムでは「仮想化だけではなく、グリッドも重要」であり、「グリッド技術についてはオラクルに強みがある」という主張につながっていく論旨も従来通りではあるのだが、今回新たにキーワードとして登場したのが「自律型」「高密度」「スケールアウト」である。同氏は、「仮想化とグリッドを組み合わせることで、自律型、高密度のクラウドコンピューティングが実現できる」とした。

企業内クラウドに必要な要件と製品

 さらに同氏は、同日発表されたJRockit Virtual Edition(VE)に触れ、「OSをなくしていく」と語った。これは、JRockit VEがゲストOSを不要とし、同社が提供するハイパーバイザ「Oracle VM」上で直接稼働することを受けてのものだ。Javaアプリケーションの実行環境では、そもそもJavaの実行環境に不可欠の要素であるJVM(Java Virtual Machine)がソフトウェアで実装された仮想ハードウェアであり、オーバーヘッドを懸念する声があることに加え、さらにこの環境全体をサーバ仮想化環境上で実行すると、仮想化されたレイヤをいくつも積み上げることになり、無駄が多いという点を踏まえたものだ。同氏は「OSの存在を否定するものではない」としつつも、「Javaアプリケーションの実行にはOSのフル機能は必要ない」という。

ソフトウェアスタックのオラクル流整理

 続いて登壇した同社のFusion Middleware事業統括本部 ビジネス推進本部 シニアマネジャーの杉 達也氏は、同日発表された3製品の詳細を紹介した。

日本オラクル Fusion Middleware事業統括本部 ビジネス推進本部 シニアマネジャー 杉 達也氏

 まずJRockitは、実行速度が高速なことで定評のあったBEA版のJava実行環境で、BEAの買収によってオラクルの製品に加わったものだ。今回発表されたJRockit VEは、JRockitに仮想化環境での利用を前提とした「マイクロカーネル」を追加することで、ハイパーバイザであるOracle VM上で直接動作可能としたもの。

 従来の構成では、Javaアプリケーションからの要求を受けたJRockitがOSの機能を呼び出すことで処理していたネットワークやファイルシステム、プロセススケジューラといった機能や、ハードウェアとのインターフェイスとなるデバイスドライバに相当する機能をJRockit VEの内部に「マイクロカーネル」として埋め込んでいる。マイクロカーネル以外のJRockit本来の部分は従来と何も変更されてはいないとのことで、JavaアプリケーションサーバーやJavaアプリケーション側では何の変更も必要ない。

OSを排除したWebLogic Virtualization

JRocket Virtual EditionのマイクロカーネルがOSの役割を果たす

 サーバー仮想化のプラットフォームであるOracle VM上にまずゲストOSをインストールし、さらにJRockitを稼働させた場合と、ゲストOSを省略してJRockit VEを直接Oracle VE上で稼働させた場合との比較では、32%の性能向上が見られたという。

 次に、「Oracle Virtual Assembly Builder」は、端的に表現すれば3階層のWebシステム丸ごとを対象としたP2Vコンバージョンツールにプロビジョニング機能を加えたもの、ということになるだろうか。Webサーバー、アプリケーションサーバー、データベースの3階層それぞれについて仮想化し、各要素の構成を指定すると、その通りの構成でデプロイできる。単純なP2V変換だけではなく、各コンポーネントごとに変化しない要素と、毎回変更すべきプロパティとを識別できる点が特徴だ。たとえば、Webサーバーの場合はIPアドレスやポート番号といった要素は変更すべきプロパティとしてカタログ化される。冗長化のための並列配置やクラスタリングの指定などをGUI画面で指定し、プロパティの指定を行なうことで複雑なシステムを一括で展開できる。

マルチ階層の構成作業を簡素化する「Oracle Virtual Assembly Builder」

 最後に「Oracle Coherence 3.6」は、従来の3.5からのバージョンアップとなる。運用しやすさに配慮して、SQL風のクエリインターフェイスが充実した点が最大のポイントとなる。Coherenceは、分散型キャッシュとしてデータベースの前段に置かれ、データベースアクセスを高速化するとともに、データベースの構成の詳細を隠ぺいすることができる。分散型データベースを統合して単一のインターフェイスを提供することでグリッド化することが可能だ。

インメモリ・データグリッド「Oracle Coherence」の概要

3.6での新機能ではSQL風のクエリインターフェイス搭載

 JRockit VEを含む「Oracle WebLogic Suite Virtualization Option」および「Oracle Virtual Assembly Builder」の正式提供開始は現時点ではまだ未発表で、現在はパートナーおよび一部の顧客に対して限定的に提供開始している状況だという。これに関して杉氏は、「9月に開催されるOracle Open Worldで何らかの動きがある」ことを示唆したが、現時点では正式発売予定や価格に関する詳細は不明。また、「Oracle Coherence 3.6」は9月に正式リリースの予定で、価格は現行のOracle Coherence 3.5と同額の予定となっている。

OSのオーバーヘッドとは?

 今回の発表で特に興味深いのは、やはりJRockit VEだろう。この製品は、BEAが買収前に開発した“BEA LiquidVM”の後継と位置づけられ、Oracleの独創的なアイデアとは言い難いが、一方でオラクルはサン・マイクロシステムズを買収し、商用UNIXとして高い評価を得ているSolarisを自社製品として獲得しているため、「OS不要」というメッセージに特に注目が集まった印象があった。この点に関して龍野氏は「OSの存在を否定するものではない」とし、あくまでもJavaアプリケーションサーバーにとっては、Java実行環境で標準的に利用できる機能があれば、それ以外のOS機能は不要であり、であればなくしてしまった方がパフォーマンスやセキュリティの面で有利になる、という実用的な判断であることを強調している。

 仮想化の利用が本格化するにすれ、OSのオーバーヘッドの問題も時折話題に上るようになってきている。実際、ゲストOSをインストールするのは単純にアプリケーションの実行に必要だからだが、物理マシン上に複数の仮想サーバーを構築している場合、複数のゲストOSが稼働していることになり、無駄なのでは、というのは誰しも直感的に理解するところだろう。必要なのはアプリケーションが利用しているAPIの部分だけだと考えれば、ゲストOSからその部分だけを取りだして仮想サーバー上に配置できれば効率的ではあるが、LinuxなどのオープンソースOSならまだしも、そう簡単に実現できる話でもない。

 一方、Javaの場合はJVMとJava APIの区別が明瞭であり、かつJVMはハードウェアとOSを仮想化したようなレイヤとなっている。一般的なJVMでは、OSの存在を前提として、ハードウェアに対して直接アクセスするのではなくOSを介して物理ハードウェアを利用しているが、この部分を修正してOSではなくハイパーバイザに対してアクセスすれば、OSを不要とできる。厳密には、単にOSがなくなったのではなく、必要な機能がJVM側に取り込まれた結果JVMが大きくなっているのだが、それでも現在の大規模化したOSが丸ごと動作している状態に比べれば構成が単純化され、パフォーマンスも向上するだろう。

 かつて、JVMをOS上に載せるのではなく、物理ハードウェア上に直接載せれば効率が向上するはず、という発想でJavaOSというコンセプトが提案されたが、残念ながら商業的には普及しなかった。今回のJRockit VEは、仮想化時代のJavaOS、と見ることもできるだろう。OSはそもそもハードウェアを抽象化することが重要な役割だし、Java実行環境は、ハードウェアやOSを丸ごと抽象化し、プラットフォームを問わずJavaアプリケーションが共通に動作するようにした。仮想化のためのハイパーバイザもハードウェアを抽象化している。このように、ソフトウェアスタックの各層がそれぞれ独自に抽象化/仮想化を実装した結果、利便性が向上する代わりに機能が重複して無駄が生じているのが現在の仮想化の状況だ。このスタックを再整理し、より合理的な形に再構築できればメリットは大きい。JRockit VEは、そうした方向に向けた取り組みの1つとして、今後の展開に期待が持てる。

■関連サイト

カテゴリートップへ