~/talk

Six Little Lines of Fail

Talkat DevConf 2019 · 2019-09-25..09-27· [distributed-systems, observability]
slides:none on file

Six tiny lines call a DB, create an order, hit Stripe, call SendGrid, publish to RabbitMQ, then commit a transaction and failure modes make charging without an order and missing emails inevitable. Concrete fixes include Stripe idempotency key or authorize/capture, delaying emails and messages with an outbox pattern inside the DB, and coordinating retries and compensations with a central process manager (saga) plus background workers. The refactor reduces dependencies during checkout and prevents the inconsistent states that caused real customer charges and errors.

AI-written summary · about

  1. 0:00Intro
  2. 1:296 little, innocuous lines of code
  3. 3:05Failure is ALWAYS an option
  4. 8:30is probably not good for business
  5. 9:19into a transaction
  6. 9:35Assume failures
  7. 10:034 options for dealing with failures between two systems
  8. 13:29The Master Plan
  9. 14:07First up: Stripe
  10. 14:22Probably don't want to ignore a failed payment
  11. 16:36Undo
  12. 20:30Next up: SendGrid
  13. 21:40Retry
  14. 24:37Apologize?
  15. 24:56Coordinate
  16. 27:28Can't un-send a message
  17. 28:48Taking a step back
  18. 34:34Way too much going on in a single button click
  19. 34:49Modern ecommerce uses background processing to fulfill orders
  20. 40:19Routing slip
  21. 41:49Saga pattern
  22. 43:38Process manager pattern
  23. 44:17Orchestration or choreography?
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.