Overview
Syllabus
Intro
6 little, innocuous lines of code
Failure is ALWAYS an option
is probably not good for business
We can't put the world into a transaction
Assume failures
Plan for the worst
4 options for dealing with failures between two systems
The Master Plan
For each external resource, examine possibilities and pick best option based on business requirements
First up: Stripe
Probably don't want to ignore a failed payment
Retry
Undo
Not unless we want duplicate emails
We can't un-send emails
Finally: RabbitMQ
Can't un-send a message
Compensating message is... weird
Coordinate
Taking a step back
Can we avoid exceptions by breaking the process coupling?
Way too much going on in a single button click
Modern ecommerce uses background processing to fulfill orders
Starting the workflow
Routing slip
Saga pattern
Process manager pattern
Orchestration or choreography?
Taught by
NDC Conferences