InfoQ

News

Infinispanインタビュー

作者 Mark Little , 翻訳者 脇坂 茂明 投稿日 2009年6月4日 午後3時8分

コミュニティ
Java,
SOA
トピック
REST,
クラウドコンピューティング,
クラスタリング&キャッシング

原文(投稿日:2009/5/20)へのリンク

このインタビューでは、JBoss CacheInfinispanプロジェクトをリードしているManik Surtani氏 (以下MS)と話をします。

InfoQ: まず、簡単にいうとInfinispanとは何でしょうか?

MS: Infinispanはオープンソースデータグリッドプラットフォームです。  それはシンプルなデータ構造で、オブジェクトを保存する - キャッシュ - を展開します。  Infinspanはローカルモードで動作しますが、実データはクラスタ化してキャッシュする分散モードにおくこともできます、そして、大きなヒープメモリを展開することになります。  これは決まった数の各エントリのレプリカを分散させるシンプルなレプリケーションより強力で、 - サーバダウンからの回復力を備え - 各エントリを保存する処理もクラスタ数にそって行われるのでスケーラビリティ面でも同様なことがいえます。

InfoQ: これは開発者に何をもたらしますか?

MS: とても大きなヒープメモリを指定する簡単なメカニズムです。  もし、各エントリ毎に1つコピーしたものを保持することを想定して、100クラスタノードで動作させ、 そして各ノードには2GB ヒープを割り当てるとします、 そうするとグリッドのインスタンスから合計で100GB分指定できるようになったのと同等になります。  そして、それらすべてがインメモリにあり、とても速いのです。  しかも、InfinispanはJTA準拠なので分散環境で継続して実行されるトランザクション処理ともうまく機能してくれます。また強力な非同期APIも備えており、並列でのネットワーク同期呼び出しを保証し、非同期でのネットワーク呼び出しを行うことでのスケーラビリティも確保できます。  例えば、

 Future f = cache.putAsync(k, v)

という処理は、呼び出し元スレッドから - f.get()を呼び出すことによって - ブロックできるようになり、ネットワーク呼び出しが成功したか確認できるようになりますし、fを無視して先に進めることもできます。  しかし、もっと重要なのは、呼び出し元スレッドで他の何か、例えば役立つことを実行できる、ということです。  そして、また後で戻ってきて、f.get()を呼び出してネットワーク呼び出しが成功したかチェックできます。  従来の blocking IOに対するNIOとして考えてください。

InfoQ: 永続化についてはどうですか?

MS: InfinispanはCacheStoreインタフェースを公開していて、複数のハイパフォーマンスな実装 - JDBC CacheStore、ファイルシステムベースCacheStore、Amazon S3 CacheStoreなどを持っています。  CacheStoreは“warm 起動”として使えます、もしくは単純にグリッド再起動時のためのデータを保証するためにも使えます。  また、メモリ外で実行する際には単純にディスクオーバーフローが発生することも考えられます。

InfoQ: 他プロダクトと、どんなところが違っているのでしょうか?

MS: ほとんどのオープンソースプロダクトは非常に機能面で限られています - 小さなクラスタでデータ分散機能を提供していない、もしくは、完全なプラットフォームを提供していなかったりといった感じです。  Infinispanと既存プロダクトの明らかに異なる部分もあります。私が思いつく部分では、非同期APIはユニークだと思います。

InfoQ: では、このプロジェクトにおけるあなたのモチベーションは何になるのしょうか?

MS: 私はJBoss Cacheのプロジェクトリードを2、3年しています。その間にオープンソースデータグリッドプラットフォームへの要求を感じてきました。私が抱いていた商用プロダクトへの不満は、非常に高すぎること、オープンソースでないことです。 またオープンソースプロダクトへの不満は - API、ユーザビリティ、パフォーマンス、安全性、スケーラビリティが商用のそれに及ばないということです - JBoss Cacheも含めていっています。 なので、JBoss Cacheの意思をひきつぎながら、より広いスコープ、大きなゴールをみすえて新しく作りこみました。

InfoQ: JBossプロダクトで利用されるものなのでしょうか? 他プロダクト上でも利用できますか?

MS: Java 5のJVMが必要なだけです。LGPLライセンスでビジネスやOEMにも適用しやすいです。

InfoQ: データグリッドとは何ですか?  もし、まったく異なるものということであれば、クラウドとはどのように異なるのでしょうか?

MS: 私の経験から、コンピューティングリソースの需要を供給することを指している傾向があると思っています。これはストレージ、プロセッサ、オペレーティングシステム、メモリ含めていっています。現在のはやりでは仮想化ということになります。データグリッドはサービス以上のものになります。複数のサーバをまたいで、メモリを統一する海のようなものです。一般的にデータグリッドはクラウド上にデプロイされます。

InfoQ: では、グリッドを適切に使う時とはどんな時でしょうか?  また適切でない時とは?

MS: データベースが耐えられないぐらいボトルネックになってきたと思った時です - スケールアウトして結構速くなる - そういう時はデータグリッドを使いましょう :-) データグリッドはとてもよくスケールします。 さらに、並列でタスクをクリッドで処理させたいとき、多層なデータグリッドもほしくなります、グリッドで処理をさばけるような状態にできます。また、データグリッドをメッセージングのために利用しているのをみたことがありますが、これは完全に間違いです。 キーがマップされるノードに無駄なプレッシャーを与えてるだけです。もし分散処理でメッセージングが必要なのであればJMSを使いましょう。それがJMSの最適な使い方です。

