Idempotency とは、操作を 複数回実行しても 1 回実行するのと同じ効果を持つ ことを意味します。ネットワークが信頼できないため重要です: client がリクエストを送ってレスポンスが決して届かないとき、server が処理したかどうか判別できません。retry すれば、非 idempotent な操作は 2 回走るかもしれません。
問題
Client ──POST /payments {$100}──▶ Server ($100 を課金 ✓)
Client ◀────────X (timeout)────── Server (response が失われる)
Client ──POST /payments {$100}──▶ Server ($100 を再び課金 ✗ → $200!)
、、 は自然に idempotent なので、retry しても安全です。 は — まさにここから重複課金や重複 order が生まれます。
