Saga pattern: giao dịch phân tán khi không có transaction chung, demo rollback bằng bù trừ
Đặt một đơn hàng cần trừ kho, trừ tiền, tạo đơn — ở ba service khác nhau, không có transaction chung để 'commit cả ba hoặc không gì'. Saga giải quyết bằng chuỗi bước cục bộ, mỗi bước có bước bù trừ. Bài này chạy thật trên PostgreSQL: saga thành công trừ kho/tiền và tạo đơn khớp; saga lỗi ở bước tiền tự hoàn kho đã trừ và không tạo đơn, đưa hệ về đúng trạng thái ban đầu.