🎯 什麼情境該想到我
當你「兩個上下文之間硬要整合,帶來的效益其實不值那個成本與耦合」的時候。你想明確地做出「不整合」的決定,讓兩邊各做各的,反而更清爽。
⚙️ 怎麼用(步驟 / 公式)
意圖:當兩個上下文之間沒有值得的整合效益時,明確決定「不整合」——讓它們完全各自獨立發展,藉此避免無謂的耦合與協調成本。
做法要點:
- 誠實評估兩上下文整合的實際效益,對照它帶來的耦合與協調成本。
- 若效益不足以抵過成本,明確、有意識地決定不做整合。
- 讓兩邊各自擁有獨立模型、獨立演進,必要時在更上層(如使用者端)各自呈現即可。
- 把這個「各行其道」的決定記在上下文對應上,避免日後有人又偷偷把它們接起來。
★★ 它是九種關係裡最被低估的一個:「不整合」是一個正當的選擇
★★ 各行其道(Separate Ways)= ★ 兩個上下文刻意不整合
→ ★ 它的成立條件只有一個:★★ 整合的成本大於收益
→ ★ 而★★ 這個判斷需要真的把兩邊都算出來,★ 而不是憑「應該整合」的直覺
★★ 為什麼它被低估:★ 「不整合」聽起來像放棄、像技術債,
而「整合」聽起來像進步。
★ 但整合的成本清單很長,★★ 而它常常在決策時被完全忽略。
★★ 整合的真實成本清單(★ 這是這一頁的核心)
★ 一次「把兩個系統整合起來」實際要付的:
① ★★ 介面設計與協商(★ 兩個團隊的時間)
② ★★ 翻譯層([[防腐層]])的開發與維護
③ ★★ 最終一致性的處理 —— ★ 包含「中間狀態怎麼呈現給使用者」(★ 產品設計成本)
④ ★★ 錯誤處理:★ 對方掛了怎麼辦、重試、冪等、DLQ
⑤ ★★ 可用性相乘:★ 兩個 99.9% 的同步依賴 = 99.8%
⑥ ★ 可觀測性:★ 跨系統的 trace 與對帳
⑦ ★★ 每次雙方改動時的回歸驗證(★ 這是持續成本)
⑧ ★ 事故時的責任與溝通成本
→ ★★ 而收益常常是:★ 「每月省五小時人工作業」
★★ 判準:把 ①–⑧ 加起來,和收益比。
★ 多數情況下,★★ 「先手動、等量大了再整合」是正確答案。
★★ 什麼時候各行其道是明確正確的
① ★★ 兩邊的使用者不同、時機不同
★ 財務的月結系統與客服的工單系統
→ ★ 它們「都有客戶資料」,★★ 但沒有任何一個使用者需要同時看到兩邊
② ★★ 整合的量很小
★ 一個月三筆資料要同步 → ★★ 人工複製比一條資料管線便宜十倍
→ ★ 而且★★ 人工有一個優點:★ 出錯時有人會發現
③ ★ 其中一邊即將被替換
→ ★★ 為一個要退役的系統建整合是純浪費
④ ★★ 整合需要跨組織協商,而收益不足以支撐
→ ★ 這是最常見的正當理由,★★ 而它通常被說成「技術上做不到」
⑤ ★ 資料的一致性要求極低
★ 「行銷需要大約的訂單數」→ ★★ 每晚一份報表就夠,不需要即時整合
★★ 怎麼「正確地」各行其道(★ 它不是「什麼都不做」)
① ★★ 明確記錄在 [[上下文對應]] 上,★ 並註明理由與重新評估的條件
★ 「2026-09 決定不整合,理由:★ 每月僅 3 筆。★★ 重評條件:> 50 筆/月」
→ ★ 沒有這一步,★★ 三年後沒人知道「為什麼這兩個系統沒有整合」
⇒ ★ 有人會把它當成待辦事項而不是決定
② ★★ 重複資料要有「唯一的權威來源」
★ 兩邊都有客戶名稱 → ★★ 明確規定哪一邊是真相
→ ★ 不規定的後果:★★ 兩邊不一致時沒有人能判斷該信哪個
③ ★ 人工流程要被寫下來,並且要有人負責
→ ★★ 「各行其道」不等於「靠某個人記得」
④ ★★ 要能偵測「不一致」
★ 一個每週的對帳查詢/報表
→ ★ 這是各行其道唯一的技術投資,★★ 而它成本極低、價值極高
★★ ④ 是最重要的一項:★ 各行其道的風險不是「不一致」,
而是「不一致了卻沒有人知道」。
→ ★ 一個每週跑的 SQL 對帳,★★ 比一整套整合便宜兩個數量級。
★★ 它最常見的誤用:用它掩蓋「該合併」
★ 危險的樣貌:
★ 兩個上下文其實在做同一件事(★ 兩個團隊各自建了一套訂單管理)
→ ★★ 標成「各行其道」⇒ ★ 聽起來像一個架構決定
→ ★★ 而實際上它是組織問題:★ 兩個團隊在重複建設
→ ★ 判準:★★ 這兩個上下文的「子領域」是同一個嗎?
是 → ★★ 那不是各行其道,是重複建設(★ 要解決的是組織問題)
不是 → ★ 各行其道是正當的
★ 兄弟辨析
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
-
若兩上下文其實真的需要協作(有實質共同流程),各行其道會造成功能斷裂與重複,不適用。
-
這是「有意識的取捨」,不是放任脫節;要把決定講清楚並記錄,否則會被誤解成疏漏。
-
需求會變,今天不值得整合不代表永遠;要保留日後重評的空間。
-
★★ 「不整合」是一個正當的選擇,而它被系統性低估——因為整合聽起來像進步,而整合的成本清單在決策時常被完全忽略。
-
★★ 整合的成本有八項(介面協商、防腐層、最終一致性的產品設計、錯誤處理、可用性相乘、可觀測性、持續的回歸驗證、事故溝通),而收益常常是「每月省五小時」。
-
★★ 各行其道唯一的技術投資是「偵測不一致」(一個每週的對帳查詢)。風險不是不一致,而是「不一致了卻沒人知道」。
-
★★ 必須記錄在 上下文對應 上並註明重新評估的條件,否則三年後有人會把它當待辦事項而不是決定。
-
★★ 重複的資料要明確規定「哪一邊是真相」,否則不一致時沒人能判斷該信哪個。
-
★★ 不要用它掩蓋「兩個團隊在重複建設」。 判準:兩者的子領域是同一個嗎?是 → 那是組織問題。
-
★ 「整合量很小」時人工比管線便宜十倍,而且人工出錯時有人會發現。
-
人工流程要寫下來並有人負責,不等於「靠某個人記得」。
🔗 相關工具
- 共享核心 Shared Kernel(相反:高度耦合的共用選擇)
- 追隨者 Conformist(另一種降低整合成本、但仍整合的選擇)
- 上下文對應 Context Map(把「不整合」的決定明確標在地圖上)
- 領域驅動設計
- 防腐層、追隨者 —— 兩種「整合」的方式
- 大泥球 —— 邊界不清 vs 刻意清楚
- 限界上下文 —— 上下文之間的關係
- 上下文對應 —— 決定要記錄在哪
- 核心子領域 —— 判斷「是否重複建設」