IBM Workload Scheduler で管理可能なジョブタイプ

世間がお盆モードなのを良いことに、日頃書きたくてもなかなか書くまでに至らない記事をせっせと書いています。この記事では、IBMのジョブスケジューラーである IBM Workload Scheduler がいかに多くのタイプのジョブを管理できるかをご紹介したいと思います。

# IBM Workload Scheduler(IWS) とは
この記事に辿り着かれた方には釈迦に説法かもしれませんが、一応。
IBM Workload Schedulerとは IBM が提供するジョブスケジューラーです。DBサーバーで日々走る夜間バッチ、夜間バッチ前後のバックアップ、様々なサーバーでのログの洗い替えなど、システムで定期的に実行する必要のある処理（ジョブ）をスケジュールに従って自動実行してくれる製品です。
20年以上の歴史があり、実績のあるコアの部分は残しつつ、ITの進化とともにその時々で求められる機能や新しい技術に対応し、今も進化を続けています。

# クラウド時代のジョブ管理とIWS
IWSを含む多くのジョブスケジューラーがこれまで管理してきた「ジョブ」は、システム開発プロジェクトで開発されたスクリプトや業務アプリに関連したプログラムが主流でした。オンプレミスやプライベート・クラウドに構築されたシステムの様々なサーバーで、決まった日時や決まった順序でこれらのスクリプトやプログラムを起動することが一般的でした。システムの外部と連携することはあまりなく、他システムとの連携はファイル転送などを介して連携していました。

現在ではパブリッククラウドを利用することが当たり前となり、ジョブ管理においては次のような新たな要件が生まれつつあります。

* オンプレミスのシステムとクラウド上のシステム間のジョブ連携
* クラウド上の各種サービス(SaaS,PaaS,IaaS）を利用したジョブ実行
* コンテナ環境のジョブ管理

また、1つのシステム内でも様々な製品を利用しており、それらの製品で行う定型処理もジョブスケジューラーでまとめて管理したい、といった以前からの要件も健在です。

IWSはこれらの要件に対応するために、多数の「プラグイン」を提供しています。
プラグインは、IWS外のサービスや製品とAPI連携して何らかの処理を起動し、その結果も管理してくれます。プラグインを利用すると、ユーザーはIWSのUIで外部サービスや製品に接続するための認証情報、実行したい処理、その他必要なパラメーターを指定するだけで、それらのサービスや製品の処理を起動できます。外部サービスや製品を呼び出すためのスクリプトやプログラムを手組みする必要はありません。

例えばデータベースで何らかのクエリーを実行したい場合、ジョブを定義する際に「データベース」というジョブタイプを指定します。
![スクリーンショット 2023-08-17 13.02.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/f8cd3fd4-c77d-56db-60e8-4d5e0631039f.png)

するとデータベースに対してクエリーを発行するジョブを定義する画面が表示され、データベースシステムの種類、DBサーバーへの接続情報やドライバーのパス、実行するクエリーやその結果を出力するファイルなどを指定できます。
![スクリーンショット 2023-08-17 13.07.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/7f837060-91b8-b59c-eb86-b70101d04ace.png)
![スクリーンショット 2023-08-17 13.09.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/1c9c37ff-ef5b-1d46-0e86-05e1e0397e53.png)

データベースシステムだけでなく、ERPシステムなど様々な製品やテクノロジーに対応したプラグインが提供されており、これらのプラグインを利用することで様々なタイプのジョブを起動できるようになります。

# IWSで管理可能なジョブタイプ
では本題です。プラグインを利用することで具体的にどのようなタイプのジョブを管理できるのでしょうか。IWS初期導入時は大きく分けて次のカテゴリーのジョブ・タイプを利用でき、様々なタイプのジョブを管理可能です。

|カテゴリー |概要|定義可能なジョブ・タイプ|
|---|---|---|
|ネイティブ|UNIX/Linux、Windows、IBM i,z/OSで実行するスクリプトやプログラム|UNIX/Linuxジョブ<br>Windowsジョブ<br>IBM iジョブ<br>z/OSジョブ<br>リモート・コマンド・ジョブ<br>etc.|
|ERP|SAPなどERPシステムとの連携|SAPジョブ<br>その他ERPシステム(Oracleなど)<br>etc.|
|クラウド|クラウド環境でのジョブ実行|Kubernetesバッチ・ジョブ|
|ファイルの転送と調整|他のIWS環境、ファイル転送ジョブやファイルの暗号化を行うジョブタイプ|IWSサーバー間連携（z/OS)<br>IWSサーバー間連携(分散）<br>ファイル転送ジョブ<br>ファイル暗号化ジョブ<br>ファイルの圧縮ジョブ<br>Sterling Connectジョブ<br>.etc|
|データベースおよび統合|各種データベースシステムに対応したジョブ、REST APIジョブなど|Javaクラス実行ジョブ<br>JSR 352 Java Batchジョブ<br>Rest APIジョブ<br>データベースシステム（IBM Db2,Oracle,MS SQLなど）のジョブ|
|自動化ユーティリティー|IWSの操作を自動化するジョブタイプ|IWSエージェント更新ジョブ<br>ジョブ・ストリームの実行依頼<br>ジョブ管理<br>変数テーブル更新ジョブ|

さらに、[Automation Hub](https://www.yourautomationhub.io/integrations "Automation Hub") から追加のプラグインをダウンロードしてIWSサーバーに配置することで、より多くのタイプのジョブを管理可能となります。
例えばクラウド・サービスとの連携であれば AWS Batch や Google Cloud Batch などと連携するプラグインがあります。AnsibleのPlaybookを実行するプラグインもありますし、最近ではIBM RPAと連携するプラグインもリリースされました。
具体的な連携要件がある場合は、Automation Hubで連携先に対応するプラグインの有無を確認できます。2023/8/17現在、100以上のプラグインが公開されています。プラグインは随時追加されていきますので、今はないタイプのプラグインでも今後追加される可能性があります。

# まとめ
様々なクラウドサービスや製品のジョブを管理する要件がある場合、IWSならより容易に連携できる可能性があります。クラウド環境で利用可能なジョブスケジューラーをお探しの場合は、ぜひIWSも検討候補に入れてみてください。

本記事は以上です。