一支套件 = 一個「能力」。兩支要不要合併,只問三個問題,順序固定:
C1 資料同生共死?(D17 律①)
C2 換個產品,會不會一起被拿走?
C3 同一個人養?(發版節奏/操作者)
反向條件(任一成立就不合,即使 C1–C3 都像): R1 合併後會讓一堆本來不依賴 X 的套件被迫依賴 X(合併對象是「被很多人依賴的供應者」) R2 合併後套件會變成「開機時做很多不相干事」的雜物袋(決策者對 system-infra 的定義是「系統開起來一定要有」,不是「雜物」)
決策者已表態(輸入,不重議):
「套件疆界」與「部署疆界」是兩件事,用兩個詞:
一支套件能不能分開部署,只問: S1 它跟宿主之間的資料交換能不能全部變成「網路呼叫 + 軟參照」?(有跨界 FK 就不行,先改軟參照) S2 它有沒有獨立的生命週期理由:不同的擴縮型態(CPU 重/I/O 重/長時間工作)、不同的發版節奏、不同的安全邊界、不同的操作者 S3 分開之後,宿主的哪些聚合查詢會斷?(骨幹 readmodel 清單)斷的能不能改成 API 拼裝或 CQRS 讀模型?
沒有 S2 理由的,不分開部署——微服務的成本(網路、一致性、部署、觀測)要有理由才付。