官术网_书友最值得收藏!

2.3 康威定律

在設(shè)計(jì)系統(tǒng)時(shí),組織所交付的方案結(jié)構(gòu)將不可避免地與其溝通結(jié)構(gòu)一致。

——梅爾文·康威

2.3.1 協(xié)作問(wèn)題

根據(jù)康威定律,技術(shù)架構(gòu)與組織的職責(zé)劃分相關(guān),而職責(zé)劃分從根本上確立了組織的溝通協(xié)作方式,這種協(xié)作方式最終決定了技術(shù)架構(gòu)的形態(tài)。如果你的組織本身是比較松散的協(xié)作方式,往往你的架構(gòu)會(huì)變得離散;而如果你的組織是緊耦合的,架構(gòu)往往也會(huì)慢慢向緊耦合的方式發(fā)展。

當(dāng)技術(shù)人員將單體應(yīng)用拆分成多個(gè)細(xì)粒度服務(wù)的時(shí)候,就產(chǎn)生了服務(wù)之間的協(xié)調(diào)溝通問(wèn)題,而這種問(wèn)題都是建立在組織結(jié)構(gòu)之上的。組織為了解決協(xié)作的問(wèn)題,就會(huì)設(shè)置溝通管理方式,當(dāng)我們對(duì)組織劃分不合理的時(shí)候,解決問(wèn)題需要跨部門(mén)溝通時(shí),就會(huì)產(chǎn)生巨大的溝通成本。而康威定律提醒我們,在實(shí)施微服務(wù)架構(gòu)時(shí),不僅僅需要關(guān)注軟件的架構(gòu)和設(shè)計(jì),更要關(guān)注團(tuán)隊(duì)之間的委派、分配和協(xié)作的方式。如果組織劃分不合理將會(huì)使我們的工作失焦,導(dǎo)致系統(tǒng)架構(gòu)與業(yè)務(wù)溝通協(xié)作模式不匹配。

微服務(wù)架構(gòu)傾向于組織架構(gòu)圍繞業(yè)務(wù)領(lǐng)域邊界進(jìn)行劃分,這種協(xié)作方式是比較理想的。通過(guò)構(gòu)建與業(yè)務(wù)架構(gòu)一致的團(tuán)隊(duì)組織,實(shí)現(xiàn)每個(gè)獨(dú)立的團(tuán)隊(duì)都可以為自己負(fù)責(zé)的業(yè)務(wù)和技術(shù)負(fù)責(zé)。這種組織結(jié)構(gòu)的好處在于:需要升級(jí)或者變更服務(wù)時(shí),各角色成員可以在團(tuán)隊(duì)內(nèi)部進(jìn)行高效溝通,有利于達(dá)成共識(shí)和高效協(xié)作。只有外部服務(wù)之間的接口需要變更時(shí)才需要跨部門(mén)溝通,如果前期在服務(wù)之間的交互上定義了良好的接口,則接口變更的概率并不大,即使接口模式有變更,也可以通過(guò)一定的設(shè)計(jì)模式和規(guī)范來(lái)協(xié)作解決。

組織劃分的最終目標(biāo)是實(shí)現(xiàn)每個(gè)團(tuán)隊(duì)組織都有清晰的邊界和職責(zé)。通過(guò)組織的劃分,形成高內(nèi)聚、可復(fù)用的業(yè)務(wù)形態(tài),聚焦的技術(shù)架構(gòu)有利于功能模塊的沉淀積累和迭代演進(jìn)。把不屬于自己職責(zé)的業(yè)務(wù)或者技術(shù),盡量從自己的服務(wù)中剔除,通過(guò)組織協(xié)作的方式實(shí)現(xiàn)低耦合,避免職責(zé)重復(fù)帶來(lái)的工作重復(fù)和效能損失。

