SOLID & Design Patterns Interview Question #88

What is idempotency and why is it important in distributed systems?

DDD Boundaries, Resilience, Caching & Practical ASP.NET Core Design Mid-Level Intermediate

Quick Interview Answer

An operation is idempotent when repeating the same request does not create additional unintended effects after the first successful application. It is important because networks, retries, queues, and message brokers can cause duplicate delivery.

Detailed Explanation

An operation is idempotent when repeating the same request does not create additional unintended effects after the first successful application. It is important because networks, retries, queues, and message brokers can cause duplicate delivery.

Typical techniques include idempotency keys, processed-message records, unique constraints, or naturally idempotent updates. The exact approach depends on the business operation.

Code Example

if (await processedMessages.ExistsAsync(message.Id))
    return;

await HandleAsync(message);
await processedMessages.MarkProcessedAsync(message.Id);