内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

微服務(wù)拆分到什么粒度合適——康威定律-創(chuàng)新互聯(lián)

微服務(wù)這個概念一直很火,現(xiàn)在ServiceMesh概念更火,最近我經(jīng)手的多個項目也都采用微服務(wù)的方式開發(fā)。但實踐發(fā)現(xiàn),當(dāng)一個RD同時開發(fā)超過2個微服務(wù)的時候,出現(xiàn)bug或故障的概率會提升。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、平果網(wǎng)站維護(hù)、網(wǎng)站推廣。

我現(xiàn)在看項目的時候會不自覺的關(guān)注工程服務(wù)拆分個數(shù)和研發(fā)人數(shù)的比值。雖然這么做,我卻說不出來個所以然,也沒有找到一個理論依據(jù)。

一、引子

最近讀到Spring Cloud Alibaba成員姬望(彭文杰)的一篇采訪稿,解開了我的一些疑惑。原文在這里

https://mp.weixin.qq.com/s/jArp9LUnLv9jveh9qTndfA

我摘錄了比較關(guān)鍵的一段

微服務(wù)解決的本質(zhì)問題是團(tuán)隊分工

SOA 也好、微服務(wù)也好,解決的根本問題是團(tuán)隊分工問題,詳見康威定律,這是大型軟件發(fā)展的必然,不因為人的喜好而改變。當(dāng)你讀懂康威定律,就會發(fā)現(xiàn)“服務(wù)拆分粒度難以準(zhǔn)確把握”根本不是本質(zhì)問題。

你有幾個 2 pizza 團(tuán)隊,最好就拆成幾個微服務(wù)。舉一個現(xiàn)實的例子:只有一個開發(fā)人員時,盡量就做單體應(yīng)用,不要沒事找刺激拆成 10 個微服務(wù),最終這個開發(fā)人員還會把他合成一個。微服務(wù)要求縱向的 2 pizza 團(tuán)隊(無數(shù)個小團(tuán)隊,包含開發(fā)、測試、運維),當(dāng)然我們也實施過一些傳統(tǒng)大型企業(yè),但團(tuán)隊還是處在橫向結(jié)構(gòu)的場景下(開發(fā)、運維、測試各是一個團(tuán)隊),拆分微服務(wù)讓他們很痛苦,尤其是運維團(tuán)隊。

這段話里有兩個概念2 pizza團(tuán)隊和康威定律

2 pizza團(tuán)隊

兩個披薩原則是指與會人數(shù)不能多到兩個披薩餅還不夠他們吃的地步。亞馬遜CEO杰夫·貝索斯(JeffBezos)認(rèn)為事實并非公司開會參與人數(shù)越多越好,他認(rèn)為人數(shù)越多的會議將不利于決策的形成,而是會導(dǎo)致與會人員的人云亦云,稱之為兩個披薩原則。2 pizza團(tuán)隊可以簡單理解為做某件事情的小團(tuán)隊。

康威定律

