バッチ処理

ジョブ管理システムとは?

ジョブ管理システムの「ジョブ」とは、プログラムやバッチなどの「処理」を指します。プログラムとはシステムを動かすための実行コマンド記述したものであり、バッチとは予め処理に必要なプログラムと手順を与えて一気に処理を行う方法です。

通常、コンピュータが一度の業務で処理されるジョブの数は数百~数万であり、そうした無数のジョブによって業務システムが支えられています。そうしたジョブの中にはデータバックアップや取引処理など決して止めてはならないものが存在します。

ジョブ管理システムは、絶対に止めてはならないジョブを監視し、適切な処理を促すためのシステムです。今回はこのジョブ管理システムについてご紹介します。

 

ジョブ管理システムとは

改めてジョブ管理システムの概要について説明します。

ジョブ管理システムは社内システムを走る複数のジョブ(プログラムやバッチ)の起動・終了・監視・報告を行うためのシステムです。

 

≪ジョブの起動≫

社内システムに無数に存在するジョブにはそれぞれ適切な起動時間があります。たとえば売り上げデータをバッチ処理にてデータベース化する場合、業務中ではなく終業後から深夜にかけて行われるのが一般的です。ただし情報システムがその時間まで常駐するわけにもいかないので、バッチ処理をスケジューリングします。そこに利用されうのがジョブ管理システムです。常にジョブをベストなタイミングで起動することで、日々円滑な業務遂行を助けます。

≪ジョブの終了≫

ジョブには適切な起動時間があれば、適切な終了時間もあります。さらにジョブAが終了したらジョブBを起動するなど、ジョブ切り替えのタイミングにも欠かせません。

≪ジョブの監視≫

ジョブ管理システムで最も重要なポイントは「監視」です。実行中のジョブが正常に処理されているか、遅延や問題は発生していないかなどを監視し、円滑な処理を促します。

≪ジョブの報告≫

ジョブを監視した結果、問題があれば管理者に報告します。あるいはジョブが正常に処理されていることを報告します。

 

以上がジョブ管理システムの概要と機能です。色々な業務システムと比較すると、ジョブ管理システムは機能が少ないシステムの一つでしょう。しかし社内システムが正常に稼働するかどうかを担う重要なシステムです。

 

ちなみにジョブ管理システムは「サーバ型」と「エージェント型」の2種類があります。サーバ型とはジョブ管理サーバを設置し、ネットワーク上にあるシステム全体を監視するジョブ管理システムです。一方エージェント型は管理対象となるサーバにソフトウェアインストールして、対象サーバのみを監視します。前者の方がコストはかかるがシステム全体を監視できるメリットがあり、後者は監視が限定的でも低コストに導入できるというメリットがあります。

 

ジョブ管理システムが必要な理由

社内システムに存在するジョブは日々複雑化しています。オンプレミス環境とクラウド環境の混合、仮想化環境など複雑化の要因は様々です。共通して言えることはジョブ管理が複雑になり、人為的ミスが発生しやすくなることでしょう。

先述の通りジョブには「絶対に止めてはいけないもの」があります。たとえば夜間バッチ処理における「売上集計」「データ転送」「仕入決定」などです。これらのジョブは何らかの原因によって止まったり遅延を起きたりすると、業務に支障をきたします。

それはつまり業務および取引の遅延を意味し、機会損失の発生など経営上大きな打撃を受ける原因になるでしょう。こうした問題を回避するためにも、ジョブ管理システムによってジョブを適切に管理することが大切です。

ジョブ管理システムが必要なわけは他にもあります。「管理者工数を削減する」というのも重要なポイントです。

日本が今、慢性的なIT人材不足に陥っていることは、正確なデータを目にせずとも多くの経営者が肌で実感していることかと思います。実際に経済産業省の調べでは、21万人以上のIT人材が不足しており、2030年にはこれが79万人まで膨らむと予測しています。

引用:経済産業省「IT人材の最新動向と将来推計に関する調査結果~ 報告書概要版 ~

こうした時代背景の中で優秀なIT人材を確保することは非常に困難です。多くのIT人材は大企業に流動し、中小企業では時代の煽りをうけて慢性的なIT人材不足に陥っています。そこでIT人材活用の有効な選択肢が「生産性向上」です。無理にIT人材を確保するのではなく、いまいるIT人材の生産性を確保することで、ビジネスの拡大を図ります。

だからこそジョブ管理システムで管理者工数を削減し、IT人材の生産性を向上するための取り組みが大切です。よく「ジョブ管理システムは管理者を楽させるためのシステム」と誤解されがちです。実際は、「管理者工数を減らす生産性を向上させ、IT人材の有効活用でビジネスを拡大するためのシステム」です。

 

主なジョブ管理システム

ジョブ管理システムは様々な製品が登場しているものの、市場の中心となっているのはオープンソースソフトウェア(OSS)です。OSSはライセンスを無償で提供しているソフトウェアであり、誰でも自由に導入・改修・再配布が行えます。ここではOSSを中心に主なジョブ管理システムをご紹介します。

 

Azkaban

Azkabanバッチ処理のワークフローをWebユーザーインターフェースでスケジュール管理可能にしたシンプルなツールです。 依存関係にあるジョブのフローを管理したり、それらのジョブのリトライやエラー通知、実行ログの表示などが備わっています

https://azkaban.github.io/

 

Airflow

airbnbがオープンソースで開発したジョブ管理システムです。Airflowはバッチ同士の関係や実行を管理します。実行した際のログや実行時間の推移など、様々なデータの閲覧を行うことも可能です。現在ではApache Incubatorのオープンソースプロジェクトとなっています。

https://airflow.apache.org/

 

JobScheduler

JobSchedulerはドイツのSoftware und Organisations-Service GmbHで開発されたジョブ管理システムです。2003年から提供が開始された商用版と、2005年より提供が開始されたオープンソース版があります。実行環境はLinux、Windowsに標準対応しており、ライセンスを購入することでSolaris、AIX、HP-UXでも動作します。

https://www.ossl.co.jp/?page_id=148

 

まとめ

皆さんの企業では、現在どれくらいのジョブが社内システムを走っていて、どれくらいのジョブが正常に終了し、どれくらいのエラーが発生しているかを把握しているでしょうか?業務システムが正常に動作しなかったり、バッチ処理が予定通りに終わらないといった問題の原因は、もしかするとジョブ管理にあるかもしれません。この機会に、ジョブ管理システムの導入をご検討ください。

「ODIP」による品質向上とコスト削減効果とは

「ODIP」による品質向上とコスト削減効果とは
株式会社レイヤーズ・コンサルティング様は、超高速開発ツール「ODIP(オーディップ)」を用いて、大規模バッチシステムの再構築を成功させました。大規模システムにおける超高速開発ツールの適用事例は少ないですが、同社は、どのようにプロジェクトを成功に導いたのでしょうか。

本資料ではプロジェクトを成功に導いたポイントと成果をご紹介します。

ダウンロード

ODIP Enterprise Solution
機械学習のアルゴリズムって何?バッチシステムとリアルタイムシステムの違い