定期公表データの取り込みは、実行間隔を公表周期より短くする(実行時刻を当てにいかない)
設計判断
データインポート
バッチ
判断
運用
外部組織が定期的に差し替える公表資料を取り込むバッチで、実行間隔を公表周期と同じにすると、恒久的に1周期遅れ続ける事故が起きる。
何が起きるか
公表資料には「基準日」が書かれているが、それが実際にページへ載る時刻とは一致しない。基準日が週初でも、掲載作業は同じ日の業務時間中に行われる。取り込みを同じ周期・同じ曜日の早朝に置くと、毎回まだ前の版しか見えず、次の機会は次の周期まで来ない。誰も気づかないまま、公開しているデータが常に1周期古い状態で安定してしまう。
偶発的な遅延ではなく位相のずれが固定されるのが厄介な点で、時間が経っても自然には解消しない。
判断
実行時刻を「公表されそうな時刻の後」へ動かして合わせにいくより、実行間隔を公表周期より十分短くする(週次公表なら日次で回す)ほうが頑健。公表側は「随時更新」としか約束していないことが多く、掲載時刻は相手の都合で動くため、推定した時刻に賭ける設計は壊れやすい。
適用条件は、取り込みが冪等であること。同一内容(ハッシュ一致)なら新しい版を作らずに終了する作りなら、頻度を上げるコストは監視ページを1枚取得するだけで、fail-closed の検証もそのまま効く。冪等でないなら先に冪等化するほうが先決。
検証方法
公開している「基準日」と、公表元ページに書かれている基準日を突き合わせる。両者が定常的にずれていたら、失敗ではなく位相のずれを疑う。実行ログが正常終了していても同じで、むしろ正常終了しているときほどこの型を見落とす。