Loading
|
@IT > 大量データをインメモリに展開し高信頼性と高可用性を実現する“ミドルウェア・データグリッド” |
|
オンラインチケット販売やSNSサービスなど、インターネットビジネスを展開する企業にとって、ITコストの増大が悩みの種となっている。IT投資が企業方針や利益に直結しており、新規事業に向けたシステム基盤投資や既存システムの保守運用、アクセスのピーク時に備えたシステム増強などの投資が欠かせないためだ。 ブログやSNSをはじめとするWeb 2.0の流れは、インターネットビジネスにも大きな影響を及ぼしている。顧客一人ひとりの好みに合わせて商品・サービスを提案したり、画面をカスタマイズするパーソナルサービスのほか、パートナー企業の商品を販売するなど他社サイトとの連携も増えており、取り扱うデータ量やサービス数は増加の一途をたどっている。 アクセス数やデータ量の増加に合わせてアプリケーションサーバやデータベースサーバを増強しても、それらをつなぐインターフェイスがボトルネックとなり、投資額に見合ったパフォーマンスを得られないことも多い(図1)。こうした場合に有効なのが、オラクルが提供するデータグリッド・ソリューション、Oracle Coherenceである。
Oracle Coherenceは、独自のピア・ツー・ピアのクラスタ・プロトコルを用いてデータの管理やキャッシュサービスを提供するソリューションだ。アプリケーションサーバ層とデータベース層との間に設けるインターフェイスとして利用し、複数のサーバによるクラスタ構成で仮想化したメモリ空間内にデータを展開することで、ディスクI/Oに比べてはるかに高速なデータアクセスが可能になる(図2)。
クラスタ内に保持するデータは、複数のノード間でデータレプリケーションを行うため、障害にも強いという特徴を持つ。また、この仮想化されたメモリ空間は、従来アプリケーションサーバが処理してきたロジックを代替できるので、アプリケーションサーバを原因とするボトルネックを解消し、高いスケーラビリティを実現する。 ミッションクリティカルなWebシステム向けに、インメモリのテクノロジを採用した製品はいくつか存在するが、Oracle Coherenceの際だった特長は横並びで配置されたアプリケーションサーバやJVM間で、インメモリ・データ共有を実現することによって大量データの高速処理を可能にする点だ。これによって、さまざまなメリットが実現されている。 ではOracle Coherenceの導入効果を、順を追って見ていこう。
まず大きなメリットとして挙げられるのが初期投資の低減だ。ピーク時で毎秒4000アクセスのWebサイトを運営しているあるECサイトを例として挙げると、大量のデータを処理するために、大容量メモリを確保できるスケールアップ型16コア搭載のSMPサーバ×2台によるフェイルオーバー構成では、5000万円以上の初期投資が必要だった。 これに対してOracle Coherenceを導入してミドルウェア・データグリッドを構築すると、2クアッドコア搭載ワークステーション×6台による分散化で、同等の処理性能を実現できた。初期投資額は10分の1となる500万円以下だ。 大型のSMPサーバを導入する背景には、大容量メモリ空間の確保とそれを処理するCPU性能の要請があった。だがOracle Coherenceの場合、複数台のメモリ空間を仮想的に1つの空間として扱えるため、必要に応じてサーバを追加するスケールアウトが可能になる。また、複数台のサーバのうち1台がダウンしてもほかのサーバが処理を継続できるため、大型サーバ×2台構成に比べて可用性が高いことも大きな特長となっている。
ITサービスを提供する場合、アクセスの増加に応じてサーバの増強を行う必要がある。だがセッション間のステート(状態)維持が必要なWebアプリケーションの場合、ステートを保持するためのさまざまな仕組みによってオーバーヘッドが生じるため、アプリケーションの性能がハードウェアの増強とリニアにつながっていかない。 例えば、ステートをデータベースで管理する方式の場合(J2EEでのステートフルセッションBeanなど)、信頼性は向上するもののデータベースコストの増大や高速処理に向かないなどのデメリットがある。一方、2台のアプリケーションサーバ間でメモリ間通信を行ってステートを共有する場合、レプリケーションにかかる処理負荷はデータベース管理に比べて相対的に低いものの、信頼性や耐障害性が不十分で、メモリリークの要因になるといったデメリットが生じる。TomcatやJBossなどのアプリケーションサーバはすべてのノードにデータをレプリケートすることが可能だが、この場合、信頼性は高いもののレプリケーション負荷が高く、スケーラビリティに欠けるというデメリットが生じてしまう。 こうした問題に答えるのが、Oracle Coherenceのインメモリでのステート共有機能だ。例えばアプリケーションサーバと同じマシンにOracle Coherenceを埋め込んでてデータグリッドを構成した場合、アプリケーションサーバのノードをまたがってメモリデータを共有できる(図3)。各ノードのメモリ内にあるステート情報は別のノードのメモリにレプリケートされるため、セッションステートの高速なフェールオーバーが可能だ。データのレプリケーションはデータグリッド・クラスタ内の限定されたノードにのみ行うため、その負荷も最小化できる。また、アプリケーションサーバからレプリケート処理を解放するため、性能見積もりや予測が容易になるといった利点もある。
大量のリクエストを処理するインターネットビジネスで重要視されるのが、高速なレスポンスの実現にある。アクセス集中が予想される限定販売品の注文処理を負荷分散できる仕組みなどが必要だ。そこでデータベースを使い、複数のアプリケーションサーバがデータを共有する方式を採用することが一般的である。しかし、ディスクにアクセスする方式ではリアルタイム性に欠けるデメリットがある。 このボトルネックを解消するための手段として、メモリキャッシュを利用した処理を独自に作り込むケースも多い。だが独自のキャッシュ機能で利用できるキャッシュメモリの容量は、サーバのハードウェアの上限に依存してしまう。ハードウェアのコスト増や、ハードウェア障害時のメモリ内データ消失というリスクもある。 Oracle Coherenceの場合、複数サーバのメモリ空間を仮想化して1つのメモリ空間として利用できる。インメモリで処理する高速性を持ちながらも、プラグ&プレイ感覚でハードウェアを追加すれば、簡単にメモリ空間を拡張できるというスケーラビリティも確保しているのが大きな特長だ。 また、複数のサーバでデータを分散して保有する特性を利用して、パラレルデータ処理が可能になる。一般に、全データにまたがる全件検索や最適料金計算などの処理は、全体のデータ量の増加に伴って低速化してしまうが、データグリッドなら、サーバを足すことでデータを保有するメモリ空間の拡張とともに、パラレル処理の拡張も行われるため、処理速度の低下を引き起こすことがない。
ネットショッピングサービスなどの場合、協業する他企業とパートナー提携を結ぶことでパートナーの商品情報やキャンペーン情報を取り入れ、自社サービスとして提供することも多い。そのような場合に、パートナー企業との接続情報を1つ1つアプリケーションに取り入れるのでは、アプリケーションロジックが複雑化してしまう。また、複数のデータソースに検索を行うと、ディスクI/Oやデータ転送に時間がかかってしまうという問題もある。 Oracle Coherenceはデータベース層とアプリケーションサーバ層との間にデータグリッドを構築し、複数のデータソースからデータをロードしてインメモリに展開できる。パートナー企業のデータベースから必要なデータを取得してデータグリッドに展開しておけるので、データソースが複雑化してもパフォーマンスに影響は与えない。また、アプリケーションサーバからは単一のAPIで検索できるようになるため、データソースが追加されてもアプリケーションロジックに大きな変更を加えなくて済む。キャッシュデータで処理が可能なため、データソースの性能や障害に影響されないという利点もある。 ◇ これまで見てきたように、ミッションクリティカルなインターネットビジネスを展開する企業にとって、Oracle Coherenceはさまざまな利点を提供できることが分かっただろう。次回は、Oracle Coherenceのテクノロジに関して、データのレプリケーションやトランザクション処理、データ操作APIなど、もう一歩踏み込んだ技術記事をお届けする。
提供:日本オラクル株式会社
企画:アイティメディア 営業局 制作:@IT編集局 掲載内容有効期限:2008年3月31日 |
|