仕組みから学ぶ Web
発展読了目安 30 分#バッチ#決済#整合性#突き合わせ#インシデント対応

「今月、2 回引き落とされています」— 夜間の更新バッチを、朝に流し直した

月次の更新課金バッチが夜中に止まった。朝、担当者が流し直した。昼には、2 回引き落とされた人と、1 回も引き落とされていないのに使えている人が、両方いた。5 つの判断点で、あなたは何を選びますか。

このケースで問われること

このケースは、外部に書き込むバッチが途中で止まったとき、何が残っていて、どう確かめ、どう直すかを扱います。

バッチを流し直したのは、担当者の善意でした。止まったものを最後まで終わらせようとした。ところが、バッチは誰に課金したかを覚えていませんでした。決済サービスと自社の DB は 1 つのトランザクションにならず、その間で止まった人もいます。

結果として、2 回払った人、払っていないのに使える人、正しく 1 回の人が混ざっています。どれが誰なのかは、まだ誰も分かっていません。

順に 5 つの判断点があります。それぞれで一度自分の答えを決めてから、先へ進んでください。結論を先に読むと、判断の練習になりません。

扱う範囲は ops/batch-jobs・api/dual-write・api/idempotency・ops/slo・ops/incident-response にまたがります。

読み終わりましたか?

読了にすると、これを前提とする記事がロードマップで開放されます。

このケースが扱う仕組み