我們?nèi)绾魏饬恳粋€(gè)微服務(wù)實(shí)施的成功

本次介紹的案例來(lái)自于我曾經(jīng)服務(wù)過(guò)的客戶 R,到今天已經(jīng)5年整了当凡。2013年的國(guó)慶后山害,我加入了客戶 R 的其中一個(gè)產(chǎn)品團(tuán)隊(duì),這個(gè)團(tuán)隊(duì)有三個(gè)項(xiàng)目:一個(gè)項(xiàng)目做日常維護(hù)工作(BAU)沿量,這是一個(gè)長(zhǎng)期項(xiàng)目浪慌。一個(gè)項(xiàng)目開發(fā)一些新的功能。另外一個(gè)項(xiàng)目就是將現(xiàn)有的 Java 遺留系統(tǒng)進(jìn)行改造朴则,把這個(gè) Java 應(yīng)用的一部分功能從 ESB 和內(nèi)部調(diào)用的方式改成用 Sinatra (Ruby 的一個(gè) Restful API 框架) 做的 HTTP 外部調(diào)用权纤。

當(dāng)時(shí)我還不知道我們做的東西就是微服務(wù),只是覺得通過(guò)自動(dòng)化測(cè)試和持續(xù)交付的方式把應(yīng)用進(jìn)行了低風(fēng)險(xiǎn)的解耦。降低了系統(tǒng)的復(fù)雜性妖碉,減少了需要維護(hù)代碼涌庭,也使得在這個(gè)代碼庫(kù)上工作的其它團(tuán)隊(duì)不受阻礙。同時(shí)減少了生產(chǎn)環(huán)境的故障和發(fā)布風(fēng)險(xiǎn)欧宜。

我在這個(gè)項(xiàng)目上工作了 8 個(gè)月坐榆,完成了“一塊功能”的拆分。當(dāng)時(shí)我們并沒有一個(gè)獨(dú)立的 Ops 團(tuán)隊(duì)冗茸,所有的運(yùn)維相關(guān)工作都是團(tuán)隊(duì)內(nèi)自己完成的席镀,那時(shí)候我們也不區(qū)分開發(fā)、測(cè)試夏漱、運(yùn)維豪诲。只是不同的人去認(rèn)領(lǐng)不同的任務(wù),不會(huì)的就現(xiàn)學(xué)現(xiàn)用挂绰,或者請(qǐng)教Ops 團(tuán)隊(duì)屎篱。這就是我最早接觸的 DevOps :一個(gè)全功能的端到端產(chǎn)品團(tuán)隊(duì)。

在 2014 年的時(shí)候我們采用 Docker 進(jìn)行部署葵蒂,Docker 在當(dāng)時(shí)是個(gè)很新穎的東西交播,所以互聯(lián)網(wǎng)上相關(guān)的材料并不多。于是我們就自己寫了一些編排工具來(lái)做 Docker 的大規(guī)模部署践付。同一時(shí)期秦士,我們接觸到了契約測(cè)試,并把契約測(cè)試應(yīng)用于我們的微服務(wù)上面永高。并開始使用 Scala 和 Play 框架拆分另外的應(yīng)用隧土。通過(guò)契約測(cè)試,我們會(huì)把串行的集成測(cè)試轉(zhuǎn)化為一些單元測(cè)試命爬。由于契約的約束曹傀,使得集成測(cè)試降級(jí)成為了單元測(cè)試,大大提升了測(cè)試的效率遇骑,降低了測(cè)試的成本卖毁。

你會(huì)在各種微服務(wù)的書和相關(guān)實(shí)踐中都能看到 Pact 這個(gè)工具,這是客戶 R 的另外一個(gè)顧問(wèn)公司開發(fā)的落萎,也是他們定義了什么叫契約測(cè)試。到了2014年底我們把幾個(gè)接口拆分出來(lái)之后炭剪,我才知道這是微服務(wù)练链,也理解了什么是 DevOps。

2014 年 11月份我離開了這個(gè)團(tuán)隊(duì)奴拦,開始把在這個(gè)團(tuán)隊(duì)上的經(jīng)驗(yàn)推廣給不同的客戶媒鼓,才慢慢深入了解了 DevOps 和微服務(wù)的概念。同時(shí),客戶 R 也開始復(fù)制我們之前的成功經(jīng)驗(yàn)绿鸣,開始在整個(gè)集團(tuán)內(nèi)部進(jìn)行了全面的微服務(wù)化改造疚沐。

