Saga pattern chia distributed transaction thành chuỗi local transaction — mỗi service update DB của mình và publish event qua RabbitMQ.
Có 2 cách:
- Choreography: mỗi service lắng nghe event và publish event của mình (phi tập trung, khó trace).
- Orchestration: một coordinator service điều phối từng bước (tập trung, dễ hiểu hơn)
Ví dụ order saga: payment service (trừ tiền) → inventory service (giữ hàng) → shipping service (lên lịch giao).
Nếu một bước fail, compensating transaction chạy ngược lại.