Co-authored-by: 王性驊 <danielwang@supermicro.com> Reviewed-on: #4 |
||
|---|---|---|
| .. | ||
| README.zh-TW.md | ||
| SKILL.md | ||
README.zh-TW.md
系統分解 (System Decomposition) 知識合約指南
概述
system-decomposition 是知識合約,用來提供將系統拆分為服務或模組的原則。包含邊界定義、資料所有權與依賴方向。供 design-architecture 在設計 Service Boundaries 時參考。
核心原則
- 每個服務或模組必須有單一、明確的職責
- 資料所有權必須明確:每筆資料只屬於一個服務
- 依賴必須單向流動;嚴禁循環依賴
- 邊界必須環繞領域職責繪製,而非技術分層
設計重點
Modular Monolith vs Microservices
- 選擇 Modular Monolith:團隊小、邊界仍在演化、部署簡單優先
- 選擇 Microservices:個別服務有不同擴展需求、團隊擁有對齊、獨立部署是需求
領域邊界
- 一起變化的實體
- 內聚的業務規則
- 一起存取的資料
- 橫跨一致上下文的使用者工作流
好的邊界:高內聚、低外部耦合、可獨立理解、可獨立部署。
耦合 vs 內聚
- 偏好邊界內高內聚
- 最小化邊界間耦合
- 透過明確合約(API、事件)溝通
- 避免共享資料庫表
狀態所有權
- 每筆狀態只有一個擁有者
- 其他服務透過擁有者的 API 或事件存取
- 嚴禁服務直接讀取另一服務的資料庫
知識合約職責
- 提供系統分解的理論指引
- 不替 PRD 做最終邊界決策
不應做的事
- 不替系統定義特定服務邊界
- 不假設 Microservices 適合所有場景
- 不忽略領域邊界而以技術分層