2017 年 4 月份我重新回到這個(gè)客戶的項(xiàng)目上工作到 2018 年的 9 月份,期間和其它做微服務(wù)的團(tuán)隊(duì)進(jìn)行了一些訪談潮模,可以從比較直觀的角度來(lái)觀察這 5 年來(lái)微服務(wù)改進(jìn)的效果和經(jīng)驗(yàn)亮蛔。

本系列共計(jì) 4 篇,分別是《我們?nèi)绾魏饬恳粋€(gè)微服務(wù)實(shí)施的成功》擎厢,《成功微服務(wù)實(shí)施的組織演進(jìn)》究流,《成功微服務(wù)實(shí)施的技術(shù)技術(shù)演進(jìn)》,《微服務(wù)架構(gòu)演進(jìn)中的經(jīng)驗(yàn)和反思》动遭。本場(chǎng) Chat 是第一篇《我們?nèi)绾魏饬恳粋€(gè)微服務(wù)實(shí)施的成功》芬探,由于保密的原因,具體的客戶厘惦、項(xiàng)目偷仿、人員名稱均為化名。

應(yīng)用系統(tǒng)的架構(gòu)的維護(hù)成本是如何增長(zhǎng)的

我們采用架構(gòu)的規(guī)模(可以用功能數(shù)量或者代碼行數(shù)來(lái)衡量)宵蕉,以及投入的維護(hù)成本(人員酝静、資金、時(shí)間)來(lái)構(gòu)建一個(gè)坐標(biāo)国裳。就可以做出一個(gè)簡(jiǎn)單的對(duì)比:

架構(gòu)規(guī)模以及維護(hù)成本

在一開始(O點(diǎn))形入,單體應(yīng)用的構(gòu)建成本是相對(duì)低廉的,因?yàn)椴⒉恍枰龇植际椒熳蟆6婚_始就做微服務(wù)的架構(gòu)亿遂,勢(shì)必會(huì)因?yàn)榉植际降膹?fù)雜性而產(chǎn)生額外的成本(O1點(diǎn))。

隨著應(yīng)用規(guī)模的增長(zhǎng)渺杉,相應(yīng)的規(guī)模就會(huì)有相應(yīng)的維護(hù)成本蛇数。隨著這個(gè)規(guī)模的上漲,勢(shì)必會(huì)迎來(lái)一個(gè) X 點(diǎn)是越。使得單體應(yīng)用和微服務(wù)應(yīng)用的維護(hù)成本一致耳舅。這也說(shuō)明在這一點(diǎn)之前,單體應(yīng)用的優(yōu)勢(shì)十分突出倚评。

從架構(gòu)模型上看浦徊,單體應(yīng)用的規(guī)模和維護(hù)成本是指數(shù)上升的,因?yàn)橐?guī)模所帶來(lái)的依賴使得風(fēng)險(xiǎn)不斷匯聚天梧,導(dǎo)致交付速度降低盔性,部署風(fēng)險(xiǎn)增大。因此呢岗,它的維護(hù)成本以指數(shù)形式增長(zhǎng)冕香。然而微服務(wù)應(yīng)用是由多個(gè)簡(jiǎn)單系統(tǒng)組合而成蛹尝,它的依賴程度較低,單獨(dú)的交付效率和部署風(fēng)險(xiǎn)可控悉尾,因此突那,他的維護(hù)成本以對(duì)數(shù)形式增長(zhǎng)。

由于微服務(wù)的這種特性构眯,當(dāng)兩種應(yīng)用架構(gòu)的規(guī)模超過(guò)X點(diǎn)之后愕难,它們的維護(hù)成本則相去甚遠(yuǎn),勢(shì)必會(huì)迎來(lái)一個(gè)維護(hù)成本的極限 X' 點(diǎn)鸵赖,從而約束了應(yīng)用規(guī)模的極限务漩。

而在這個(gè)情況下,就是大多數(shù)企業(yè)轉(zhuǎn)型微服務(wù)的驅(qū)動(dòng)力:原先的應(yīng)用增長(zhǎng)模式無(wú)法應(yīng)對(duì)規(guī)模的增長(zhǎng)它褪。

