冪等性って何?
エレベーターのボタンを10回押しても、反応するのは1回です。ネット通販で「支払う」を連打しても、理想的には1回しか引き落とされません。「何度やっても結果が同じ」というこの性質が、冪等性(Idempotency)です。なぜエージェントに必要なのか
エージェントはリトライする通信の乱れ、タイムアウト、エラー……エージェントは「もう一度」をよく求められます。リトライのたびに課金されたら大変です。
複数のエージェントが同じことをやりかねない
仕事を分担すると、2つのエージェントが同じ動作を同時に実行することがあります。冪等なら重複実行は無害です。
冪等と非冪等
冪等な操作データの読み取り、確定した値を設定する(PUT)、特定リソースの削除——何度やっても変わりません。
非冪等な操作
「口座に100円足す」のような累積は、やるたびに変わります。冪等キーで保護が必要です。
冪等にするには
リクエストに一意のIDを付けるクライアントが操作ごとに冪等キーを発行し、サーバーは「処理済み」を記録して重複を無視します。
「足す」より「設定する」
操作は「1を足す」ではなく「Xにする」と設計します。
データベースで守る
一意インデックスやトランザクションで、保存層から重複書き込みを防ぎます。
まとめ:冪等とは「繰り返しても、二重に数えない」ことです。
コメント