機能と技術からわかる!システム基盤の実力

第16回業務アプリケーションの開発から運用までをサポートする「uCosminexus Application Server」

多彩な機能で開発を支援

Web技術をベースにアプリケーションを開発する際に欠かせない存在となっているのが、Webアプリケーションサーバです。Java実行環境をはじめ、トランザクション管理やセッション管理、外部システムとの連携など、アプリケーションを開発するために必要な機能が網羅されているため、Webベースのエンタープライズ向けJavaアプリケーションの開発負荷を大幅に低減できます。

このWebアプリケーションサーバの1つとして日立製作所からリリースされているのが「uCosminexus Application Server(以下、Cosminexusと略記⁠⁠」です。Webサーバやサーブレット/JSPの実行環境となるWebコンテナのほか、EJBコンテナやJ2EEサービスを搭載しているのはもちろんですが、日立が自ら開発しているJava VMが搭載されているのが特徴となっています。

今回は日立が無償で定期開催している「オープンミドルウェアセミナー」のCosminexus講座の受講を通じて、このミドルウェアの特徴を紹介します。

ボトルネックの特定に力を発揮する性能解析トレースログ

Cosminexusにはさまざまな特徴的な機能が盛り込まれていますが、アプリケーション開発や運用時に有用な機能の1つとして、実行中のアプリケーションに対し、Webブラウザからサーバまで一貫した性能分析が可能であることが挙げられます。

この性能分析では、WebコンテナやEJBコンテナ、データベースのそれぞれにおいて、リクエストごとの処理時間を計測することが可能です。これにより、どの部分が性能面でのボトルネックになっているかがわかるだけでなく、障害発生のトリガーとなったリクエストを検証するといった使い方ができます。

この性能分析を行うために利用するのが、⁠性能解析トレースログ」です。性能解析トレースログはSnapshotログに含まれています。Snapshotログには性能解析トレースログのほか、各種ログやCosminexusの設定ファイルが含まれており、トラブル解析に必要な情報がそろっています。Snapshotログは管理画面から取得できます図1⁠。このログファイルには、サーブレット/JSPの呼び出しからEJBの呼び出し、EJBからの応答、そしてサーブレット/JSPの処理完了といったような、各トレースポイントを通過したタイミングが記録されています図2⁠。このログ情報から、イベント処理に要した時間を算出することで、時間がかかっている処理を割り出すことができ、処理のボトルネック部分を特定することができます。

図1 管理画面からSnapshotログを取得可能
図1 管理画面からSnapshotログを取得可能
図2
図2

セミナーでは、EJBのソース内のどこかに「Thread.sleep(15000)」という、15秒間何もせず待機する処理をあらかじめ仕込んであるデモプログラムを実行し、ログの解析を行いました。そのログをExcelに読み込んで見やすくしたものが図3です。セルがピンク色に塗られている個所に注目すると、⁠AdderEJB」というインタフェースにて15秒間も処理に時間がかかっていることが見てとれます。

図3 ログの内容から性能分析が可能
図3 ログの内容から性能分析が可能

このようにボトルネックを特定すれば、該当個所の調査を開発部署に依頼することできるため、スムーズにトラブル対応を行うことができます。

URL単位での流量制御を実現

Cosminexusには、システムの安定稼働を実現するための機能として、URLごとの流量制御のしくみも用意されています。たとえば商品の検索と商品の購入手続きのそれぞれの機能を提供している際、利益につながる商品の購入手続きの処理を優先的に処理したいところでしょう。ただ、商品を検索するユーザが多いと、その処理でサーバのリソースが消費されてしまい、購入手続きをしようとしているユーザが待たされる、といったことが起こりえます。

URLごとの流量制御により、多くの機能を提供しているアプリケーションでも、優先度の高い機能の応答性能を確保することが可能です図4⁠。

図4 流量制御のイメージ
図4 流量制御のイメージ

具体的な設定は、cosminexus.xmlというXMLファイル上で数行の記述を追加/変更し、アプリケーションを再起動するだけです。アプリケーションとURLのそれぞれの単位で、同時実行スレッド数と占有スレッド数を決めて割り当てていきます。たとえば商品購入手続きの機能に割り当てられたURLに対し、同時実行スレッド数は「5⁠⁠、占有スレッド数を「1」と定義します。これにより、商品購入手続きには最低でも必ず1つのスレッドが割り当てられた状態になり、ほかの処理が行われていても、占有スレッドを使って優先的に処理が行われるというわけです。

セミナーでは、まず流量制御を考慮していない商品購入サイトに対してアクセス負荷をかけてレスポンスが低下することを確認しました。次にcosminexus.xmlを書き換えて商品購入手続き専用のスレッドを割り当て、アプリケーションを再起動して同様の高負荷状態をかけて商品購入を試み、素早いレスポンスが確保されていたことを確認しました。

仮想サーバでの運用を支援

さらにCosminexusには、仮想環境をサポートするためのしくみが用意されています。仮想サーバの構築では、実際にアプリケーションを導入するためには仮想サーバごとにインストール作業や設定を繰り返さなければなりません。構成が大規模になると設定には大変な手間がかかり、手作業によるミスが起こることも十分考えられます。

そこで、Cosminexusではあらかじめ定義しておいた内容を簡単に複数の仮想サーバにデプロイできるという機能を提供しており、業務単位で仮想サーバに対し起動/停止/入れ替えといった操作を行うしくみが用意されています図5⁠。さらに業務単位での仮想サーバのスケールアウト/スケールインにも対応しているため、時期によって特定のアプリケーションに負荷が集中するといった場面で簡単にスケールアウトすることが可能です。

図5 業務単位での仮想サーバの一括起動/停止が可能
図5 業務単位での仮想サーバの一括起動/停止が可能

サーバ仮想化によるリソースの効率的な利用は、コスト削減や消費電力の削減につながります。ただ、その一方で実体を把握しづらいことから運用負荷の増大につながるケースが少なくありません。業務単位で仮想サーバを管理できるしくみは、こうした課題の解決につながる有用な機能と言えるでしょう。

このように Cosminexusは、単に業務アプリケーションのプラットフォームとして活用できるだけでなく、性能解析によるボトルネック個所の特定やURL単位の流量制御、そして仮想化環境支援機能などにより、開発や運用の負荷を低減するためのしくみが盛り込まれているのが特徴です。

現在、Webアプリケーションサーバは多数のプロダクトがリリースされていますが、開発から運用までトータルで業務アプリケーションの利用をサポートするためのしくみが用意されていることが、この製品のアドバンテージだと言えます。

おすすめ記事

記事・ニュース一覧