ページの先頭です。
サイト内の現在位置を表示しています。
  1. ホーム
  2. ソフトウェア
  3. WebOTX
  4. コラム/特集
  5. 大規模バッチを安定的に処理するシステムを実現
ここから本文です。

WebOTX - 大規模バッチを安定的に処理するシステムを実現

「コラム」へ戻る

昨今、ビッグデータというキーワードへ注目が増しており、従来よりも大量のデータをより高速に処理するニーズが高まってきています。「大量のデータをより高速に正確に処理すること」これはコンピュータが生まれた当初から繰り返し取り組まれ続けてきた課題であり、現在でも様々なアプローチが成されています。バッチ処理は、大量のデータをより高速に効率良く処理するアプローチの一つです。

WebOTX Batch Server (以下 WebOTX BS) では、先駆的なクラウド志向サービス提供者のニーズに応え、大規模バッチを安定的に処理するシステムを実現する為の様々な機能強化を行なってきました。

本コラムでは、WebOTX BS V8.4の開発にかかわった開発者へのインタビューを通じて、大規模バッチを安定的に処理するシステムの実現に向けた製品開発者の取り組みをご紹介いたします。

先駆的なクラウド志向サービス提供者のニーズに応える製品強化

NEC 第三ITソフトウェア事業部 門脇 貴之

NEC
第三ITソフトウェア事業部
門脇 貴之

WebOTX BSは、どのような利用シーンを想定した製品であるか教えてください。

バッチ処理もオンライン処理と同じJavaで構築し、アプリケーションロジックの共通化や開発言語スキルの共通化によって、開発コスト・保守コストを抑えたいというニーズが高まる中、大規模なバッチアプリケーションを抱えるお客様は性能や信頼性に不安を持たれておりJavaによる構築の足枷になっていました。
WebOTX BS は、このようなお客様の不安を払拭するために、製品化しました。

また、ここ数年クラウド環境での利用されることが増えてきており、大量データの処理・大量ジョブの実行に耐える信頼性や、計画的な停止が難しいことから連続稼働システムにおける運用性に関する機能強化が求められていました。

そのためにどのような強化を行ったのですか。

信頼性を高める為に、ジョブの実行要求の振分制御・優先度制御機能(※1)を強化しました。これは、限られたマシンリソースの分配を、柔軟に調整する機能であり、大量のジョブ実行要求を効率よくさばく為の仕組みの一つです。

また、運用性を高める為に、バッチアプリケーションの無停止置換機能(※2)を追加し、設定だけでなくバッチアプリケーションの更新を、バッチ業務を停止することなく可能としました。合わせて、各種操作・設定変更を極力動的に、実行中のジョブに影響与えることなく行えるようにし、連続稼働システムでの運用を想定した強化を行いました。
他にも、ジョブスケジューラ製品である WebSAM JobCenter や、バッチアプリケーションを開発するための SystemDirector との連携・親和性を強化しており、バッチアプリケーションの開発から運用までトータルでサポートできるよう整備しています。

機能強化を行うにあたり、工夫した点はありますか。

WebOTX BSは、WebOTX Application Server (以下 WebOTX AS) の基盤機能の多くを共有していますが、オンライン処理とバッチ処理の特性の差が機能を共有する上での課題になりました。
例えば、一つのリクエストの処理は、オンライン処理の場合ミリ秒~秒の単位で実行されますが、バッチ処理の場合は数時間の単位を考慮する必要があります。

バッチアプリケーションの動的置換機能を実現するにあたって、当初WebOTX ASのが備えている仕組みを参考にしました。しかし、既存の仕組みでは、数時間の単位でリクエストが実行状態にあることは想定を超えた条件であり、挙動や考え方が根本的に異なっていました。

このようなオンライン処理とバッチ処理の特性の差について、徹底的に議論・検討・検証を行った上で、バッチ処理の特性に合うよう設計に落としこんでいきました。結果、WebOTXが長年オンライン領域で磨き・培ってきた信頼性の高い機能を活かし、大量データ・大量ジョブの実行に耐える信頼性を備えられたと考えています。

利用者から頂いたご意見を反映した代表的な例を教えてください。

クラウド志向サービスを提供する為に、マルチテナント環境(複数の企業がシステムを共用する環境)のシステム構築を行っていたある利用者の方から頂いたご要望の一つに、アプリケーションがアクセスするデータベースやファイルをテナント毎に分けたいというものがありました。

ご要望を検討する中で、Spring Framework(※3) が提供している仕組みの Application Context に着目し、アプリケーションそのものの Context と、実行時にアプリケーションが利用するリソースの Context は、分離可能であることに気づきました。Context を分けることで、後者をアプリケーションの実行基盤であるWebOTX BSが提供するのが自然な姿となり、これをジョブを投入するテナント毎に設定、変更可能にすることで要件を満たせると考えました。

このような背景の基、追加したのが「ジョブ実行リソースコンテキスト」という機能です。この機能によって、1つのバッチサーバ・OSに構成したWebOTX BSを複数の企業(テナント)が同時に利用する構成でも、ジョブを投入するテナントに応じて、バッチアプリケーションがアクセスするリソースを分離・変更できるようになり、頂いたご要望に応えることができました。

技術支援を行うこともあるそうですが、実際にWebOTX BSを利用したシステム構築に携わり、どのような感想を持ちましたか?

今回の機能強化によって、システムの要件に合わせた柔軟な構成が可能になり、バッチアプリケーションの特性に合わせてリソースの配分を最適に調整することができるようになりました。
例えば、CPUをメインに利用するバッチ処理とデータI/O中心のバッチ処理は、同一のプロセス上で実行させることでメモリ使用効率が高める、多くのメモリを利用するバッチ処理は、別プロセスに分けることで他のバッチ処理への影響を局所化するといった調整が容易に行えます。

他にも、システム構築の現場では、様々な課題が出ます。
WebOTX BSは、オープンソースのSpring Batch(※3) をベースとしている為、製品に直接関係しないものを含めアプリケーションフレームワークの層で柔軟に対応し、課題解決に貢献することができたこともありました。

このような、現場での課題への対応を通じて、製品の改善・強化に繋げるべき気づきを得ることもあります。利用者視点での気付きを大切にし、今後もWebOTX BSを強化・発展させていきたいと考えています。

(2012年12月14日)

WebOTX Batch Server に関するお役立ち資料はこちら

ページの先頭へ戻る