Designing a Passively Safe API
10 days ago
- #Microservices
- #Idempotency
- #API Design
- Migrating a monolithic API to microservices with passively safe endpoints.
- Passively safe systems fail gracefully without duplicate work or unrecoverable states.
- Key issues include non-transactional external API calls, non-retry safe requests, and synchronous processing delays.
- Solutions involve message brokers, transactionally staged jobs (message outbox), and message inboxes for deduplication.
- Idempotency keys ensure POST and PATCH requests can be retried safely without side effects.
- Atomic phases and recovery points structure request processing for resilience.
- Implementation details include UUIDs for idempotency keys, transient error handling, and retry scheduling with backoff and jitter.
- Cleanup processes for old idempotency keys and handling abandoned requests are crucial for maintenance.