Transaction boundary 的核心概念是「一組資料變更必須一起成功或一起回復的範圍」。交易邊界決定哪些狀態需要被 database transaction 保護,哪些外部動作應放在交易之外。

概念位置

交易適合保護同一個 database 內的正式狀態變更。建立訂單與扣庫存可能需要同一個交易;寄信、呼叫外部 API 或發布 broker 訊息則常需要 outbox pattern 或補償流程,因為它們超出 database transaction 能力。

可觀察訊號與例子

系統需要交易邊界的訊號是「半成功」會造成產品錯誤。若付款紀錄已建立但訂單狀態未更新,客服與帳務會看到衝突狀態;若通知寄送失敗,通常可以重試或補送。

設計責任

交易邊界要盡量短,並明確處理 deadlock、retry policytimeout 與錯誤分類。跨 database 或跨服務的一致性要改用 outbox、saga、補償或 data reconciliation,而非假設單一交易能包住所有事情。