所以饵骨,我們可以看到,大多數(shù)的企業(yè)是從 O 點(diǎn)出發(fā)茫打,沿著紅線走到 X' 點(diǎn)居触,然后開始進(jìn)行微服務(wù)的改造。以換取應(yīng)用的增長(zhǎng)規(guī)模老赤。

而一開始做微服務(wù)架構(gòu)的應(yīng)用轮洋,雖然在開始的階段投入了更多的成本,但換取的是未來(lái)更大的規(guī)模抬旺。不過(guò),從精益的角度看开财,這是一種浪費(fèi)汉柒,除非你的目標(biāo)就定位了一個(gè)大規(guī)模的應(yīng)用碾褂。這在大多數(shù)應(yīng)用系統(tǒng)最初建立的時(shí)候都是不可能預(yù)期的。

所以乓诽,一條理想的模型是從 O點(diǎn)出發(fā),到達(dá) X 點(diǎn)之后進(jìn)行微服務(wù)改造咒程。

然而问裕,這根本不可能實(shí)現(xiàn),原因有兩點(diǎn):

  1. 人們不會(huì)同時(shí)構(gòu)建兩個(gè)一樣的應(yīng)用來(lái)做比較孵坚,從而找到增長(zhǎng)極限粮宛。
  2. 目前,也不會(huì)構(gòu)建一個(gè)度量指標(biāo)卖宠,來(lái)度量維護(hù)成本和應(yīng)用規(guī)模巍杈。

所以,你所處的階段扛伍,應(yīng)該是 X 到 X' 之間的某一點(diǎn)筷畦,你開始采用 DevOps 技術(shù)來(lái)縮短研發(fā)周期,提升交付質(zhì)量刺洒,也開始度量應(yīng)用的交付狀態(tài)鳖宾。這就需要我們構(gòu)建一個(gè)指標(biāo)來(lái)度量架構(gòu),這就是:邊際功能收益率(MSROI逆航,Margin Scale Return on Investment )鼎文,也就是我創(chuàng)建一個(gè)新的功能,它在未來(lái)一段時(shí)期所消耗成本(人力因俐、時(shí)間拇惋、資源)所帶來(lái)的回報(bào)(降低成本,降低風(fēng)險(xiǎn)抹剩,增加收益等)撑帖。如果這個(gè)收益率持續(xù)降低,且是因?yàn)槌杀驹诓粩嘣黾影木欤憔托枰紤]是不是降低應(yīng)用維護(hù)的成本了胡嘿。

應(yīng)用架構(gòu)的局部性原理

事實(shí)上,一個(gè)正在運(yùn)行的系統(tǒng)钳踊,維護(hù)過(guò)程會(huì)有兩個(gè)局部性原理衷敌。我把它稱為應(yīng)用系統(tǒng)的 DevOps 局部性原理假設(shè),它包含 Dev 和 Ops 的兩個(gè)局部性假設(shè)箍土。分別是:

開發(fā)局部性假設(shè):在運(yùn)行著的應(yīng)用系統(tǒng)中逢享,維護(hù)所做的工作是對(duì)應(yīng)用系統(tǒng)的局部進(jìn)行開發(fā)。因此吴藻,對(duì)整個(gè)開發(fā)團(tuán)隊(duì)應(yīng)該只產(chǎn)生局部性的影響瞒爬。

運(yùn)維局部性假設(shè):在運(yùn)行著的應(yīng)用系統(tǒng)中,由于局部的變更沟堡,應(yīng)該只產(chǎn)生局部性的風(fēng)險(xiǎn)和影響侧但。

以上兩個(gè)假設(shè)有一個(gè)約束:由于局部性的開發(fā)導(dǎo)致的綜合成本。均小于替換整個(gè)系統(tǒng)的整體成本航罗。

也就是說(shuō)禀横,你所構(gòu)建的局部性是要小于你原先系統(tǒng)規(guī)模的,否則你就是實(shí)現(xiàn)了一個(gè)新的系統(tǒng)粥血。

但我們所經(jīng)歷的事實(shí)是相反的:一個(gè)局部性的變更需要依賴很多其它的開發(fā)團(tuán)隊(duì)和人員柏锄,并在應(yīng)用系統(tǒng)中產(chǎn)生連鎖規(guī)模的影響酿箭。

所以,如果你的應(yīng)用系統(tǒng)是微服務(wù)的架構(gòu)趾娃,就會(huì)符合上述的微服務(wù) DevOps 假說(shuō)并通過(guò)微服務(wù)的 DevOps局部性測(cè)試

