ミッションクリティカルなJavaシステムが抱える 3つの課題 〜 期限切れJavaに悩む企業を救う 「Mission Critical Java」とは? 〜 |
Javaが登場してから14年。現在では金融系や基幹系のシステムでも採用されているが、こうしたミッションクリティカルな分野でJavaを利用する際の課題もある。これを解決するためにNECが提供するソリューション「Mission Critical Java」を紹介しよう。
Javaが登場してから14年、現在では一般的なクライアントアプリケーションやサーバアプリケーションさらには携帯端末アプリケーションまで、幅広く利用されている。また、バージョンアップを重ねるごとに信頼性も向上し、金融系や基幹系などのミッションクリティカルな分野での採用も進んでいる。しかし、長期的に高い信頼性と安定運用が求められるミッションクリティカルなシステムにおいては、現状のJavaには課題もある。
3つの課題、その正体とは? |
課題は大きく3つ。1つ目はJavaのサポート期間の短さである。サン・マイクロシステムズ(以下、サン)が提供するJavaは、バージョンを重ねるごとに年々サポート期間が短くなってきている。2002年にリリースされたJava SE 1.4はすでに2008年にサポートを終了しており、Java SE 5.0は2009年10月まで、Java SE 6も2010年までの予定だ。
新バージョンリリースと同時にシステムも開発してリリースできると理想的だが、現実には開発と評価の期間が必要となるため難しい。特に、ミッションクリティカルな分野では評価に時間がかかるうえに、そもそもバージョンアップに対して慎重になる。新しいJavaのバージョンでシステムを構築した場合、安心して利用できる期間は1〜2年短くなり、システム寿命が3年程度ということもある。
Javaの提供元であるサンもこれを認識しており、Standard Edition(Java SE)に限って「Java SE for Business」というサポート延長のソリューションを有償で提供している。しかし、対象OSはSolarisやWindows、Linuxに限られていて、ハイエンドなシステムで多く利用されるUNIXは対象外となっている。
2つ目の課題は、障害修正のパッチ提供の問題である。サンは、Javaのメジャーバージョンアップの間に、細かい修正を施したマイナーバージョンを修正パッチとして配布しているものの、決して十分な頻度とはいえない。何よりも、個別の不具合をピンポイントで修正したものではないので、システムによっては新たな検証も必要になるケースもある。
3つ目の課題は、メモリリーク(Out of Memory)によるシステム不調の障害である。Javaの特徴といえば、プログラムがJava仮想マシン(JVM)上で動作すること。JVMにはプログラムの使用メモリを管理するガベージコレクション機能が備わっているので、プログラマはメモリ管理を気にする必要がない。ところが、Javaの利点ともいえるこのメモリ管理が、時にはシステム障害の原因にもなる。もちろん完璧(かんぺき)に動作してくれれば問題はないのだが、現実にはメモリリークを起こしてしまうこともある。このメモリリークが厄介だ。OSなどのエラーは比較的把握しやすいが、JVMのそれはなかなか把握しづらい。これが原因で、システムの停止を強いられると、ミッションクリティカルな現場では影響が大きい。
3つの課題を解決する HP-UX向けJavaのサポート |
これらの課題への解決策として、日本電気株式会社(以下、NEC)では同社のサーバ製品「NX7700iシリーズ」に向けたサポートソリューション「Mission Critical Java」を提供している。
「NX7700iシリーズ」は、OSにヒューレット・パッカード(以下、HP)のUNIXであるHP-UX(11i v2と11i v3)を搭載したItanium(IA64)サーバである。ハイエンド向け製品として、金融業界や官公庁など、ミッションクリティカルな現場に導入されているという。Javaベースのシステムを稼働させていることも多く、その場合ユーザーは前述した3つの課題を抱えていることになる。「Mission Critical Java」では、それに対して次のようなサポートを提供している(図1)。
- サポート期間の延長(最大3年間)
- 迅速な修正パッチの提供
- JVM監視ツールの提供
図1 「Mission Critical Java」の特徴と導入メリット(Javaが抱える3つの課題を解決) |
「サポート期間の延長」は、Javaへのサポートを標準的なものからさらに最大3年間延長するというもの。HP-UXに搭載されているJavaは、HPがサンのライセンスを受けて開発している。従って、JavaのサポートもHPが独自に行っており、サンによるサポート期間とは必ずしも一致しているわけではない。利用ユーザーが多いバージョンや市場規模によって長めのサポート期間を設定していることもあるが、それでも大本(おおもと)であるサンのサポートが切れてしまえば長くは続けられない。ここから3年延長するのが、NECのソリューションだ(図2)。
図2 システムライフサイクル(標準サポート期間より3年間サポート期間を延長) |
「迅速な修正パッチの提供」は、不具合が見つかった場合にそのシステム専用の修正パッチを提供するというもの。通常のパッチ配布間隔では未対応のままで稼働する空白期間が生じてしまうが、それを極力短くできる。また、ユーザーのシステムに合わせたピンポイントの修正パッチであるため、適用時の検証も最小限で済み、新たな不具合が発生するリスクも回避できる。障害サポートは365日24時間体制で行っていて、NECだけではなくHPのワールドワイドのスタッフが協力して、不具合発見から2週間以内を目標に対処するようになっている。
「JVM監視ツールの提供」は、システム不安定化の要因となるJVMのメモリリークの監視ツールを提供するというもの。実際、現場で最も多く発生している障害が、このメモリリークに起因するものであるという。Javaのメモリ管理は複雑なうえ、C言語などとは違ってほとんどのプログラマはJVMに「お任せ」なため、逆にそれが仇になっているといえるだろう。
メモリリークの回避処置としては、定期的にJVMを再起動するという手段も考えられる。しかし、これは事前に不具合が認識されていることが前提の回避法であって、未知の不具合には対処できない。そこで、深刻な事態になる前に、上限となるメモリ使用量やスレッド数の“しきい値”を設定しておき、その値を超えると管理者に電子メールで通知する機能をツールとして提供する。これによって、通知が来た段階でどういう状態かをチェックして、再起動したり様子を見たりといった対処が可能になる。JVMの障害は予想が難しいものだが、常時監視するにもコストが掛かる。しかし、メモリの使用状態を1つの目安とすることで、最小限の手間で適切な監視を実現できる。
システムを長く利用できる ようにするためのソリューション |
「少しでもシステムを長く利用できるようにするためのソリューション」。Mission Critical Javaについて、こう説明するのは、日本電気株式会社の神吉 隆氏。「Javaのシステムは保守コストが掛かるといわれているが、その要因となるのがバージョンアップです」と神吉氏はいう。
「Javaのシステムは保守コストが掛かります。なぜかというと、サポート期間が短いがために頻繁なバージョンアップが必要になるからです。基幹システムは、取りあえずバージョンアップして動くかどうか確かめてみるというわけにはいきません。事前に入念なテストが必要で、それに掛かるコストも膨大です。そのため、なるべくならバージョンアップは最小限にしたいというのがお客さまの本音でしょう。ミッションクリティカルな分野では、稼働中のシステムを長く使えるようにするというのが、最善のコスト削減であると同時にリスク回避でもあるのです」(神吉氏)
左から、「Mission Critical Java」を担当する日本電気株式会社 第二コンピュータソフトウェア事業部 主任 青澤 尚 氏、同社第二コンピュータソフトウェア事業部 マネージャー 神吉 隆 氏、同社第二コンピュータソフトウェア事業部 グループマネージャー 落合 浩之氏 |
サポート期間の延長と迅速なパッチの提供、障害を未然に防ぐ監視機能は、いずれもより長くより安心して運用し続けるためのサポートである。さすがに永遠のサポートというわけにはいかないが、1つのバージョンでの運用期間を長く設定できれば、次期システムに向けたバージョンアップや評価も余裕を持って行える。また仮に、延長サポートのコストとバージョンアップに掛かるコストが同等であったとしても、「現在稼働しているシステム」を使い続けることによるリスク回避の安心感は大きい。
Javaを長く安心して運用できる サーバとサポートのセット |
この「Mission Critical Java」は、基本的に「NX7700iシリーズ」のサーバ上でJavaを利用しているユーザーが対象となる。価格は個別見積もりとなっていて、購入すると窓口が設定されるので、そこを通して各種連絡を行う形になる。これらのサーバ製品を導入している場合、大規模なシステムがほとんどかと思われるが、監視ツールのインストールや各種設定は常駐するNECのSEが行う。
また、ここで説明してきたJavaの抱える課題は、ミッションクリティカルな分野に限らずJava全般に共通したものである。従ってシステム管理者の中にはこれらの課題を実感しているために、将来、基幹系システムでJavaの採用を検討しつつも躊躇(ちゅうちょ)してしまっているという方も少なくないだろう。その場合には、ハードウェア、OSともにパフォーマンスと信頼性が高い「NX7700iシリーズ」とJavaに対する手厚いサポートである「Mission Critical Java」を併せて導入するという選択肢を検討してみてはいかがだろうか。
提供:日本電気株式会社
企画:アイティメディア 営業本部
制作:@IT 編集部
2009年3月31日
関連リンク |
・基幹システムにおけるJavaの保守性を高めるサポートメニュー「Mission Critical Javaプロダクトサポート」の開始 |
関連記事 |
・NEC、「NX7700i」におけるJavaの長期サポートサービスを提供 (ITmedia エンタープライズ News) ・連載「チューニングのためのJava VM講座」 (@IT Java Solution) ・連載「Javaパフォーマンスチューニング」 (@IT Java Solution) ・連載「現場から学ぶWebアプリ開発のトラブルハック」 (@IT Java Solution) |