青木峰郎
- 情報系(DWH)のSQLバッチ
- 大量のデータをひたすら集計(一個一個はそんなに重くない)
- ジョブ数が多くてフローが複雑 1000ジョブ
- DWH 13000くらいが多いけど、1000は少ない
- kuroko2 + bricolage
http://techlife.cookpad.com/entry/2015/06/27/154407
- SQLバッチ専用フレームワーク(OSS)
1ジョブ/1SQL文の強固な思想
- よいバッチを作るために必要だから
良いバッチ=運用しやすい
- 落ちたときに如何に簡単に対処できるか
- 運用がしにくくなるようであるなら運用を優先したい
- 美しく壊れる 障害を直しやすい
美しい壊れ方とは
- どこで壊れたかすぐわかる
- 続きから実行できる
- リトライで直せる
cf
- どこで壊れたか分からないプログラムは困る
- バッチはだいたい長時間実行しているし、処理が複数別れている 9割がた終わってて、ジョブが失敗したら、せめて8割5分くらいのところから再開してほしい
- ちょっとだけ直したらリトライしたい
美しく壊すためのバッチ構築ルール
- こういうふうに作れば美しくバッチを壊せる
- 処理はひたすら細かく分割する
- モノリシックな巨大ジョブは細かく砕く bricolage
- I/O対象ごとにジョブ分割する
- 中間テーブルが違うならジョブは分ける
- ジョブ管理システムで統合
- kuroko2を使う
- 失敗したジョブはグラフィカルに確認したい
- 細かくジョブを分けてるので再実行しやすい
- べきとうバッチの記述
- 1個1個のジョブをリトライ可能なようにする