① 決める
- 二重に起きたら困る操作を1つに絞ったか
- 「同じ依頼」とみなす条件(冪等キー)を1行で書けたか
- そのキーを、誰が発番するか決めたか
- キーが一意である範囲(利用者ごと・全体など)を決めたか
- キーの保存期間を日数で決めたか
- 本当に2回目の正しい依頼を、誤って弾かない形になっているか
② 弾く
- 冪等キーに一意制約を張ったか(適用済みのスキーマで確認したか)
- 「存在を確認してから登録」に頼っていないか
- 制約違反を、エラーではなく「処理済み」の合図として扱っているか
- 処理の記録と業務データを、同じトランザクションで確定しているか
- 「受付済み・処理中・完了」の状態を持たせたか
- 外部サービスの呼び出しをトランザクションの外に出したか
③ 返す
- 完了済みの2回目に、1回目と同じ結果を返しているか
- 処理中の2回目に、状態が分かる形で返しているか
- 同じキーで中身が違うときに、通さない扱いにしたか
- 返し方を、送り手側と合わせたか
- 重複を検知した件数をログに残しているか
- 同じキーで2回・同時に2回・処理中に2回、のテストを書いたか
この内容は記事「AIに冪等性の設計を相談する|リトライで二重実行させない型」のチェックリストです。印刷してそのままお使いいただけます。 / 無料ツール一覧へ