DB transaction은 참여한 resource까지만 원자적이다

email과 remote HTTP를 connection transaction 안에 넣어도 rollback으로 되돌릴 수 없다.

1. Database

rows·constraints

2. Commit

local atomic boundary

3. Outbox

전송 의도 함께 저장

4. Worker

commit 후 idempotent 전달