康威定律從本質(zhì)上說(shuō)明了組織結(jié)構(gòu)對(duì)系統(tǒng)架構(gòu)的影響,強(qiáng)調(diào)系統(tǒng)設(shè)計(jì)與組織結(jié)構(gòu)的不一致導(dǎo)致的危險(xiǎn)和協(xié)作問(wèn)題。當(dāng)我們的系統(tǒng)規(guī)模開(kāi)始擴(kuò)大時(shí),這種協(xié)作問(wèn)題將會(huì)對(duì)微服務(wù)系統(tǒng)的業(yè)務(wù)響應(yīng)、需求變更、質(zhì)量保證等方面產(chǎn)生更加深刻的影響。

2.3.2 溝通效率問(wèn)題

《人月神話》中說(shuō):一項(xiàng)工作在估算和安排中使用工作單位“人月”來(lái)計(jì)算成本。這里需要說(shuō)明的是“成本”雖然可以根據(jù)開(kāi)發(fā)產(chǎn)品的人數(shù)和時(shí)間確定,但是工作的進(jìn)度卻不一定,因?yàn)槭褂谩叭嗽隆眮?lái)評(píng)估一項(xiàng)工作的規(guī)模是存在欺騙性的,人數(shù)和時(shí)間在一定程度上是無(wú)法互換的,一個(gè)原因就是忽略了最重要的因素:人員之間的溝通成本。

軟件開(kāi)發(fā)本質(zhì)上是一項(xiàng)系統(tǒng)工作,需要團(tuán)隊(duì)成員密切配合才能完成,是錯(cuò)綜復(fù)雜關(guān)系下的一種密集腦力活動(dòng)實(shí)踐。溝通、交流的工作量非常大,它很快會(huì)消耗任務(wù)分解所節(jié)省下來(lái)的個(gè)人時(shí)間。而添加更多的人手,實(shí)際上增加了溝通的成本,降低了個(gè)人的工作效率。

溝通效率往往會(huì)受到組織結(jié)構(gòu)的影響。按照康威定律,我們的組織結(jié)構(gòu)應(yīng)該與我們的應(yīng)用架構(gòu)保持一致,最早踐行微服務(wù)架構(gòu)的亞馬遜和Netflix可以說(shuō)是執(zhí)行這條原則的典范,通過(guò)小團(tuán)隊(duì)的構(gòu)建提升了溝通的效率。

例如,在Netflix,存在很多小而獨(dú)立的團(tuán)隊(duì),這些獨(dú)立的團(tuán)隊(duì)創(chuàng)建的服務(wù)也是彼此獨(dú)立的,這最小化了溝通成本,帶來(lái)了效率的提升。這樣,軟件架構(gòu)也可以得到快速迭代和演進(jìn)。

人與人的溝通是非常復(fù)雜的,一個(gè)人的溝通精力是有限的,所以當(dāng)問(wèn)題太復(fù)雜,需要很多人協(xié)調(diào)解決的時(shí)候,我們需要拆分組織來(lái)提高溝通效率。團(tuán)隊(duì)的組織方式從某種程度上決定了他們?cè)O(shè)計(jì)的系統(tǒng)架構(gòu),而高效的溝通不僅有利于為業(yè)務(wù)人員提供即時(shí)的反饋,也能夠以最小的代價(jià)達(dá)成共識(shí),實(shí)現(xiàn)降本增效。

2.3.3 組織的演進(jìn)

在實(shí)施微服務(wù)初期,管理者一般將大部分精力集中在滿足業(yè)務(wù)和服務(wù)的功能性訴求上。很多小型團(tuán)隊(duì)在不需要太多精力投入的情況下,通過(guò)開(kāi)源軟件搭建注冊(cè)中心、API網(wǎng)關(guān)、容器等微服務(wù)基礎(chǔ)設(shè)施,就可以完成基本的微服務(wù)管理功能。

