定期的に実行したい処理が複数あるのだが、アプリがコンテナで動くことを前提にするとホストシステムのcronを使うのはちょっとなー...という感があり、かといってRundeckはちょっと大袈裟な感じがあるかなといったところで、軽量でコンテナで動きそうなジョブスケジューラを探していたので助かった。
Jobberなんかは求めてたものに近そうな気がする。
適当にドキュメントを読みながら考えてみたが、幾つか問題点がありそうな気がしてきた。
そう考えるとジョブスケジューラのようなミドルウェアを使い定期的な処理を集約するのではなく、プログラム単体でスケジューリングを行う自己完結したプログラムを個別にコンテナ化しておく方が運用は楽な気がしてきた。
大抵の言語には定期実行をスケジューリングするライブラリが存在するのでそれらを利用すればよい。
ただ、こちらの方法にも問題があり、それは定期実行を行う処理が個別のコンテナとして散らばるのでcronで管理していた時より利用状況が見えにくくなること。
cronで管理している場合は、最悪crontabを片っ端から見ていけば実行される処理を特定することができたものが、それぞれの処理が個別のコンテナとして分散すると管理不能になる恐れがある。
とはいえ、まさにそのためにコンテナオーケストレーションツール(Kubernetes)が存在するのだという話でもあるので、コンテナの数が増えるのが目に見えてるなら素直にKubernetes使いましょうということになるのではないだろうか。
今回の想定はローカルマシン or LAN内サーバで定期的に特定の処理を行いたいだけだったので、docker-compose + スケジューリングライブラリの組み合わせが妥当かなという結論に至った。