HomeOS
- Problem
- Bookings and chef payouts had to settle correctly while third-party payment webhooks arrived late, twice, or not at all.
- Decision
- Idempotency keys on every write and a Beanstalkd queue with exponential back-off, instead of confirming synchronously against the provider.
- Result
- Duplicate payouts at zero: a replayed webhook settles the same booking once.
Request path / booking
- Client: Ionic / Vue
- API: Go · idempotency key
- Postgres: booking, ledger
- Beanstalkd: payout job
- ↺ retry, exponential back-off
- Payment provider: webhooks, unreliable
