Designing-for-Failure%3A-Idempotency-and-Retries-in-Your-Atomic-Actions