「運用であきらめずに
自分の考え方を信じてほしい」


国産アプリケーションサーバの優位点とは?

@IT編集部
2009/4/28

 @ITの月間特集として、4月は「ニッポンからの挑戦」という企画を現在展開中だ。Java Solutionでは、国産アプリケーションサーバ「uCosminexus Application Server(以下、Cosminexus)」について、日立製作所 ソフトウェア事業部 第2APソフト設計部 部長 齋場正弘 氏に話を聞いたので、その内容を紹介する。

J2EE準拠」には認証テストを通さなければならない


−−Cosminexusを作ったきっかけや背景とは?

 「Cosminexus」という名前のアプリケーションサーバとして最初にリリースしたのは、バージョン3からで2000年3月のことです。Cosminexusの前身は、「Network Objectplaza」という、Web分散オブジェクト基盤でした。当時は、JavaよりもC/C++でシステムを開発している企業がまだ多かったのですが、その一方でJavaやEJBやコンポーネントというキーワードが盛り上がりはじめたころでした。そのため、日立製作所(以下、日立)としてもEJBサーバの基盤を提供したいと考えました。

 Cosminexusは、EJBの仕様を含むJ2EE 1.2に対応した「J2EE準拠のアプリケーションサーバ」として、サン・マイクロシステムズ(以下、サン)に続き2番目として提供しました。つまり、開発元を除けば実質世界初で、そこにはJava/J2EEへの強いこだわりがありました。当時「J2EE準拠」になるには、サンとブランド取得の契約をして、サンの提供する「CTS(Compatibility Test Suite)」という数千件の認証テストを通さないといけなませんでした。CTSは、いまでは数万件におよぶテストになっています。

−−「Javaで行く」という決め手になったのは?

 日立では、2000年ごろからシステム開発にJavaが本格的に使われ始めました。特に、JDK 1.2からライブラリが充実し、開発生産性も高くなりはじめたところがポイントだと思います。

独自JVMの開発は、顧客の「困った」が起点に


−−日立ではJVM(Java Viratual Machine)を独自に開発しているが、それは最初からか?

 最初にリリースしたときは、JVMは提供していません。顧客がCosminexusを動かすには、サンもしくは各OSが提供するJVMを利用する必要がありました。しかし、Javaでのシステムが本格的に稼働し始めた2001年ごろから、原因究明が困難なトラブルも発生するようになりました。このようなトラブルは、JVMまで調査しないと分からない根が深いもので、各JVM開発元のバグ情報を調べ、該当する対策モジュールを顧客に適用してもらうといった対応を行っていました。このため、問題解決までに時間を要し、顧客に迷惑を掛けることがありました。この反省を踏まえ、顧客に安心してシステムを運用してもらうため、JVMを自製し2002年のバージョン5からCosminexusに搭載しました。

−−バージョン5から独自のJVMを搭載したことにより、その後追加できる機能が増えた?

 そうです。例えばバージョン6では、詳細なスレッドダンプ出力機能を提供開始しました。日立のJVMは「どういう状態でエラーが発生したか?」を判別するために、ほかのJVMで出力しているスタック情報(どこのメソッド(関数)で問題が起きたかを示す情報)に加え、ローカル変数の内容やスレッドごとの消費CPU時間、待ち回数を出力します。この機能により、問題発生時の情報が十分に取得できるので問題の特定が可能となり、問題の原因調査のためにシステム開発者がプログラムにデバッグログを埋め込んで再現試験を試みたり、いちいちデバッガを立ち上げて変数の内容から原因を特定するという負担を軽減できます。

日立製作所 アプリケーション基盤ソフトウェア本部 第2APソフト設計部 部長 斎場正弘 氏 「日本の開発者には『ソフトウェアなので何でもできる』と思って新しいものを作ってほしい」
日立製作所 アプリケーション基盤ソフトウェア本部 第2APソフト設計部 部長 齋場正弘 氏 「運用であきらめずに自分の考え方を信じてほしい」

 このほかにも開発者や運用者に配慮した機能があります。例えば、メソッド実行時間監視機能では、プログラムで無限ループが発生したり、検索条件を間違えてDBサーバから処理が戻ってこないなどの現象を迅速に検知できます。メソッドの実行時間を監視し、タイムアウト時に通知したり、原因究明のための情報であるスレッドダンプを自動で採取できます。また、WebブラウザからDBサーバまでの性能解析トレース機能も提供しています。通常稼働時にWebブラウザからのリクエストに対してWebブラウザやアプリケーションサーバの要所でトレースを採取していて、スローダウン発生時などに、どこの部分で処理が遅延しているのかが特定できます。アプリケーションサーバからのDBアクセス時には、使用しているDBコネクションIDがトレースされるため、DBサーバまで追尾が可能です。

  バージョン7では、URL単位の流量制御機能を搭載しました。例えば、朝にログイン処理が集中し、ログインしてもほかの処理が処理されないといった状態を防ぐことができます。業務プログラム単位(URL単位)に同時実行スレッド数や実行待ちリクエスト数が設定でき、業務プログラムごとに一定量のリクエストの実行を保証できます。そして、最新のバージョン8では、独自JVMとアプリケーションサーバを密に連携させた成果として、Full GCの発生を回避するFull GCレス機能を追加しています(参考:日立がアプリサーバ新版、Full GC回避し「世界を止めない」)。

