可用性・トランザクション

オンライン決済を含む予約システムのレジリエンス設計

予約枠確保と外部決済を分離し、障害時の状態不整合を制御する。

ケース

K社はイベント予約サービスを運営している。利用者は空席を選択し、クレジットカード決済後に予約確定する。人気イベントの発売開始直後には毎秒500件の予約要求が集中する。外部決済サービスは通常200ms程度で応答するが、まれに数十秒遅延又はタイムアウトする。 座席を決済完了まで無期限に確保すると販売機会を失うため、仮確保は5分で失効させたい。一方、決済サービス側ではタイムアウトしても実際には決済済みの場合がある。予約システムがタイムアウトを理由に仮確保を解放し、その後決済成功通知を受けると、座席が別利用者へ販売済みになっている可能性がある。 決済サービスは決済IDによる結果照会APIとWebhookを提供する。

設問

設問 1

発売開始時の二重予約を防ぐための座席確保方式を述べよ。

0文字

設問 2

決済タイムアウト時に直ちに失敗確定としてはいけない理由と、状態管理方法を説明せよ。

0文字

設問 3

5分の仮確保期限と決済状態を整合させるための処理を述べよ。

0文字

設問 4

Webhookが重複到着した場合にも安全に処理するために必要な設計を述べよ。

0文字