康威定律和系统设计——《微服务设计》读书笔记
康威定律
? ? ??任何組織在設(shè)計(jì)一套系統(tǒng)時(shí),所交付的設(shè)計(jì)方案在結(jié)構(gòu)上都與該組織的溝通結(jié)構(gòu)保持一致。
——梅爾.康威
? ? ? 如何理解這句話在軟件工程上的含義?埃里克.S.雷蒙德說:如果你有四個(gè)小組開發(fā)一個(gè)編譯器,那你會(huì)得到一個(gè)四步編譯器。
? ? ? 組織和架構(gòu)應(yīng)該一致,團(tuán)隊(duì)?wèi)?yīng)該共同擁有并運(yùn)營(yíng)其創(chuàng)建的系統(tǒng),而且小團(tuán)隊(duì)會(huì)比大團(tuán)隊(duì)的工作更有效。Amazon提出“兩個(gè)披薩團(tuán)隊(duì)”,即沒有一個(gè)團(tuán)隊(duì)?wèi)?yīng)該大到兩個(gè)披薩不夠吃,幫助小團(tuán)隊(duì)對(duì)服務(wù)的整個(gè)生命周期負(fù)責(zé),這也是現(xiàn)如今Devops如此流行的一個(gè)原因。
? ? ? 組織結(jié)構(gòu)對(duì)系統(tǒng)的性質(zhì)和質(zhì)量有著深刻的影響,如果構(gòu)建系統(tǒng)的組織更加松耦合,其所構(gòu)建的系統(tǒng)則傾向于更加模塊化,因此耦合度也更低。我們推薦團(tuán)隊(duì)與限辦上下文保持一致,同時(shí)確保每個(gè)服務(wù)都有擁有者,這樣當(dāng)這個(gè)服務(wù)幾個(gè)月沒有改時(shí),再修改也會(huì)找到相應(yīng)的團(tuán)隊(duì)。
? ? ? 我們傾向于把服務(wù)的所有權(quán)交給擁有服務(wù)的團(tuán)隊(duì),只要更改不破壞服務(wù)的消費(fèi)者,團(tuán)隊(duì)就可以隨時(shí)重新組織代碼,這樣可以讓團(tuán)隊(duì)更加負(fù)責(zé),而不是反映系統(tǒng)移交到測(cè)試或部署階段后,就認(rèn)為他們的工作已經(jīng)完成了。
? ? ? 另外,系統(tǒng)的設(shè)計(jì)有時(shí)也會(huì)反過來失去組織的發(fā)展,如以前互聯(lián)網(wǎng)僅是一個(gè)附加在信息部門的小部門,而現(xiàn)如今,互聯(lián)網(wǎng)可能帶來整個(gè)公司組織架構(gòu)的調(diào)整。我們稱之為反向的康威定律。
?
內(nèi)部開源
? ? ? 如果團(tuán)隊(duì)內(nèi)最終免不了要共享幾個(gè)服務(wù)時(shí),該怎么辦?內(nèi)部開源可能是一個(gè)選項(xiàng)。
? ? ? 在標(biāo)準(zhǔn)的開源項(xiàng)目中,一小部分人被認(rèn)為是核心提交者,他們是代碼的守護(hù)者,核心提交者對(duì)代碼庫負(fù)責(zé),他們是代碼庫的所有者。
? ? ? 好的守護(hù)者會(huì)花費(fèi)大量的精力與提交者進(jìn)行清晰的溝通,并對(duì)他們的工作方式進(jìn)行引導(dǎo)。
? ? ? 在內(nèi)部開源項(xiàng)目開始時(shí),由于其可能處于快速的變化當(dāng)中,這個(gè)時(shí)候最好不要允許除了核心提交者之外的人提交代碼。待成熟之后,再來開放,讓其他人貢獻(xiàn)代碼。
?
參考
? ? ? 《微服務(wù)設(shè)計(jì)》(Sam Newman 著 / 崔力強(qiáng) 張駿 譯)
相關(guān)文章:?
微服務(wù)的概念——《微服務(wù)設(shè)計(jì)》讀書筆記
微服務(wù)架構(gòu)師的職責(zé)——《微服務(wù)設(shè)計(jì)讀書筆記》
建模:確定服務(wù)的邊界——《微服務(wù)設(shè)計(jì)》讀書筆記
微服務(wù)集成——《微服務(wù)設(shè)計(jì)》讀書筆記
服務(wù)的協(xié)作:服務(wù)間的消息傳遞——《微服務(wù)設(shè)計(jì)》讀書筆記
拆分:分解單塊系統(tǒng)——《微服務(wù)設(shè)計(jì)》讀書筆記
部署:持續(xù)集成(CI)與持續(xù)交付(CD)——《微服務(wù)設(shè)計(jì)》讀書筆記
測(cè)試——《微服務(wù)設(shè)計(jì)》讀書筆記
監(jiān)控——《微服務(wù)設(shè)計(jì)》讀書筆記
安全——《微服務(wù)設(shè)計(jì)》讀書筆記
原文地址:http://www.cnblogs.com/gudi/p/6685038.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的康威定律和系统设计——《微服务设计》读书笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十二个 ASP.NET Core 例子
- 下一篇: Net分布式系统之:微服务架构