advanced

Idempotency

Делайте commands, handlers и APIs safe to retry через idempotency keys, natural uniqueness и explicit duplicate handling.

Retries, at-least-once delivery и client timeouts делают duplicate execution нормой. Идемпотентность гарантирует, что повтор той же операции даёт тот же outcome: idempotency keys на APIs, natural uniqueness constraints или stored results по request ID.

Компромисс: хранение keys и results против корректности при сбоях. TTL keys балансируют память и retry windows.

На интервью: спроектируйте payment API, безопасный при retries; объясните scope key (per client, per user) и response replay.

Типовые ошибки: idempotency только на HTTP без DB uniqueness; keys, пересекающиеся между операциями; удаление keys до конца retry window.

Чеклист:

  • Idempotency-Key или аналог на mutating APIs.
  • Uniqueness на persistence layer.
  • Тот же response для duplicate keys.
  • TTL key длиннее max retry horizon.