インフラを担当していてめでたくリリースとなった月は多くのジョブ実行失敗に見まわれるかもしれません。そしてこれらジョブの実行は次週または次月に再度やってきます。ジョブの実行日程が整理されていない場合どのジョブの対応を優先するかも分からなくなってきます。
今回はジョブ日程の管理に関する話題です。
多くのジョブは 秒・分・日・曜日等の単位で実行可能です。ジョブ管理ツールであればさらにこの時間単位の設定に依存関係を持たせることが可能です(「ジョブ B が成功したらジョブ A を実行」等)。
一方、標準で「ロードアベレージが 10 以上となっていれば数分後に実行」等の"負荷を見越した判定"をしてくれるジョブ管理ツールはほとんど見かけません。
なぜ"負荷を見越した判定"が必要かと言うと、ジョブ管理ツール(cron からプロダクトまで)が管理していないプログラムは常に OS 上で動き続けている為です。よく話題となるのがバックアップです。
バックアップ処理はその多くが高負荷状態となります。ただ、これらは大抵プロダクト等で実行されジョブ管理ツールでは管理されていません。
その為、バックアップ処理実行中の高負荷状態の時でもジョブ管理ツールはジョブを実行しようとします。こういった状況を打開するにはジョブの日程管理が必要になってきます。