然而,隨著業(yè)務(wù)的快速增長(zhǎng)和微服務(wù)規(guī)模的擴(kuò)大,以及系統(tǒng)復(fù)雜性的上升,維護(hù)這樣一套基礎(chǔ)設(shè)施會(huì)給業(yè)務(wù)團(tuán)隊(duì)帶來(lái)額外的壓力,在關(guān)注業(yè)務(wù)自身功能的同時(shí),管理者還要將精力消耗在非功能需求和以技術(shù)為導(dǎo)向的微服務(wù)支撐平臺(tái)上。這個(gè)時(shí)候,管理者往往低估了微服務(wù)架構(gòu)的復(fù)雜性,以及伴隨微服務(wù)發(fā)展的高可用、高并發(fā)、可擴(kuò)展性等技術(shù)訴求。管理者需要重新審視組織結(jié)構(gòu)是否適應(yīng)公司整體技術(shù)架構(gòu)的發(fā)展。微服務(wù)架構(gòu)從某種程度上說(shuō)是一個(gè)CTO工程。

我們需要業(yè)務(wù)團(tuán)隊(duì)更加聚焦于自己的核心業(yè)務(wù)能力,正如Supercell公司,它是一家典型的以小團(tuán)隊(duì)模式進(jìn)行游戲開(kāi)發(fā)的公司,一般來(lái)說(shuō)兩個(gè)員工或者5個(gè)員工,最多不超過(guò)7個(gè)員工組成獨(dú)立的開(kāi)發(fā)團(tuán)隊(duì),稱為Cell(細(xì)胞),這也是公司名字Supercell(超級(jí)細(xì)胞)的由來(lái)。該公司可以通過(guò)這種小團(tuán)隊(duì),快速試錯(cuò),來(lái)檢驗(yàn)游戲是否被用戶接受和受歡迎程度,實(shí)現(xiàn)了小步快跑。

然而Supercell的小團(tuán)隊(duì)背后是有一個(gè)大的平臺(tái)組織來(lái)做支撐的。我們說(shuō)微服務(wù)架構(gòu)同樣需要具備平臺(tái)化的可復(fù)用和支撐能力,平臺(tái)化的思維和支撐能力不僅僅意味著需要建設(shè)以技術(shù)為導(dǎo)向的微服務(wù)架構(gòu)、自動(dòng)化發(fā)布平臺(tái)、容器基礎(chǔ)設(shè)施,還需要組織結(jié)構(gòu)能夠根據(jù)業(yè)務(wù)形態(tài)進(jìn)行持續(xù)的演進(jìn)。微服務(wù)架構(gòu)如果想規(guī)模化、成體系化發(fā)展,甚至像亞馬遜和Neftlix這樣的公司一樣對(duì)外輸出技術(shù)能力,還需要公司做統(tǒng)一的戰(zhàn)略規(guī)劃,需要有以技術(shù)為主的平臺(tái)團(tuán)隊(duì),以及以業(yè)務(wù)為導(dǎo)向的中臺(tái)團(tuán)隊(duì)。微服務(wù)架構(gòu)的體系化僅從技術(shù)維度進(jìn)行是難以奏效的,最終技術(shù)架構(gòu)一定會(huì)受到組織結(jié)構(gòu)的影響,組織結(jié)構(gòu)的演進(jìn)對(duì)企業(yè)的競(jìng)爭(zhēng)力和非線性的增長(zhǎng)至關(guān)重要。

主站蜘蛛池模板: 田林县| 巫溪县| 根河市| 化德县| 梨树县| 姜堰市| 玛多县| 固始县| 日喀则市| 莱阳市| 邯郸市| 盘锦市| 满城县| 吴忠市| 凤山市| 蓬溪县| 千阳县| 武平县| 汶上县| 抚宁县| 北海市| 左贡县| 壤塘县| 即墨市| 石狮市| 扎赉特旗| 常熟市| 吴忠市| 乌拉特前旗| 西昌市| 通州区| 巴中市| 霍林郭勒市| 香河县| 满洲里市| 和政县| 泸溪县| 承德市| 东乌珠穆沁旗| 福海县| 铜山县|