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