Transaction Boundary
Transaction Boundary
Transaction boundary 的核心概念是「一組資料變更必須一起成功或一起回復的範圍」。交易邊界決定哪些狀態需要被 database transaction 保護,哪些外部動作應放在交易之外。
概念位置
交易適合保護同一個 database 內的正式狀態變更。建立訂單與扣庫存可能需要同一個交易;寄信、呼叫外部 API 或發布 broker 訊息則常需要 outbox pattern 或補償流程,因為它們超出 database transaction 能力。
可觀察訊號與例子
系統需要交易邊界的訊號是「半成功」會造成產品錯誤。若付款紀錄已建立但訂單狀態未更新,客服與帳務會看到衝突狀態;若通知寄送失敗,通常可以重試或補送。
設計責任
交易邊界要盡量短,並明確處理 deadlock、retry policy、timeout 與錯誤分類。跨 database 或跨服務的一致性要改用 outbox、saga、補償或 data reconciliation,而非假設單一交易能包住所有事情。