Tech Sketch Bucket of Technical Chips by TIS Inc.

OSSのJobSchedulerを使ってジョブ管理

Pocket

皆さん、Job管理はどのように行なっていますか?

簡単なものであればcronで実行している方も多いかと思います。
ジョブ同士に関連を持たせたりと複雑な管理をする場合には JP1A-AUTOTivoli 等の商用ツールを利用する場面もあります。
OSSのジョブ管理ツールとしては Hinemos が有名ではないでしょうか。
今回紹介するのは、OSSで、かつ非常に多機能なジョブ管理ツールである「 JobScheduler 」です。

JobSchedulerは、ドイツの企業である「 Software-und Organisations-Service GmbH (以降、SOS社とする)」が開発を行なっています。

JobSchedulerは非常に有用な機能を多く含んでおり、
また、ヨーロッパを中心に非常に多くの利用実績があります。
金融機関のシステムなど、ミッション・クリティカルな場面での利用実績も多くあるようです。
Swiss PostU.S. Group Reinsurance RGA Reinsurance Company 等、保険・金融事業を取り扱う企業でも採用されています。
最新の事例としては、ドイツの証券取引所である Deutsche Börse AGSBroker といったところでも採用されたそうです。
リスク計算処理やファイル転送、バックアップ、メンテナンスタスク等を自動化するためにJobSchedulerが活用されてます。
その他、公開事例は SOS社のWebページ を参照下さい。

Linux/Windowsともに対応しており、Linux/Windows版は全てGPLのもと、全てOSSとして公開されています。
また、SOS社のサポートライセンスを購入することでHP-UX/Solaris/AIXでも利用できます。
Java、Perl、JavaScript、VBScript、ShellScript等で記述したジョブの実行管理が可能です。
現時点で日本語対応はしていませんが、非常に有用な機能を保有しているため利用価値があるのではないかと考えています。
(英語・ドイツ語・フランス語・スペイン語に対応済み)

JobSchedulerがどういった機能を持っているのかを簡単に紹介したいと思います。
また、先日JobSchedulerの開発企業であるSOS社のベルリン本社を訪問してきたので、開発者の方に直接伺った話なども併せて紹介したいと思います。


JobSchedulerのアーキテクチャ

JobSchedulerは以下のコンポーネントから成り立っています。

  • JobScheduler Engine
    • ジョブの管理を行うメインエンジン
  • Job Operation Center ( JOC )
    • Jobの実行結果確認や手動ジョブ実行制御を行うためのWeb管理画面コンソール
  • JobScheduler Object Editor ( JOE )
    • Jobを編集できるクライアントアプリケーション
  • JobScheduler Information Dashboard ( JID )
    • JOC,JOE含めてジョブの登録・実行・確認を統合して実施可能なクライアントアプリケーション
  • JobScheduler Integrated Template Library ( JITL )
    • ログローテーション、ファイル転送、メール送信等、ジョブ管理に必要な処理をまとめたテンプレートライブラリ

js_joc.png

JOC Webコンソール画面

js_joe.png

JOEクライアント画面

js_jid.png

JIDクライアント画面

基本的な流れとしては、以下のようになります。

  1. JOEでジョブ作成
  2. JobScheduler Engineが実行処理
  3. 実行結果はJOCまたはJIDから確認(実行結果についてはDBに保存されます)

ジョブについては、JOEを利用して作成することも可能ですが、
ジョブの実態は全てXMLファイルです。
そのため、以下のようなXMLファイルを作成し、特定のディレクトリに配置すれば、JOEを利用しなくてもジョブの登録が可能になります。

また、JobSchedulerはAPIベースで開発されており、
外部からJobSchedulerのREST APIを利用して全ての操作を行うことが可能です。
APIを操作するためのコマンド も用意されています。

JobSchedulerの中心を担うJobScheduler Engineについては、
単体で構成することも可能ですが、Active-Standbyの冗長構成、複数のJobScheduler Engineによる負荷分散構成を取ることが可能です。
このような構成にすることで、安定してジョブ管理を行うことが可能になります。

js_arch_single.png

シングル構成

js_arch_availability.png

冗長構成

js_arch_loadbalance.png

負荷分散構成

※上記3アーキテクチャ図は JobSchedulerアーキテクチャ解説ドキュメント より引用

JobSchedulerでできること

JobSchedulerで実現できるジョブ管理機能の一部を紹介します。

  • カレンダー機能
  • ジョブチェイン機能

