System Design
決済 API で冪等性キーを持たないと何が起こる?
状況 クライアントからの決済リクエストは、タイムアウト時に自動リトライされます。サーバー側では同じ注文かどうかを本文だけでは厳密に識別していません。 問い この API で冪等性キーを持たないと、どのような失敗が起きやすいでしょうか。特に「...
次の問題へまず考えてから解説へ進みます。答えを覚えるより、判断の理由を言えることを重視します。
Question
商品詳細 API のレスポンスを Redis にキャッシュしています。更新時の個別無効化はまだ入っておらず、現在は `TTL=10分` のみで運用しています。
この設計はなぜ危ないでしょうか。特に、どの条件で実害が出やすいかを説明してください。
Notes
Explanation
最終更新: 2026-04-20
TTL だけに頼ると、更新後しばらく古い値を返すことを許容する設計になります。価格や在庫のように利用者の判断へ直結する情報では、この遅延が単なる表示ズレでは済みません。
無効化ロジックを入れると実装は複雑になります。とはいえ、重要データの誤表示コストが高いなら、単純さより整合性を優先する理由が立ちます。
TTL は悪ではありません。更新頻度が低く、多少の古さが実害にならない情報なら十分妥当です。問題は、TTL を使うことではなく、整合性要件を確認せず一律に採用することです。
Self Check
この記録はこのブラウザに保存されます。あとで見返す問題の整理に使えます。