Conway定律軟件的系統結構會對應企業的組織結構。後端
單體服務 | 微服務 | |
---|---|---|
當團隊規模和代碼庫很小時,生產力 | ✅ 高 | ❌ 低 |
當團隊規模和代碼庫很大時,生產力 | ❌ 低 | ✅ 高 (Conway定律) |
對工程質量的要求 | ❌ 高 (能力不夠的開發人員很容易破壞整個系統) | ✅ 低 (運行時是隔離的) |
dependency 版本升級 | ✅ 快 (集中管理) | ❌ 慢 |
多租戶支持 / 生產-staging狀態隔離 | ✅ 容易 | ❌ 困難 (每項服務必須 1) 要麼創建一個staging環境鏈接到其餘處於staging狀態的服務 2) 要麼跨請求上下文和數據存儲的多租戶支持) |
可調試性,假設相同的模塊,參數,日誌 | ❌ 低 | ✅ 高 (若是有分佈式tracing) |
延遲 | ✅ 低 (本地) | ❌ 高 (遠程) |
DevOps成本 | ✅ 低 (構建工具成本高) | ❌ 高 (容量規劃很難) |
結合單體代碼庫和微服務能夠同時利用二者的長處.api
關鍵是要有異步設計, 由於跨多個系統的ACID交易支付系統一般具備很是長的延遲.緩存
本文首發於硅谷io架構