右往左往ブログ

日々よりみち

最近のジョブスケジューラは何がいいのか

仕事でJenkinsを使ってるのですが、Jenkinsをビルドツール以上に、「定期実行してくれるもの全て」を管理するジョブ管理ツールとして使うことに疑問を覚えたので、メモします。

Jenkinsは継続的インテグレーションツールであって、ジョブ管理ツールではないと思うのです。

巷の記事を見ると、大抵「Jenkinsはジョブ管理の代替になる」という論調ばかりなのですが、Jenkinsをジョブ管理ツールとして使うには、かなり無理があるのではないかと思います。

というのも、ジョブ管理ツールに求めるのは

  • どのサーバで動いているか
  • 同一時刻にどんな処理が動いてるか
  • どのジョブとどのジョブが関連しているか

といった情報を設定でき、管理できることなのですが、1つ目はそもそもJenkins単体だとローカルでしか動かないので把握できない(sshなどでリモート実行は当然可能だが、それは処理を見ないと分からない)、2つ目は過去の実行履歴としては見られるが、定義としては俯瞰できない、3つ目はBuild Flow pluginBuild Pipeline pluginとしては実現可能ですが、細かいところで微妙に使いづらいのです。(Build Flowは、ジョブ間の繋がりを1つの定義ビューからしか追えないことや、実行後でないとgraphとして見ることができない点。Build Pipelineは、同一ジョブを複数のpipelineで使いまわせない点や、ジョブの"合流"ができない点)

確かにcronよりは遥かにマシですが、ジョブ管理ツールとして比べるにはかなり無理があるような気がしてなりません。そもそもJenkinsは"Build"というように、ビルドに特化したツールだと思うので、上記のような機能が充実してなくても違和感はないのですが、むしろ世間の「Jenkinsはジョブ管理として使える」という風潮は本当にそうなのだろうか?と思ったりします…。

一応ジョブ管理のツールとしては以下のようなものがあるようなのですが、とはいえこのへんのツールが最近の勉強会で取りざたされることはないような気がします(知らないだけかもしれません)。

qiita.com

世の中の企業はどうやってジョブ管理してるんでしょうか?