更新対象が途中で変わっても、担当範囲をずらさない
大量のデータを複数回に分けて更新するとき、毎回その時点の一覧を切り分けるだけでは危うい。処理中に対象が増減すると、同じ項目を二度更新したり、一部を飛ばしたりするからです。
起きていたこと
以前の処理は、現在の一覧から順番に対象を取り出していました。更新の途中で一覧が変わると、次の実行枠が担当する範囲も動きます。
回数を増やすだけでは、このずれは直りません。どの実行枠がどの対象を受け持つかを、処理開始後も変わらない形で残す必要がありました。
変更
開発チームは、更新周期の開始時に対象IDを保存し、固定した一覧から各実行枠の担当範囲を求める方式へ変えました。実行枠には明示的な番号と上限を持たせ、途中で現在の一覧が変わっても境界が動かないようにしました。
移行手順、同時実行、監視、戻し方も同じ変更に含めています。
確認できたこと
対象の追加や削除が途中で発生する条件、実行枠の境界、上限、再実行をテストしました。データ移行と定期実行の設定を含む変更がレビューを経てマージされたことを確認しています。
本番反映の有無は、この記録では確認できません。
VibeProの寄与
VibeProが更新方式を自動で選んだわけではありません。Storyで取りこぼしと重複を利用者側の失敗として書き、Architectureで固定一覧を正本にし、Specとテストで境界条件を追えるようにしました。
まだ言えないこと
本番での全実行枠の完走率、データの鮮度、再実行の減少量は確認できていません。売上、顧客満足度、工数削減、不具合削減率も推定していません。