Topics
Enterprise Architecture
Daniel Rubio著
2008年1月23日(翻訳記事2008年2月29日)
1999年に設立されたOSGiアライアンスは、組み込みデバイス分野で初めてJava市場に参入しました。数年でJavaデスクトップ プロジェクトの事業範囲を拡大し、EclipseオープンソースIDEプロジェクトのモジュール化と拡張性をサポートする重要な基盤を築き上げました。現 在OSGiは、サービス時代の到来に合わせて「サーバサイド」という最新のJavaフロンティアに取り組んでいます。
技術業界の他の多くのアライアンスと同様に、OSGiのベストプラクティスと開発ポリシーは多くのメンバー企業のコンセンサスによって決まります。 OSGiのサーバサイドへの参入に伴い、大手Javaベンダの多くがOSGiの青写真に合わせたSOA製品ラインのシフトを既に開始しています。BEA も、microService Architecture(mSA)のバックプレーンコンポーネントをOSGiに依存しています。
この記事では、OSGiがJava/SOAサーバサイドイニシアチブを開始した理由について説明し、JavaベンダがSOAソリューションを OSGiベースにシフトした場合の主な利点と制約について触れ、開発者やアーキテクトの視点からOSGiと連携した場合に得られる具体的なメリットについ て詳しく紹介します。また、プラットフォームという大きな枠組みで見た場合のOSGiのJavaに対する将来的な役割についても考察します。
OSGiの方針のほとんどがスマートフォンからIDE(統合開発環境)まであらゆるシステムに適用されるに至っているため、OSGiのすべての側面 を簡潔にまとめることは困難です。しかし、以下に挙げる主なコンセプトから、JavaエコシステムにおけるOSGiの全体的な位置付けを把握することがで きます。
この用語は、OSGiをより大きな視野で理解するためのヒントとなりますが、これも氷山の一角にすぎません。ここからは、OSGiがサーバサイドの世界に何をもたらすかについて説明します。
サーバサイドのJava市場における現在の状況を見ると、企業においてサービス指向アーキテクチャ(SOA)の有効化へのシフトが進んでいることが 分かります。このシフトを劇的な変化と捉えるか、自然発生的な進化の段階と捉えるかは賛否両論ありますが、SOAがアプリケーションの開発および展開に新 たな考え方を持ち込んだことは否定できないでしょう。この結果、こうしたアーキテクチャを支えるためのインフラストラクチャも同様に再検討されることにな りました。
SOAを有効にするために企業で使用されているインフラストラクチャを見ると、Java EEコンテナと軽量なフレームワーク、さらにこの目的で開発されたその他のミドルウェアが混在していることが分かります。このインフラストラクチャ自体は 悪くありませんが、こうしたソフトウェアの展開方法がモノシリック(一枚岩的)でオール オア ナッシング(100%できるかまったくできないか)式のアプローチを生み出しています。そして、こうしたアプローチがSOAの俊敏性と再利用性という特性 を部分的に妨げています。
ほとんどのJavaアプリケーションは容易に個別管理が可能です。実質的な問題は、単純に見えるこうしたピースを他のJavaパーツとともに実運用 環境や企業内のサービス指向「クラウド」に配置したときに初めて発生します。このようなシナリオでエンタープライズJavaミドルウェアとJVMが稼動す るのは、前述のオール オア ナッシング式のアプローチに則っているからであり、結果としていくつかの問題が発生します。
こうした問題の共通の解決策と考えられるのが 動的ローディングです。これによりアプリケーションの構成要素をすばやく判断できる ので、リソース消費を正常な動作に最低限必要なピースにのみ制限できます。OSGiは慢性的なリソース不足に悩まされている埋め込み市場で実績を積んでき たことからも分かるように、必要に応じてモジュールのインストール、開始、停止、更新、およびアンインストールを行える非常に効率的な方法を確実に提供す ることができます。
OSGiはこの手法により、こうした動的ローディングやバージョン管理機能に欠けているJVMと、依存関係が複雑なために処理が困難な重量級の Javaエンタープライズアプリケーションの間で優れた共生関係を構築します。BEAのmicroService Architectureは、バックプレーンコンポーネントをOSGiに依存しています。つまり、BEAの製品ラインはさまざまなOSGiバンドルを同種 環境で使用しています。このため、各種パーツ間のインタフェースが効果的に機能し、BEA製品の全ラインナップを展開したときに発生する可能性のあるバー ジョン管理とクラスローディングの競合を防ぐことができます。
ここまでの説明で、OSGiを使用するメリットが少しお分かりになったと思いますが、OSGiが解決しようとしていることを把握するにはさらに鳥瞰 的な見方が必要です。次のセクションでは、OSGiを支える稼動部分の構成要素、すなわち環境とそれに対応するバンドルについて見ていきましょう。