任意應(yīng)用的局部變更均產(chǎn)生局部性的影響缭嫡。

為了降低系統(tǒng)風(fēng)險(xiǎn),我們需要將應(yīng)用的變更風(fēng)險(xiǎn)隔離出來(lái)抬闷。因此妇蛀,就有了微服務(wù)架構(gòu)的 DevOps 推論:

運(yùn)行時(shí)的維護(hù)關(guān)注點(diǎn)局部性使得獨(dú)立開發(fā)的局部性成為可能。

也就是說(shuō)笤成,在應(yīng)用運(yùn)行架構(gòu)風(fēng)險(xiǎn)隔離的情況下评架,才可能出現(xiàn)獨(dú)立開發(fā)和獨(dú)立部署。而本質(zhì)上炕泳,單體應(yīng)用到微服務(wù)應(yīng)用的轉(zhuǎn)型就是應(yīng)用的內(nèi)部的高風(fēng)險(xiǎn)依賴轉(zhuǎn)化為外部的低風(fēng)險(xiǎn)依賴的過(guò)程纵诞。是內(nèi)部復(fù)雜度向外部復(fù)雜度的轉(zhuǎn)換。因此喊崖,微服務(wù)架構(gòu)改造所花費(fèi)的成本大部分都在處理服務(wù)間的通信挣磨。

應(yīng)用系統(tǒng)的 DevOps 局部性原理假設(shè)的角度看,微服務(wù)本質(zhì)上的目標(biāo)和 DevOps 的目標(biāo)是一致的荤懂。這也符合我此前做微服務(wù)的落地經(jīng)驗(yàn):當(dāng)應(yīng)用程序的部署時(shí)間和變更風(fēng)險(xiǎn)在單一應(yīng)用上做到極致之后茁裙。我們可以考慮對(duì)應(yīng)用進(jìn)行拆分以進(jìn)一步實(shí)踐 DevOps。

也就是說(shuō)节仿,微服務(wù)架構(gòu)是組織 DevOps 不斷深入和優(yōu)化的結(jié)果晤锥。

我們?nèi)绾魏饬恳粋€(gè)微服務(wù)的轉(zhuǎn)型效果

我們做微服務(wù)的主要訴求就是希望系統(tǒng)規(guī)模在增長(zhǎng)的同時(shí),管理成本降低廊宪。也就是應(yīng)用結(jié)構(gòu)和組織結(jié)構(gòu)滿足上述的假設(shè)矾瘾。這個(gè)管理成本包括兩個(gè)方面:

  • 人員的管理成本降低。由于通過(guò)制度構(gòu)建了扁平化和全功能的團(tuán)隊(duì)箭启,組織間的溝通協(xié)調(diào)成本下降壕翩。
  • 技術(shù)的管理成本降低。由于采用了松耦合的架構(gòu)策略傅寡,使得應(yīng)用架構(gòu)既穩(wěn)定又靈活放妈。可以低成本荐操、低風(fēng)險(xiǎn)清理技術(shù)債芜抒,修復(fù)問(wèn)題⊥衅簦或者增加新的功能宅倒。

人員的管理成本降低

當(dāng)業(yè)務(wù)擴(kuò)張的時(shí)候,需要開發(fā)并維護(hù)更多的需求屯耸。因此拐迁,在時(shí)間和質(zhì)量不變的情況下蹭劈,只能通過(guò)增加資源來(lái)滿足需求。但是唠亚,邊際收益遞減規(guī)律告訴我們:在其它條件不變的情況下链方,任何單一要素的投入所帶來(lái)的收益是會(huì)遞減的。因此灶搜,需要增加額外的要素來(lái)獲得增長(zhǎng)和回報(bào)率,特別是調(diào)整組織的結(jié)構(gòu)工窍,降低來(lái)提升容量割卖。

而在大型應(yīng)用系統(tǒng)開發(fā)面前,我們投入資源的只有人患雏,因此我們可以看到鹏溯。大型的項(xiàng)目隨著人員的增加,它所帶來(lái)的管理成本也會(huì)增加淹仑,直到增加人員不產(chǎn)生收益為止丙挽。這是我們?cè)诖笮蛻?yīng)用系統(tǒng),特別是互聯(lián)網(wǎng)應(yīng)用上看到的問(wèn)題匀借。