−−これらの機能追加は基本的に顧客の要望を反映したものか?

 はい。そもそも顧客は、システム利用者に快適かつ安心なシステムを継続的に提供したいと考えています。日立としても、速く高信頼な製品・ソリューションを提供したいと考えていて、顧客の「困った」ことや要望をヒヤリングして、それを起点に多くの機能を提供しています。

開発者自らが保守・サポートして機能追加に生かしている


−−国産である優位点とは?

 例えば、「海外製アプリケーションサーバを使ったシステムでJVMがらみのトラブルがあった場合、パッチ対応完了まで40日ぐらいかかった」という話を聞いたことがありますが、CosminexusではJVMがらみのトラブルがあっても、長くても2、3日で解決しています。なぜなら、Cosminexusの保守/サポートはCosminexusの開発に携わる技術者自身が直接行っているからです。製品の中身が分かっている技術者が対応するので、「どう動かすべきか」「どうチューニングするべきか」という適切な内容を提案できます。さらに、この過程は顧客の要望を直に聞く密接なコミュニケーションの場にもなっています。この点は、国産ベンダだからこそ実現できる点ではないでしょうか。
 
  またCosminexusでは、日本語ベースのシステムが構築されることを想定しています。特に、JVMではファイルI/O時などに行われるコード変換において、英語ベースの文字コードに加え、Shift-JISやEUCといった日本語文字コードを考慮し、日本語環境での文字処理の高速化を実現しています。

−−海外製のアプリケーションサーバとの違いは?

 一番の違いは、使っているときの「安心感」と考えています。Cosminexusでは、前述した性能解析トレースなどシステムを可視化する機能が特徴的です。システムで何か起きても、顧客自身がどういう状況なのかを把握できます。Cosminexusは、さまざまな業種の顧客のシステムで使われているほか、日立グループ内数万人規模のシステムでも使われています。この経験・実績もCosminexusの「安心感」を支えています。

クラウドや仮想化の基盤としても柔軟に対応したい


−−Cosminexusの今後の展開は?


「安心感を価値として提供していきたい」(齋場氏)

 今後も顧客の要望に応えるべく、より安心して使って頂けるよう、システムの安定稼働を支援する機能を備えていきたいと考えています。例えば、最新のバージョン8でのFull GCレス機能では、64ビット OSで発生していたFull GCによる数十秒間の業務停止を解消しています。

−−アプリケーションサーバ市場の現状についてどう思うか?

 TomcatやJBossなど基本的に無償のものと比較されることも多い状況です。Cosminexusとしては商用製品としての「安心感」を価値として提供したいと思っています。将来の顧客の利益につながるような機能を追加して、もっと顧客と良い関係を築いていきたいですね。

−−クラウドコンピューティングや仮想化の基盤としてCosminexusを使用するという方向性は?

 クラウドコンピューティングや仮想化の適用を検討している顧客も多いかと思います。Cosminexusとしては、クラウドコンピューティングなどのさまざまなシステムの在り方に対しても、柔軟なシステムを構築・運用するための基盤製品としての機能を提供していきたいと考えています。

運用であきらめずに自分の考え方を信じてほしい


−−最後に、日本の開発者にメッセージを。

 Full GCを回避する機能を作っているときに感じたことです。顧客のシステムでは、Full GCの発生による数十秒の業務停止による影響を最小限にするため、システム利用者が少なくなる深夜に、システムの再起動運用を実施していました。運用の工夫で対応していたFull GCの発生抑止は、「GCアルゴリズム」をいろいろと変えてもなんともならないものであり、さまざまな観点からの調査と分析、評価を経て、JVMのメモリ管理の拡張という新たな発想によってようやく実現できました。

 この機能が実現できたのは、顧客が困っていることを何とかしたい、Javaをもっと使いやすいものにしたいという製品開発者の熱い想いによるところが大きいです。Cosminexusには、そういう想いから追加された機能が詰まっています。日本の開発者の方々には、自分の考え方を信じて日本発の新たな技術をどんどん生み出していってほしいと思います。

@IT関連記事


国際化プログラミングの常識
プログラマーの常識をJavaで身につける(5) 
国際化なんて自分には関係ないと思っていませんか? 実は身近な存在で、プログラムの基本となる知識も含んでいます
Java Solution」フォーラム 2007/5/2
‘愛’で学ぶ文字コードと文字化けの常識
プログラマーの常識をJavaで身につける(6) 
OSや携帯電話の機種の違い、メール、Webブラウザ、DB入出力、国の違いなどさまざま原因で起きる文字化けを徹底解説!
Java Solution」フォーラム 2007/6/21
“Stop the World”を防ぐコンカレントGCとは?
現場から学ぶWebアプリ開発のトラブルハック(2) 知ってましたか? ガベージ・コレクションにもさまざまな種類があります。その中でも今注目のコンカレントGCを解説!
Java Solution」フォーラム 2007/4/24
JavaのGC頻度に惑わされた年末年始の苦いメモリ
現場から学ぶWebアプリ開発のトラブルハック(9) 大みそかの早朝から呼び出され年越しで調査した結果分かったGCの頻度に潜むトリック。あなたは見破れますか?
Java Solution」フォーラム 2007/12/27

Java Solution全記事一覧





Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間