天天看點

康威定律如何解釋微服務的合理性

微服務這個概念很早就提出了, 真正火起來是在2016年左右,而康威定律(Conway's Law)就是微服務理論基礎。
康威定律如何解釋微服務的合理性

1、康威定律如何在半個世紀前就奠定了微服務架構的理論基礎。

(1)人與人的溝通是非常複雜的,一個人的溝通精力是有限的,是以當問題太複雜需要很多人解決的時候,我們需要做拆分組織來打成對溝通效率的管理

(2)組織内人與人的溝通方式決定了他們參與的系統設計,管理者可以通過不同的拆分方式帶來不同的團隊間溝通方式,進而影響系統設計

(3)如果子系統是内聚的,和外部的溝通邊界是明确的,能降低溝通成本,對應的設計也會更加高效。

(4)複雜得系統需要通過容錯彈性的方式持續優化,不要指望一個大而全的設計或架構,好的架構和設計都是慢慢疊代出來的

2、具體的實踐建議

(1) 我們要用一切手段提升溝通效率,比如slack,github,wiki。能2個人講清楚的事情,就不要拉更多人,每個人每個系統都有明确的分工,出了問題知道馬上找誰,避免踢皮球的問題。

(2) 通過MVP的方式來設計系統,通過不斷的疊代來驗證優化,系統應該是彈性設計的。

(3) 你想要什麼樣的系統設計,就架構什麼樣的團隊,能扁平化就扁平化。最好按業務來劃分團隊,這樣能讓團隊自然的自治内聚,明确的業務邊界會減少和外部的溝通成本,每個小團隊都對自己的子產品的整個生命周期負責,沒有邊界不清,沒有無效的扯皮,inter-operate, not integrate。

(4) 做小而美的團隊,人多會帶來溝通的成本,讓效率下降。亞馬遜的Bezos有個逗趣的比喻,如果2個披薩不夠一個團隊吃的,那麼這個團隊就太大了。事實上一般一個網際網路公司小産品的團隊差不多就是7,8人左右(包含前後端測試互動用研等,可能身兼數職)。

  • 分布式服務組成的系統
  • 按照業務而不是技術來劃分組織
  • 做有聲明的産品而不是項目
  • Smart endpoints and dumb pipes(我的了解是強服務個體和弱通信)
  • 自動化運維
  • 容錯
  • 快速演化

總結

  • 定律一: 組織溝通方式會通過系統設計表達出來,就是說架構的布局群組織結構會有相似。
  • 定律二: 時間再多一件事情也不可能做的完美,但總有時間做完一件事情。一口氣吃不成胖子,先搞定能搞定的。
  • 定律三: 線型系統和線型組織架構間有潛在的異質同态特性。種瓜得瓜,做獨立自治的子系統減少溝通成本。
  • 定律四: 大的系統組織總是比小系統更傾向于分解。合久必分,分而治之。