カレンダー機能

ジョブの管理には欠かせない機能としてカレンダー機能があるかと思います。
祝日に合わせたジョブの実行や、企業ごとに異なる休日の設定など、どこまで柔軟にジョブの実行日時を指定できるかで採用できるかどうかが変わってきます。
JobSchedulerでは以下のような指定が可能です。

  • 月・日・時間・曜日指定による定期ジョブ実行
  • 特定の日時指定によるジョブ実行
  • 休日指定によるジョブ実行しない日の設定

もちろん、手動でジョブ実行することも可能です。
また、以下のような場合にも対応可能です。

ジョブの要件

  • 毎月15日に実行
  • その月の15日が非営業日の場合、前の営業日に実行

会計処理など、こういったジョブ実行が必要な場面もあるかと思います。
このようなカレンダーに基づいた処理にも柔軟に対応可能です。
ジョブ実行日が休日と重なった場合の処理の選択肢としては、以下の4つがあります。

  • 直前の休日でない日に実行する (previous non holiday)
  • 次の休日でない日に実行する (next non holiday)
  • 実行しない (suppress execution)
  • 休日であっても無視して実行する (ignore holiday)

ジョブチェイン機能

ジョブ単体での実行管理だけでなく、ジョブ同士のフローに関しても管理可能です。
JobSchedulerではこの機能をジョブチェイン機能と言います。

ジョブの依存関係を設定し、複数ジョブの一連の流れとして管理することができます。
ジョブチェインの途中でエラーが発生した場合には、ログで状況確認後、継続して処理させたり、
ジョブチェインを中止したり、再度ジョブチェインを実行し直すなどの制御が可能です。
通常のジョブ管理システムで実施できることは基本的にカバーしているかと思います。

登録したジョブチェインの状況はJOCのコンソールから視覚的にも見やすく図示されます。

js_jobnet.png

Software-und Organisations-Service GmbH訪問記録

最後に、2012/09/24にドイツ ベルリンにある本社オフィスを訪問した時にお聞きすることができた情報を紹介します。

本社オフィスはベルリンのツォー(ベルリン動物園)駅から歩いて10分程行ったところにあります。


大きな地図で見る

JobSchedulerの開発は、現在5名で実施されているそうで、
オフィスは小さいビルの1フロアといった感じでした。

訪問時には、CEO兼CTOであるKlaus-Dieter Büttner氏、技術者であるUwe Risse氏、Dagmar Reimold氏に対応いただき、
JobSchedulerの実際のデモ環境を見ながら、機能の紹介や、事例の紹介などお聞きすることができました。

以下に、その中でも興味深かった話題をまとめます。

  • ジョブ管理の規模について
    • ジョブの件数が数万件の大規模環境でも運用している実績がある
    • JobSchedulerを分散構成にすることである程度の対応が可能になる
    • ただし、数万件規模になるとJobSchedulerのサーバ機器にある程度のスペックが必要となる
    • 導入を検討する際には、数千規模のジョブ管理から試してみることを推奨
  • 実行履歴の保存はRDBMSを利用しており、NoSQLへのデータ格納は未対応
    • H2データベースというJavaのDatabaseエンジンへの対応を検討されている
  • 事例
    • デンマークの世界最大の輸送会社、ドイツで最大手の銀行などで数年間に渡って利用されている実績あり
  • AWSでの利用について
    • クラウド上での利用も視野に入れている
    • Amazon LinuxでのJobScheduler利用方法は こちら

まとめ

日本ではあまり名前を聞かないJobSchedulerですが、
非常によくできたツールではないかと思います。
SOS社ではJobSchedulerだけでなく、JADE及びSOSFtpというツールも展開されています。
これらのツールは、ファイル転送管理を実現するOSSです。
特に、JADEはJobSchedulerとの連携を実現しています。
商用製品であれば「 HULFT 」、「 OPENWAY FT 」など高機能なファイル転送ツールがあるかと思います。
しかし、OSSでここまで実現できるジョブ管理ツールはは他にはないのではないでしょうか。
これらのツールを組み合わせることでファイル転送も含めたジョブ管理が全てOSSで実現できるかもしれません。
今回は概要のみの紹介でしたが、今後、実際に使ってみた内容やその設定方法など紹介したいと思います。

エンジニア採用中!私たちと一緒に働いてみませんか?