《微服務(wù)設(shè)計(jì)》伟叛,Building Microservices,作者Sam Newman脐嫂,譯者崔力強(qiáng)统刮、張駿,人民郵電出版社账千,2016年侥蒙。
筆記中有些內(nèi)容直接引用原書(shū)。
================================================================
第十章康威定律和系統(tǒng)設(shè)計(jì)
梅爾?康威于1968年4月在Datamation雜志上發(fā)表的“How Do Committees Invent”文章指出:任何組織在設(shè)計(jì)一套系統(tǒng)(廣義概念上的系統(tǒng))時(shí)匀奏,所交付的設(shè)計(jì)方案在結(jié)構(gòu)上都與該組織的溝通結(jié)構(gòu)保持一致鞭衩。
1.證據(jù)
松耦合組織和緊耦合組織。緊耦合組織的代表是商業(yè)產(chǎn)品公司娃善,松耦合的代表是分布式開(kāi)源社區(qū)论衍。研究發(fā)現(xiàn)組織耦合度越低,其創(chuàng)建的系統(tǒng)的模塊化約好聚磺,耦合也越低坯台。反之亦然。
Windows Vista瘫寝。對(duì)該產(chǎn)品的研究表明:與組織結(jié)構(gòu)相關(guān)聯(lián)的指標(biāo)和軟件質(zhì)量的相關(guān)度最高蜒蕾。
2.Netflix和Amazon
二者都是崇尚小團(tuán)隊(duì)開(kāi)發(fā)。
3.我們可以做什么
看看不同組織的情況焕阿。
4.適應(yīng)溝通途徑
5.服務(wù)所有權(quán)
服務(wù)所有權(quán):擁有服務(wù)的團(tuán)隊(duì)負(fù)責(zé)對(duì)該服務(wù)進(jìn)行更改咪啡。延伸開(kāi)來(lái)包括需求、構(gòu)建暮屡、部署和運(yùn)維撤摸。
6.共享服務(wù)的原因
共享服務(wù)所有權(quán)效果不佳,采用共享服務(wù)的原因如下。
難以分割准夷。拆分成本高钥飞。可參考第五章的建議冕象。
特性團(tuán)隊(duì)代承≈基于特性開(kāi)發(fā)的團(tuán)隊(duì)渐扮。例如一個(gè)團(tuán)隊(duì)專(zhuān)門(mén)負(fù)責(zé)用戶(hù)界面,另一個(gè)負(fù)責(zé)應(yīng)用邏輯掖棉,另一個(gè)負(fù)責(zé)處理數(shù)據(jù)庫(kù)墓律。這還是服務(wù)共享,會(huì)出現(xiàn)大量問(wèn)題幔亥。服務(wù)應(yīng)根據(jù)業(yè)務(wù)建模耻讽,而不是根據(jù)技術(shù)。
交付瓶頸帕棉。共享服務(wù)针肥,可以避免交付瓶頸。因?yàn)槿藛T可以共享香伴。但可以使用下面的方式避免采用共享服務(wù)慰枕。
7.內(nèi)部開(kāi)源
核心提交者是代碼的守護(hù)者和代碼庫(kù)的所有者,其他人要修改代碼即纲,向他們提交pull具帮,核心提交者來(lái)審核。
守護(hù)者的角色低斋。好的守護(hù)者會(huì)花大量精力與提交者進(jìn)行清晰的溝通蜂厅。
成熟。代碼成熟后再允許外部提交者貢獻(xiàn)代碼膊畴。
工具掘猿。支持pull的分布式版本控制工具,支持討論和修改提交申請(qǐng)的工具等唇跨。
8.限界上下文和團(tuán)隊(duì)結(jié)構(gòu)
根據(jù)限界上下文確定服務(wù)邊界术奖,與團(tuán)隊(duì)結(jié)構(gòu)保持一致。
9.孤兒服務(wù)
不再活躍維護(hù)的服務(wù)仍然有其所有并負(fù)責(zé)的團(tuán)隊(duì)轻绞。
10.案例研究:RealEstate.com.au
每條業(yè)務(wù)線有其團(tuán)隊(duì)采记,負(fù)責(zé)自己創(chuàng)造的服務(wù)的整個(gè)生命周期。一個(gè)核心服務(wù)交付團(tuán)隊(duì)政勃,為這些團(tuán)隊(duì)提供建議唧龄、指導(dǎo)和工具。一個(gè)業(yè)務(wù)線內(nèi)的服務(wù)可以不受限制的通信奸远,業(yè)務(wù)線之間的服務(wù)通信必須是異步批處理既棺。
11.反向的康威定律讽挟。
無(wú)論系統(tǒng)有什么設(shè)計(jì)缺陷,都不得不通過(guò)改變組織結(jié)構(gòu)來(lái)推動(dòng)系統(tǒng)的更改丸冕。
12.人
從單塊系統(tǒng)開(kāi)發(fā)人員過(guò)渡到微服務(wù)系統(tǒng)開(kāi)發(fā)人員需要時(shí)間來(lái)適應(yīng)和改變耽梅,給他們時(shí)間,告訴他們的職責(zé)胖烛。
13.小結(jié)
要盡量使得系統(tǒng)設(shè)計(jì)與組織結(jié)構(gòu)相匹配眼姐。