InfoQ: InfinispanはJSR-107にどのように関係しているのでしょうか、あとJBoss Cacheともどのような関係なのでしょうか?

MS: InfinispanのCacheインタフェースは進行中のJSR-107にそっていますし、現時点でのその仕様のスナップショットに準拠しています。InfinispanはJSR-107の任意的な部分、JTA準拠やクラスタリングなどもすべて実装しています。InfinispanはJBoss Cache上で作られてるわけではありません - 機能デザインと、いくつかコピーして再利用可能なクラスを除いては。 基本的にInfinispanはすべて作り直した新しいものです。

InfoQ: Infinispanはクラスタ上で実行させないといけないのでしょうか?

MS: いいえ。ローカルモードでも完全に実行可能でハイパフォーマンスです。 state-of-the-art 並列コンテナアルゴリズムをコア部分に、ロックと synchronized ブロックといった最低限なmutexを利用しながら実装しています。 InfinispanはマルチCPU とマルチコアサーバ上でも高並列化して動作します。eviction(追い出し)アルゴリズムも高並列化して動作します。

InfoQ: 他に何か新しい、かっこいい機能はInfinispanのロードマップにありますか?

MS: 今まで説明したこと以外にもたくさんあります。詳細はプロジェクトページにあるInfinispanロードマップを確認しておくべきです、今は思いつく中で、もっともエキサイティングな2つの機能を説明しましょう。

 

  • NIO-basedサーバモジュール。 2つのプロトコルに対応します - memcached準拠 RESTfulプロトコルと、独自バイナリプロトコルです。最初のプロトコルは既存のmemcachedクライアント - 何かしらの言語、プラットフォームにて - Infinispanと連携ができるようになります、Infinispanの魅力はJavaだけにとどまりません。 2つ目のバイナリプロトコルはサーバクラスタトポロジ、ハッシュファンクションを追加情報として保持し、“smart クライアント” としてロードバランシングとフェイルオーバーを制御できます。Javaクライアントもありますが、他プラットフォームでも、より多くのクライアントがでてくればいいなぁと思っています。
  • 強力なクエリーAPIもロードマップ上で予定しています。キャッシュされた状態は任意でグリッド全体から検索可能にするためにインデックス化できます。基本的に、ローカルにキャッシュされた状態でノードがクエリーを受けつけたり、処理した時に並列化して動作します。そして結果を戻します。 そう、まるでMap/Reduceのようにね。 :-)

InfoQ: Manik氏、話をする時間をとってくれてありがとう。より詳細な情報はこの Infinispanプロジェクトページで確認できます。

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
slashdot+
Hatena

特集コンテンツ一覧

Agile Japan 2009

2009年4月22日、東京千代田区にある放送会館で「アジャイルジャパン2009」が開催されました。本イベントは「ソフトウェア開発の次世代リーダーをつくる」ことを合い言葉に、200人以上の参加者を集めてスタートしました。

Flex 4の新機能トップ10

今週(2009年6月1日)AdobeはFlex 4の正式な初ベータ版をリリースしました。Flex 4はGumboというコードネームで開発されています。今回のリリースには大きな変更が多数含まれています。このRIAフレームワークの最新バージョンにおいて変更された事柄についての概要を以下のリストで見ていきましょう。

Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

ビジネス領域の深い理解を反映したドメインモデルを設計するための、ヴィジョンとアプローチです。この本は、Eric Evans氏の「Domain Driven Design」の主要点を短く読みやすく要約しました。

JavaプログラマがFlexとBlazeDSを学んだ方がいい13の理由

この記事ではJavaプログラマがなぜFlexとBlazeDSを学ぶべきなのかについて13の理由を述べています。なぜ高度にインタラクティブなWeb サイトからJavaで開発されたバックエンドをもつエンタープライズ・アプリケーションまでを含む、リッチ・インターネット・アプリケーション(RIA)の開発にFlexとBlazeDSの組み合わせが最適な選択肢となるのかについて述べています。

仮想パネル: バックログは重要な成果物とプラクティスか、それとも無駄か?

Mary Poppendieck氏、Ron Jeffries氏、Jeff Patton氏、David West氏、Steve Freeman氏、Jason Yip氏が、バックログに関する彼らの意見とアジャイルチームを成功させるために必要な事を語った。

Perf4Jを使ったパフォーマンス解析とモニタリング

この記事ではAlex Devine氏が、Java開発者がPerf4Jをどのように利用できるかと、タイミングステートメントにコードを追加し、ロギング、結果の解析とモニタリングを行うオープンソースツールセットの説明をします。

複雑な外部DSLを開発する

本稿では、Vaughn Vernon氏が内部DSLと外部DSLの違いを説明し、複雑な外部DSLを開発する際のステップを示します。

J2EEアプリケーションにおけるAOPを使ったフェッチ戦略の実装

この記事では低レベルのサービス・レイヤやリポジトリ・レイヤを肥大化させることなく、フェッチング・ストラテジによってモジュール化された方法でバックエンドにあるシステムからデータを取得する処理を最適化する方法について説明します。