Part 16 · Capstone & Mock Interview

Idempotency là persisted protocol, không phải cache mẹo

Timeout khiến client không biết effect đã xảy ra; payment endpoint phải trả cùng semantic result cho cùng command identity.

Contract

Idempotency-Key scoped theo caller/operation; canonical request fingerprint. First request tạo processing/result record; duplicate cùng payload replay response, khác payload conflict.

Atomicity

Unique key + transaction/locking đảm bảo một owner thực thi effect. Record status PROCESSING/SUCCEEDED/FAILED_UNKNOWN; crash recovery có lease/timeout và provider reconciliation.

Money và provider

Minor units/decimal, currency explicit; không dùng binary float. Tách internal payment ID, client key và provider reference; redact provider payload/token.

Tests

Concurrent duplicates, timeout after commit, crash before/after provider effect, mismatched payload, key expiry và replay. Verify one effect và stable response/audit.

IETF Idempotency-Key draft · Stripe Idempotent Requests