以前粗放式的通過(guò)把復(fù)雜問(wèn)題分解颜阐,并且通過(guò)人海戰(zhàn)術(shù)開發(fā)需求的模式將不可持續(xù)。一方面吓肋,復(fù)雜度的提升凳怨,需要能夠把問(wèn)題合理拆解到合理規(guī)模的架構(gòu)師,這樣的架構(gòu)師獲得成本較高是鬼,無(wú)論是招聘還是培訓(xùn)肤舞。另一方面,隨著開發(fā)維護(hù)人員的增加均蜜,人員的管理會(huì)增加額外的成本李剖。

然而,微服務(wù)的出現(xiàn)囤耳。改變了應(yīng)用架構(gòu)篙顺,并在依據(jù)康威定律的作用下,改變了組織形式紫皇。通過(guò)自組織的全功能敏捷團(tuán)隊(duì)慰安,簡(jiǎn)化了交付的流程的溝通成本。通過(guò)采用自動(dòng)化手段將最佳實(shí)踐制度化聪铺,提升了交付質(zhì)量化焕,降低了培訓(xùn)的成本。通過(guò)把一個(gè)問(wèn)題分解為獨(dú)立的問(wèn)題铃剔,避免界限不清帶來(lái)的額外成本撒桨。

從經(jīng)濟(jì)學(xué)角度說(shuō)查刻,微服務(wù)組織結(jié)構(gòu)本身包含產(chǎn)權(quán)制度和界定產(chǎn)權(quán)兩個(gè)部分。

如果你的微服務(wù)做得最夠好凤类,根據(jù)康威定律穗泵,你的架構(gòu)會(huì)和你的組織結(jié)構(gòu)是一致的。如果你有了一個(gè)自治且自我成長(zhǎng)的團(tuán)隊(duì)后谜疤,通過(guò)把最佳實(shí)踐變成制度和規(guī)則充分授權(quán)佃延,而不需要更多的請(qǐng)示和匯報(bào),你的組織結(jié)構(gòu)不會(huì)有一個(gè)很厚很高的層次以及對(duì)應(yīng)的回報(bào)關(guān)系夷磕。而是扁平而松散的結(jié)構(gòu)履肃,每個(gè)團(tuán)隊(duì)按照同樣的制度獨(dú)立完成任務(wù),不會(huì)出現(xiàn)組織流程上的阻塞坐桩。但能夠達(dá)到同樣的質(zhì)量效率尺棋。

而這樣的文化最后最后會(huì)形成一個(gè)開發(fā)軟件的文化和制度,這個(gè)制度可以在組織內(nèi)復(fù)制并且推廣延續(xù)绵跷。減少了更多的人工管理成本撮慨。

因此绰疤,微服務(wù)架構(gòu)能夠大幅度的降低組織的管理成本。我們可以看到團(tuán)隊(duì)自我改進(jìn)、人員能力提升鲜棠,你可以有更少的管理層猫态,在 2018 年北京 DevOpsDays 上華為 DevCloud 團(tuán)隊(duì)的案例分享也證明了這一點(diǎn)望薄。

因此槽驶,一個(gè)成功的微服務(wù)實(shí)施,我們可以看到以下幾點(diǎn)組織特征:

  • 組織結(jié)構(gòu)的扁平化蚯瞧,更少的管理層嘿期。意味著更低的管理成本。
  • 組織的彈性更好埋合,抗風(fēng)險(xiǎn)能力更佳备徐。任何人的離開都不會(huì)帶來(lái)很大的影響。
  • 交付質(zhì)量和產(chǎn)出高甚颂,至少每天一次的高質(zhì)量發(fā)布使得任何變更都不會(huì)出現(xiàn)阻塞蜜猾。
  • 培訓(xùn)成本降低,統(tǒng)一了原則和文化振诬,使得任何新人進(jìn)入團(tuán)隊(duì)都可以快速上手蹭睡。(2個(gè)迭代就有產(chǎn)出)
  • 沒有阻塞,團(tuán)隊(duì)獨(dú)立并且實(shí)時(shí)監(jiān)控組織產(chǎn)能情況赶么,可以動(dòng)態(tài)的調(diào)整資源和產(chǎn)量肩豁。

技術(shù)的管理成本降低