出乎很多人意料,微服務(wù)很多核心理念在半個世紀(jì)前(1968年)的《How Do Committees Invent?》一文中就被闡述過了,這篇文章中的很多論點在軟件開發(fā)飛速發(fā)展的這半個世紀(jì)中竟然一再被驗證,這就是康威定律(Conway's Law)

有意思的是該論點在提出多年后一直默默無名,后來Brooks Law著名的人月神話引用這個論點,“康威定律” 從此進(jìn)入大眾視野。

二、康威定律

wikipedia顯示,康威定律(http://www.melconway.com/Home/Committees_Paper.html)最著名的一句話這這樣的

微服務(wù)拆分到什么粒度合適——康威定律

“organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.”

大致的意思是:系統(tǒng)設(shè)計(產(chǎn)品結(jié)構(gòu))等同組織形式,每個設(shè)計系統(tǒng)的組織,其產(chǎn)生的設(shè)計等同于組織之間的溝通結(jié)構(gòu)(簡單點說就是,系統(tǒng)的設(shè)計受限于設(shè)計系統(tǒng)的組織的人員架構(gòu)形式。我們也經(jīng)常說微服務(wù)不光是一個技術(shù)問題,更是一個研發(fā)組織問題)

想一想你用過的產(chǎn)品,看一看下邊這張圖,也許能加深對康威定律的理解 

微服務(wù)拆分到什么粒度合適——康威定律

Mike Amundsen (Design RESTful API的作者),在《遠(yuǎn)距離條件下的康威定律——分布式世界中實現(xiàn)團(tuán)隊構(gòu)建》的一次技術(shù)分享中,從他的角度歸納這篇論文(《How Do Committees Invent?》)中的其他一些核心觀點

1、Communication dictates design(組織溝通方式會通過系統(tǒng)設(shè)計表達(dá)出來)

2、There is never enough time to do something right, but there is always enough time to do it over(時間再多一件事情也不可能做的完美,但總有時間做完一件事情)

3、There is a homomorphism from the linear graph of a system to the linear graph of its design organization(線型系統(tǒng)和線型組織架構(gòu)間有潛在的異質(zhì)同態(tài)特性)

4、The structures of large systems tend to disintegrate during development, qualitatively more so than with small systems(大的系統(tǒng)組織總是比小系統(tǒng)更傾向于分解)

Mike Amundsen的更多細(xì)節(jié)不展開了,感興趣可以自行搜索。

三、支持康威定律的證據(jù)

wikipedia在康威定律條目的Supporting evidence章節(jié)有如下描述。

麻省理工學(xué)院和哈佛商學(xué)院研究小組發(fā)表了支持康威定律的證據(jù),他們使用“鏡像假設(shè)”作為康威定律的等效術(shù)語,發(fā)現(xiàn)“支持鏡像假設(shè)”的有力證據(jù),“[產(chǎn)品]模塊化的顯著差異”與“分布式團(tuán)隊傾向于開發(fā)更多模塊化產(chǎn)品的觀點一致”。

馬里蘭大學(xué)的Nagappan、Murphy和Basili與微軟合作,以及芬蘭坦佩雷理工大學(xué)的Syeed和Hammouda的案例研究,同樣支持康威定律。

四、康威定律如何解釋微服務(wù)的合理性

了解了康威定律是什么,再來看看他如何在半個世紀(jì)前就奠定了微服務(wù)架構(gòu)的理論基礎(chǔ)。

  • 人與人的溝通是非常復(fù)雜的,一個人的溝通精力是有限的,所以當(dāng)問題太復(fù)雜需要很多人解決的時候,我們需要做拆分組織來達(dá)成對溝通效率的管理

  • 組織內(nèi)人與人的溝通方式?jīng)Q定了他們參與的系統(tǒng)設(shè)計,管理者可以通過不同的拆分方式帶來不同的團(tuán)隊間溝通方式,從而影響系統(tǒng)設(shè)計

  • 如果子系統(tǒng)是內(nèi)聚的,和外部的溝通邊界是明確的,能降低溝通成本,對應(yīng)的設(shè)計也會更合理高效

  • 復(fù)雜的系統(tǒng)需要通過容錯彈性的方式持續(xù)優(yōu)化,不要指望一個大而全的設(shè)計或架構(gòu),好的架構(gòu)和設(shè)計都是慢慢迭代出來的

帶來的具體的實踐建議是

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

  • 通過MVP的方式來設(shè)計系統(tǒng),通過不斷的迭代來驗證優(yōu)化,系統(tǒng)應(yīng)該是彈性設(shè)計的。

  • 你想要什么樣的系統(tǒng)設(shè)計,就架構(gòu)什么樣的團(tuán)隊,能扁平化就扁平化。最好按業(yè)務(wù)來劃分團(tuán)隊,這樣能讓團(tuán)隊自然的自治內(nèi)聚,明確的業(yè)務(wù)邊界會減少和外部的溝通成本,每個小團(tuán)隊都對自己的模塊的整個生命周期負(fù)責(zé),沒有邊界不清,沒有無效的扯皮,inter-operate, not integrate。

  • 做小而美的團(tuán)隊,人多會帶來溝通的成本,讓效率下降。亞馬遜的Bezos有個逗趣的比喻,如果2個披薩不夠一個團(tuán)隊吃的,那么這個團(tuán)隊就太大了。事實上一般一個互聯(lián)網(wǎng)公司小產(chǎn)品的團(tuán)隊差不多就是7,8人左右。

公司級的組織結(jié)構(gòu)設(shè)置看起來層次很高,回到最初的問題,你的小團(tuán)隊微服務(wù)到底拆分多少合適呢?

《How Do Committees Invent?》文中提到任務(wù)的拆解可以嵌套進(jìn)行,意思是先按照大力度拆,拆分出的部分繼續(xù)按照更細(xì)的粒度拆分,直到不需要拆分為止。

結(jié)合阿里姬望和我個人的經(jīng)驗。如果你還是新手,那么你預(yù)期項目有幾個人開發(fā)就拆成幾個部分一般不會有大的問題;如果你比較有經(jīng)驗,可以結(jié)合公司微服務(wù)的治理能力靈活發(fā)揮。

總之,只要說得清楚,運維能力又能跟上,一般就是合理的! 

網(wǎng)頁題目:微服務(wù)拆分到什么粒度合適——康威定律-創(chuàng)新互聯(lián)
分享鏈接:http://www.rwnh.cn/article28/cseecp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)微信小程序、網(wǎng)站改版企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
宝坻区| 鲁甸县| 铁岭市| 永仁县| 静宁县| 仪征市| 平阳县| 七台河市| 安溪县| 仙居县| 西城区| 常宁市| 玛沁县| 贵德县| 特克斯县| 安吉县| 石景山区| 济阳县| 北碚区| 潮州市| 怀宁县| 临潭县| 乐山市| 佛冈县| 烟台市| 东海县| 营口市| 高雄市| 陕西省| 乐亭县| 涞水县| 西平县| 勐海县| 旌德县| 万载县| 鱼台县| 图片| 连平县| 鞍山市| 扬州市| 衡东县|