src/webhook.rs, src/event.rs, src/config.rs, src/metrics.rs, src/main.rs, src/cache.rs
Difficulty: Hard
Problem
Webhook delivery lacks strong idempotency guarantees. DLQ could lose data on restarts, and retry logic doesn't account for clock skew or webhook processing delays.
Current Issues
- DLQ stored in-memory, lost on process restart
- Idempotency key computed but not validated on webhook receiver
- No deduplication mechanism for retried deliveries
- Delivery ordering not guaranteed across multiple URLs
- No way to verify successful webhook processing
- Secret signing not explained in documentation
Required Changes
- Persist DLQ to Redis for durability
- Implement request signing with HMAC-SHA256 signature verification
- Add deduplication service backed by Redis with TTL
- Create webhook health check endpoint
- Document idempotency protocol and receiver expectations
- Implement exponential backoff with jitter for retries
Acceptance Criteria
- At-least-once delivery guarantee verified through tests
- Idempotent receivers can safely skip duplicate deliveries
- DLQ recoverable after process restart
- Webhook security guide in documentation
src/webhook.rs,src/event.rs,src/config.rs,src/metrics.rs,src/main.rs,src/cache.rsDifficulty: Hard
Problem
Webhook delivery lacks strong idempotency guarantees. DLQ could lose data on restarts, and retry logic doesn't account for clock skew or webhook processing delays.
Current Issues
Required Changes
Acceptance Criteria