另一個(gè)微服務(wù)成功的特征就是技術(shù)管理成本的降低,這個(gè)有兩個(gè)方面的成本。一方面是開發(fā)成本清钥,另一方面是維護(hù)成本琼锋。

主要原因是在單體應(yīng)用的時(shí)代,在變更請(qǐng)求頻繁的情況下祟昭,單體應(yīng)用成為了一個(gè)互斥資源缕坎。借用 DevOps 和約束理論(ToC)的話說(shuō),單體應(yīng)用的代碼庫(kù)成為了一個(gè)約束點(diǎn)篡悟。在這個(gè)代碼庫(kù)上的所有變更都需要精心的安排和設(shè)計(jì)谜叹,否則會(huì)帶來(lái)整體影響。架構(gòu)師需要仔細(xì)研究推敲各個(gè)方面恰力,才可以綜合因素做下一階段的安排叉谜。這時(shí)候,我們需要對(duì)于應(yīng)用架構(gòu)的變更進(jìn)行“批處理”踩萎。如果一批變更太多,一個(gè)變更失敗就會(huì)導(dǎo)致一批失敗很钓。因此香府,業(yè)界開始采用"小步快跑"的方式頻繁的發(fā)布,減少失敗率码倦。為了達(dá)到這個(gè)目的企孩,就有了“持續(xù)交付”以及 DevOps 相關(guān)的實(shí)踐。

因此袁稽,我們需要通過(guò)一定的方法解除約束點(diǎn)勿璃。由于上文提到的應(yīng)用程序的 DevOps 假設(shè)及其推論。我們可以把應(yīng)用程序拆分成邊界清晰的不同部分推汽,用不同的代碼庫(kù)管理补疑,并由不同的團(tuán)隊(duì)去維護(hù)。從而達(dá)到開發(fā)運(yùn)維的局部性歹撒,用以實(shí)施持續(xù)交付莲组。

這樣做有幾個(gè)好處:

首先,你會(huì)得到一個(gè)清晰的架構(gòu)暖夭。而我們現(xiàn)在大部分系統(tǒng)的應(yīng)用架構(gòu)是混亂的锹杈,里面存在了太多的“暗知識(shí)”÷踝牛“暗知識(shí)”就是需要通過(guò)跟蹤代碼竭望,跟蹤日志,實(shí)際運(yùn)行監(jiān)測(cè)的到的不確定的知識(shí)≡2ぃ現(xiàn)在我們?nèi)ギ嬕粋€(gè)系統(tǒng)的架構(gòu)分層圖咬清,你畫出來(lái)的圖跟實(shí)際系統(tǒng)對(duì)應(yīng)程度并不是很高,而且很混亂,往往出現(xiàn)的情況是部署架構(gòu)和邏輯架構(gòu)不一致枫振。

其次喻圃,你會(huì)得到更快、更穩(wěn)定的發(fā)布反饋粪滤。這實(shí)際上是 DevOps 帶來(lái)的好處斧拍。使得你可以更頻繁的去部署應(yīng)用,在部署和更新的時(shí)候應(yīng)用更穩(wěn)定杖小,存在更少的宕機(jī)時(shí)間肆汹。在這個(gè)過(guò)程中會(huì)發(fā)現(xiàn)有很多的自動(dòng)化,然后隨著微服務(wù)做得越來(lái)越多予权。最大的問(wèn)題就是面對(duì)微服務(wù)的管理昂勉。實(shí)際上,在外部需求功能不變的情況下扫腺,微服務(wù)的大小決定了微服務(wù)的數(shù)量岗照。同樣也決定了團(tuán)隊(duì)的數(shù)量和管理的復(fù)雜度。所以笆环,微服務(wù)的大小不是問(wèn)題攒至,問(wèn)題是你有多少人員能夠支撐這樣的復(fù)雜度。

我們知道如果你的開發(fā)任務(wù)量在增加的時(shí)候躁劣,我們?cè)诓辉黾淤Y金投入迫吐,不增加開發(fā)時(shí)間的情況下的情況下能做到最好的方式就是減少滿足你最終交付時(shí)間點(diǎn)的需求。但是到了微服務(wù)的環(huán)境下账忘,你不需要再有這樣的到期時(shí)間點(diǎn)交付的任務(wù)志膀,你發(fā)現(xiàn)不需要增加人同樣可以解決這些問(wèn)題。

