|
証券取引でもオンラインゲームでも、ITサービスは利用者が満足するサービス品質が確保されてこそ意味を持つことを、ITサービスを運営する人たちは痛いほど知っている。だからこそサービスを提供開始する前に、システム担当者はアプリケーションの性能と信頼性を慎重にシミュレーションし、利用のピークが発生しても十二分に耐えられるようにハードウェアとソフトウェアの双方を設計する。
![]() |
聞き手: アイティメディア株式会社 @IT編集部 編集長 三木泉 |
システムが重要なものであればあるほど、この作業には多くの時間と労力が割かれ、想定される負荷に対して大幅な余裕を持たせる形で大量のハードウェアが投入される。
しかし、性能見積もり作業自体は正しくとも、その前提となった想定サービス利用量に比べ実際の利用量がわずかにとどまった場合、客観的に見て大きな無駄を生むことにもなり得る。順当にサービス利用が増加した場合でも、数年後にはシステム増強が必要になる場合が出てくる。
こうした、ITサービス利用量に対するITリソースの過不足の発生は、ITシステムがいったん構築すれば、利用量に応じて自在に伸び縮みするものでないかぎり、仕方ない。そうあきらめるしかないのだろうか。
オラクルが「Oracle Fusion Middleware」の中核コンポーネントの1つとしている「Oracle Coherence」は、この問題をどう解消してくれるのか。日本オラクルの杉達也氏に聞いた。
![]() |
日本オラクル株式会社 Fusion Middleware事業統括本部 シニアマネージャ 杉達也氏 |
オラクルはOracle Coherenceを「インメモリ・データグリッド」と呼ぶ。「インメモリ」という言葉からは、データをメモリに展開することにより、ディスクドライブへのアクセスを減らすことで高速化を図る製品であるかのような印象を受けがちだ。しかし杉氏は、性能向上もさることながら、システム全体としての信頼性とスケーラビリティをいかに持たせるかという、より重要な目的があると話す。
なお、オラクルでは、インメモリ・データグリッドを中核において ハードウェアの枠にとらわれないグリッド型のアプリケーション実行基盤全体を「アプリケーショングリッド」と呼んでいる。
Coherenceはアプリケーションサーバとデータベースの間に配置して利用するミドルウェアだ。複数サーバをクラスタ化し、Java VMを実行するサーバを複数立ち上げ、相互を独自のピア・ツー・ピア通信プロトコルで結んでクラスタ化する。各サーバの物理メモリとCPUを、あたかも1台のサーバであるかのように活用して並列処理を実行する。この構成により、アプリケーションサーバから、データベースやストレージに対する読み書きで発生するオブジェクトデータをキャッシュして処理する。メモリグリッド内のオブジェクトデータは常に 多重化されているため、特定のCoherenceサーバに障害が発生してもシステムは停止しない。稼働中のシステムに対して動的にサーバを追加することもできる。セッションデータはCoherence側に保持できる。
「各サーバが、自分の隣にあるサーバのメモリとCPUをうまく利用できる。従来はハードウェアという枠に閉じたシステム設計だった。Coherenceを使うと、従来使えなかった隣のメモリとCPUがリソースとして加わることになる。可用性の観点からすると、これまで単一のサーバだけで処理していたものをほかのサーバにも逃がすことによって、処理途中のサーバが落ちてしまった場合でも、隣のサーバに逃がしたデータを使って処理を継続できる。また、1台のサーバに多くのリクエストがきた場合にも、ほかのサーバのCPUを生かして処理を分散させることができる。これによって、スケールさせるだけでなくスループットが向上できる」。
アプリケーションサーバの稼働で必ず問題となるのはJava VMにおけるフルGC(ガベージ・コレクション)の発生だ。フルGCが行われている間、アプリケーションサーバは無応答の状態になってしまう。これがトランザクションのタイムアウトを発生させ、アプリケーションに大きな影響を与えてしまう。フルGCをできるだけ回避するために、JVMのヒープサイズを拡張する人もいるが、これは、単にGCの起きるタイミングを後ろにずらしているだけで、 いったんフルGCが起こった場合、メモリの解放にさらに長い時間が掛かってしまうことになる。従って、全体のヒープサイズは変えずに、開発者が苦労してパラメータをチューニングしているか、メモリに乗り切れないデータをディスクに書き出すなどの工夫を施す場合が多い。
Oracle Coherenceはまず、このガベージ・コレクションの発生を簡単に防ぐことができる。
「別サーバ上の別JVMプロセスのメモリを、あたかも自分のメモリのように利用することができる。個々のJVMのプロセスは1GB程度 に抑えておきながら、隣のプロセスをどんどん横につなげていくことで、全体として非常に大きなメモリ空間を利用できる」(杉氏)。
このことが、最近のAjaxを活用したWeb 2.0的アプリケーションの運用に大きな効果をもたらすことになる。
Web 2.0アプリケーションでは、ユーザーに対し、非常にインタラクティブなサービス利用環境を提供できる。しかし、アプリケーションサーバ側は、このために多くのユーザーのセッションを非常に長い時間保持し続けなければならない。そして多くのプッシュ型情報を、ユーザーごとのステートを管理しながら提供しなければならない。
「1人1人のユーザーの情報をメモリに確保し、非常に多くのユーザーの情報を1つのアプリケーションサーバというプロセスのなかで保持しながら、サービスを提供していかなければならない。従来であれば、ガベージ・コレクションの問題から、アプリケーションサーバのメモリ領域は限られたものになる。このため、限られた数のユーザーにしかサービスを提供できない。しかし、インメモリ・データグリッドを組み合わせることによって、より多くのユーザーセッションを提供できる。それと同時にアプリケーションの安定性を増すことが可能だ」
Oracle Coherenceはシステムの導入フェイズの時間とコストを大きく削減できる、と杉氏は指摘する。
「インメモリ・データグリッドの特徴の1つにスケーラビリティがある。単なるスケーラビリティではなく、リニアにスケーラビリティを確保できる。Oracle Coherenceでは、サーバ2台による処理性能の2倍の性能が欲しい場合、2倍の数のサーバがあればいい」。
![]() |
グリッド型基盤のメリット(図版をクリックすると拡大表示) |
従って、大規模なシステムを組む場合でも、テスト環境は小さなもので済むという。本番で必要な処理性能がこの小規模なテスト環境で計測した処理性能の何倍であるかを計算すれば、テスト環境のサーバ台数にこの倍数を掛けることで、本番環境で必要なサーバの台数を計算できるというのだ。
また、本番では当初の想定を上回る性能が要求される場合がある。Oracle Coherenceではこうした場合でも、サーバを追加しさえすればシステムの運用を止めずに処理性能を向上できる。
性能の予測確実性が高く、さらにサービスイン後の容量追加が容易だということは、Oracle Coherenceではアプリケーション処理について従来のように膨大な工数をかけて綿密な性能見積もりをしなくてよいということも意味する。発想を転換して、最終的には運用時に調整すればいいと割り切れば、性能見積もりの時間を短縮化し、システムのサービスインを早めることができる。
「最終的なハードウェアコストのぶれという点でも、大型のハードウェアを買ってぶれてしまった場合に比べると汎用サーバを買い足せばいいので、はるかに小さなぶれで済む」(杉氏)。
これをもう一歩進めると、複数のシステムにOracle Coherenceを適用することで、リソースの最適化も実現できるようになる。利用のピークを過ぎて余ってしまったシステムAのハードウェアをシステムBのリソースとして割り当てることが可能だからだ。ハードウェアは汎用的なサーバ機であるため、使い回しがきき、長期にわたる活用も可能だ。
![]() |
欧米企業では、Oracle Coherenceを事実上アプリケーションの標準プラットフォームにしているケースもあるという。
「数の理論というわけではないが、対象とするアプリケーション数が増えてくるほど、遊休リソースを集約して効率的に使うことができるようになる。従来だと高い性能要件のアプリケーションには大きなサーバを使い、中ぐらいのアプリケーションには中ぐらいのサーバを用意してと、企業内にさまざまなタイプのサーバが混在していたものが、高い性能を要求されるアプリケーションでも、要求性能がそれほど高くないアプリケーションでも、同じIAサーバを用い、台数で性能をコントロールすることが可能になる。また、大型サーバは得てして社内のスタッフでは運用ができず、ハードウェアベンダの力を借りるなどで、手間も掛かるしコストも掛かる。しかし標準化すれば1つのものをメンテナンスすればよくなり、トレーニングコストも減る」。
では、システムの柔軟性やコストのメリットはいいとして、運用を直接担当する者にとってはどこまでうれしいのだろうか。アプリケーションサーバとデータベースの間に新たな層を導入することになる。それを超えるメリットはどこにあるのだろうか。
「確かに新しい層が入る。しかしこれは、アプリケーションの部分とデータソースの部分を分離させる層でもある。この層が入ることにより、データソースの性能が低下したり、途中で止まったりしても、アプリケーションが動き続けられる仕組みをつくれる。海外のユーザー企業で、Oracle Coherenceを活用したシステムに、データベース側が障害により3時間ほど停止した例がある。この企業ではある程度経ってから障害に気付き、データベースを復旧させた。データベース復旧後は、データグリッドとデータベースとの間でデータ同期が裏側で行われただけだ。障害発生中も復旧後も、ユーザーは影響を受けることなくアプリケーションを使い続けることができた」。
![]() |
グリッドでは計画停止も、計画外停止も回避できる(図版をクリックすると拡大表示) |
これは障害対策だけでなく、日常運用でも活用できるという。例えばデータベースにパッチを当てる、バックアップを取るなど、データベースを止めざるを得ない作業が日常的に発生する。こうした作業もシステムを止めることなく、業務時間内にできるようになる。
Oracle Coherenceは当初、欧米の金融機関におけるミッションクリティカルなシステムで利用が広がった。金融機関では、証券取引、外貨取引などのオンライントランザクションで、パフォーマンスと信頼性を確保するために活用。一方で、金利計算やリスク計算などの「演算性能が命」のシステムにおいても、インメモリで展開して並列処理するOracle Coherenceの効果が認められた。最近は電子商取引やオンラインゲーム、またJavaによるバッチ処理の並列化にも適用が広がってきているという。オンラインゲーム分野では、例えば24時間365日サービスを提供しているヨーロッパのカジノサイトや、50万ユーザーが同時アクセスするiPhoneのゲームサイトなどで使われているという。
◇
だれもが望んでいるが、なかなか実現できないのがアプリケーションレベルでのITリソースの抽象化による自在な制御だ。Oracle Coherenceはこれを可能にしてくれる数少ない選択肢の1つであることは確かだ。
編集長インタビュー企画 INDEX |
|
![]() |
【第1回】 SOA&グリッド――使いこなしのポイントは一元管理にあり (@IT情報マネジメント Special) |
![]() |
【第2回】 オラクルのインメモリ・データグリッドがシステム設計と運用を激変させる (@IT Special) |
![]() |
【第3回】 「Howが分かるBI」が導くマネジメント・エクセレンス (ITmediaエンタープライズ Special) |
|
提供:日本オラクル株式会社
アイティメディア営業企画
制作:@IT 編集部
掲載内容有効期限:2009年8月31日
![]() |
編集長インタビュー企画 INDEX |
|
![]() |
【第1回】 SOA&グリッド――使いこなしのポイントは一元管理にあり (@IT情報マネジメント Special) |
![]() |
【第2回】 オラクルのインメモリ・データグリッドがシステム設計と運用を激変させる (@IT Special) |
![]() |
【第3回】 「Howが分かるBI」が導くマネジメント・エクセレンス (ITmediaエンタープライズ Special) |
|
関連リンク |
![]() |
Oracle Coherence製品情報 |
![]() |
Oracle アプリケーション・グリッド キャンペーンサイト |
![]() |
Oracle Fusion Middleware製品情報 |
@IT/ITmedia リンク |
![]() |
真のコストダウンを目指す――日本オラクルがFusion Middleware 11gを発表(ITmedia エンタープライズ) |
![]() |
「Oracle Fusion Middleware 11g」の目玉はソーシャルネット(@IT News) |
![]() |
オラクル、WebLogic ServerをFusion Middlewareに統合(@IT News) |
![]() |
データグリッド製品「Oracle Coherence」がFXシステムに採用(@IT News) |
![]() |
「アプリ側の変更は、なし」 オラクルがSOA基盤製品を強化(@IT News) |
![]() |
「Oracle WebLogic」誕生へ、オラクル新戦略のポイントは? − @IT (@IT News) |