Terracotta(サイト・英語)は、単一ノード、マルチスレッドのアプリケーションを、コード変更なしに複数ノードの分散アプリケーションに変換できるJVMクラスタリング ソリューションである。InfoQでの報告どおり、VC等出資企業が2006年末にオープンソース化(関連記事・英語)し、それ以降さまざまな動きが見られる。最近の開発において、バージョン2.4がWebsphereおよびHibernateのサポートを開始した他、PartyGaming(PartyPoker.comの製作会社)などの大口顧客がTerracottaを導入した。InfoQはオープンソースへの移行およびHibernate/WebsphereサポートについてAri Zilka氏に話を聞いた。
Ari氏によると、今年は成長が急速に進み、夏の間中フォーラムの投稿は2倍になり、一週間のサイト訪問数は何千となり、導入顧客数は100を上回った。「Jetty、Geronimo、Spring、Tomcatなどのオープンソース製品およびフレームワーク向けのTerracotta統合モジュールが、この目覚ましい盛り上がりに役立っていると思われます。」 現行のオープンソースが企業の成長にどのように影響してきたかを同氏に尋ねた。当社は、オープンソース成長の大きなきっかけは次の2つの理由であると考えています。まず1つ目は、オープンソースがユーザの導入コストを減らし、企業として当社の販売コストを低減することです。現在では、顧客は完全に概念実証を通り越しつつあり、自分達の使用するアプリケーションとTerracottaが連動することを目にしてからは、エンタープライズ サブスクリプションについての説明を求めて当社に近づきます。これは低コスト維持につながるため、当社にとって望ましく、また顧客にとっても必要以上の時間を費やす前に価値命題を確認できるため好都合です。2つ目は、オープンソース化には強力な証拠伝達の利点があることです。つまり、ソースをオープン化するということは、自社の製品が良質で、詳しい技術精査をパスできることが分かるという強力な信頼の証拠なのです。当社はこのことがTerracottaのような全く新しいコンセプトを導入しようとしているユーザにとって、特に価値ある効果であると信じています。VC出資の商用収益モデルからオープンソースモデルへの移行について、
トランザクションコストは当社および顧客の両パーティにとってはるかに低くなり、導入が加速されます。これは、当社およびユーザコミュニティーにとっても非常に大きな利点です。しかし、最終的には、トランザクションは想像されるほど変化のあるものではありません。企業において核となる仕事は価値を追加する製品を構築し、その製品をお金にする方法を見つけることです。このお金を稼ぐという根本的な課題は変わりませんし、なくなりません。オープンソースは良質の製品を生み出しますが、当然「無料」を助長するものではありません。最も大きな変化は、最大の競争相手が自身となり、コミュニティをサポートすると同時に、お金を稼ぐ方法を見つける必要があるということです。繰り返しますが、当社の考えでは、これはTerracottaが単なるサポート以上によりクリエイティブな付加価値を見つけるための拍車となるため、顧客にとって好都合です。数か月後には、当社が今話していることをコミュニティが理解するでしょう。
Terracottaは先日、オンラインギャンブル会社PartyGaming、リアルタイムRIAフレームワークKaazing、およびオープンソースのCMSベンダーLiferayなどがTerracottaを導入した、という注目すべき発表を行った。PartyGamingはPartyPoker.com、PartyCasino.com、PartyBets.com、およびPartyBingo.comを運営する企業である。Terracottaの展開には、数百のゲームサーバーのクラスタが関与する。PartyGamingのCEOは以下のように語っている。「他の選択可能なアプローチよりもはるかに少ないネットワークの利用で、何百ものサーバーをクラスタリングできるTerracottaの能力は、非常に高いパフォーマンスを実現し、これこそがPartyGamingの主要な考慮事項でした。」
この夏、Terracotta 2.4はWebSphereおよびHibernateへのサポートも追加した。Ari氏によると、Hibernateのサポートでは、以下の2つのオプションを提供する。
Terracottaのフィールド固有の変更検知/キャッシングが、Hibernateによる成果物をどのように改善するか、
- Hibernateの下でEHCacheをクラスタリングすることによって機能する、Hibernateの2次キャッシング。これは、DBキャッシュをクラスタリングすることでDB負荷を減らしたいだけの既存のアプリケーション向けです。
- クラスタ周辺のPOJOを連続的にHibernateセッションから切断したり、再接続したりすることによって動作するHibernateのPOJOキャッシング。当社のPOJOクラスタリングはHibernateの代理となります。POJOクラスタリングはきめ細かいフィールドレベルの更新を通じて、より高いパフォーマンスを実現するため、これは新しいアプリケーション(または後付けしたい場合)にとって望ましいものです。
POJOクラスタリングフォームでは、送信されるデータは少なくなり、HibernateとDBの呼び出し頻度が下がるため、スケーリングが向上します。また、コード中に散在するHibernateのload()およびstore()呼び出しよりもはるかに簡単に連携することができます。2次キャッシングにおいて、セッションにTerracottaを使用し、アプリケーション内の他の箇所ではPOJOを使用するならば、このためにTerracotta + EHCacheを使用する主な利点は、単独クラスタリングのプロバイダにあります。そうでなければ、Hibernateの2次キャッシングは実質的にデータベースの列上でカスタムのシリアライゼーションを行い、そのためキャッシュ内のフィールドは完全な行となり、これはすべてのキャッシング プロバイダに等しく機能します(ところで、これは、DSOが存在しない場合に道を切り開いて進む必要のあるユーザ、つまりここではGavin King氏の例です)。Terracotta 2.4は、java.util.concurrentにリエントラントな読み取り/書き込みロック用のサポートを追加した。
Ari氏はTerracottaを、Network Attached Storage(またはAzul(サイト・英語)が使用するNetwork Attached Processing)に似た「Network Attached Memory」として位置付けて、以下のように語っている。Terracotta 2.4以前は、単独のJVM内のスレッドがサポートできるレベルよりも、より高度なロッキングがクラスタ内で可能でした。そのJVMがロッキングセマンティクスにおいて悲観的かつ排他的であった一方、当社はTerracotta内で調整が行われたクラスタ内でより多くのことがサポート可能でした。1台のマシン上およびクラスタ内の両方でのスレッドプーリングを望む、また、一部のスレッドが読み取り、その他が読み取り/書き込みを行うビジネスロジックのみを望む開発者にとって、リエントラントな読み取り/書き込みロックは、純粋なPOJO方式でクラスタ内での各JVMを高速化します。この一例が、同時使用のConcurrentHashMap対HashMapです。java.util.concurrentの集まり内の並行性は、リエントラントな読み取り/書き込みロックを介してイネーブルされ、現在はTerracotta 2.4内においてネイティブでサポートされ、パフォーマンスが向上します。
これは意図的にそうしています。NASはファイルのI/Oプログラミングを単純化するため、またスケーラブルな高可用ストレージのランタイムでのトランスペアレントな挿入をサポートするために作られました。Terracottaは完全な高可用性を念頭に置いて設計されています(n+m冗長性、つまり所望するだけのバックアップ、ダウンタイムなしの連続アップグレードなど)。これは、各アプリケーションが異なり、重複せず、難しいものである一方、ITにとって一貫した方法で高可用性とスケールを実現し、安定した低コストのアプリケーションをビジネスにもたらす必要があるため、重要です。言い換えれば、高可用性/スケールは普遍的なニーズであり、TerracottaがHotSpot、現在ではIBM JREに接続されたときに実現を意図したものとたまたま一致します。
Terracotta(サイト・英語)の詳細については、InfoQの以前のニュース報道やテクニカル記事も参照されたい。http://infoq.com/jp/terracotta
原文はこちらです:http://www.infoq.com/news/2007/10/catching-up-with-terracotta