當(dāng)你發(fā)現(xiàn)需要管理這么多微服務(wù)你需要額外的自動(dòng)化鳖擒,你的團(tuán)隊(duì)里就會(huì)自驅(qū)形成自動(dòng)化的意識(shí)溉浙。

然而,自動(dòng)化帶來(lái)的不僅僅是效率和穩(wěn)定性败去。

通過(guò)持續(xù)交付流水線放航,我們把功能測(cè)試和非功能測(cè)試都自動(dòng)化起來(lái),并且集成到持續(xù)交付流水線里圆裕。

這樣广鳍,我們就把提升質(zhì)量作為一種制度貫徹下去,避免人為質(zhì)量管理帶來(lái)的疏漏和質(zhì)量下降吓妆。

記住赊时,頻繁發(fā)布的前提是不斷提升質(zhì)量。如果降低對(duì)質(zhì)量的要求行拢,持續(xù)交付就只剩頻繁發(fā)布了祖秒。所謂“質(zhì)量不能降,一降就走樣”。

有了高質(zhì)量作為發(fā)布門禁和要求竭缝,我們就會(huì)看到團(tuán)隊(duì)會(huì)向這個(gè)標(biāo)準(zhǔn)努力并提升自己的能力房维。發(fā)布的風(fēng)險(xiǎn)和帶來(lái)的影響會(huì)越來(lái)越小。

任何讓你缺乏信心的發(fā)布都有一個(gè)質(zhì)量忙點(diǎn)抬纸,問(wèn)題是咙俩,有多少人會(huì)愿意制度化的方式去解決,而不依賴人和測(cè)試湿故。

因此阿趁,從技術(shù)上看,我們可以看到一個(gè)成功的微服務(wù)實(shí)施具備以下幾點(diǎn)特征:

  • 很多個(gè)代碼庫(kù)坛猪,以及一一對(duì)應(yīng)的流水線脖阵。
  • 應(yīng)用可以隨時(shí)部署,并不需要等待墅茉。
  • 大量的自動(dòng)化測(cè)試命黔。
  • 更少的變更事故。
  • 更低的發(fā)布風(fēng)險(xiǎn)就斤。
  • 可以按需擴(kuò)展纷铣。
  • 更多的自動(dòng)化手段。

最后

當(dāng)我們知道如何度量微服務(wù)的效果之后战转,我們就可以拿這個(gè)參考來(lái)考察一下微服務(wù)的組織實(shí)踐和技術(shù)實(shí)踐是否有助于我們達(dá)到以上的效果。接下來(lái)以躯,我們會(huì)通過(guò)對(duì)比該微服務(wù)化架構(gòu)組織和技術(shù)的異同來(lái)說(shuō)明微服務(wù)所帶來(lái)的轉(zhuǎn)變槐秧。請(qǐng)期待下一篇:《成功微服務(wù)實(shí)施的技術(shù)演進(jìn)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市忧设,隨后出現(xiàn)的幾起案子刁标,更是在濱河造成了極大的恐慌,老刑警劉巖址晕,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膀懈,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡谨垃,警方通過(guò)查閱死者的電腦和手機(jī)启搂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)刘陶,“玉大人胳赌,你說(shuō)我怎么就攤上這事〕赘簦” “怎么了疑苫?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我捍掺,道長(zhǎng)撼短,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任挺勿,我火速辦了婚禮曲横,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘满钟。我一直安慰自己胜榔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布湃番。 她就那樣靜靜地躺著夭织,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吠撮。 梳的紋絲不亂的頭發(fā)上尊惰,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音泥兰,去河邊找鬼弄屡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鞋诗,可吹牛的內(nèi)容都是我干的膀捷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼削彬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼全庸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起融痛,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤壶笼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后雁刷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體覆劈,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年沛励,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了责语。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侯勉,死狀恐怖鹦筹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情址貌,我是刑警寧澤铐拐,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布徘键,位于F島的核電站,受9級(jí)特大地震影響遍蟋,放射性物質(zhì)發(fā)生泄漏吹害。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一虚青、第九天 我趴在偏房一處隱蔽的房頂上張望它呀。 院中可真熱鬧,春花似錦棒厘、人聲如沸纵穿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谓媒。三九已至,卻和暖如春何乎,著一層夾襖步出監(jiān)牢的瞬間句惯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工支救, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抢野,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓各墨,卻偏偏與公主長(zhǎng)得像指孤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贬堵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容