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

icon2

1.2 微服務(wù)因何而生

微服務(wù)的概念我們應(yīng)該大體了解了,那么微服務(wù)又是怎么來(lái)的?原來(lái)將很多功能打包為一個(gè)很大的服務(wù)單元進(jìn)行交付的做法不能滿(mǎn)足需求嗎?

實(shí)際上,并非原來(lái)“大一統(tǒng)”(Monolith)的服務(wù)化實(shí)踐不能滿(mǎn)足要求,也不是不好,只是,它有自己存在的合理場(chǎng)景。對(duì)于Monolith服務(wù)來(lái)說(shuō),如果團(tuán)隊(duì)不大,軟件復(fù)雜度不高,那么,使用Monolith的形式進(jìn)行服務(wù)化治理是比較合適的,而且,這種方式對(duì)運(yùn)維和各種基礎(chǔ)設(shè)施的要求也不高。

但是,隨著軟件系統(tǒng)的復(fù)雜度持續(xù)飆升,軟件交付的效率要求更高,投入的人力以及各項(xiàng)資源越來(lái)越多,基于Monolith的服務(wù)化思路就開(kāi)始“捉襟見(jiàn)肘”。

在開(kāi)發(fā)階段,如果我們遵循Monolith的服務(wù)化理念,通常會(huì)將所有功能的實(shí)現(xiàn)都統(tǒng)一歸到一個(gè)開(kāi)發(fā)項(xiàng)目下,但隨著功能的膨脹,這些功能一定會(huì)分發(fā)給不同的研發(fā)人員進(jìn)行開(kāi)發(fā),造成的后果就是,大家在提交代碼的時(shí)候頻繁沖突并需要解決這些沖突,單一的開(kāi)發(fā)項(xiàng)目成為了開(kāi)發(fā)期間所有人的工作瓶頸。

為了減輕這種苦惱,我們自然會(huì)將項(xiàng)目按照要開(kāi)發(fā)的功能拆分為不同的項(xiàng)目,從而負(fù)責(zé)不同功能的研發(fā)人員就可以在自己的代碼項(xiàng)目上進(jìn)行開(kāi)發(fā),從而解決了大家無(wú)法在開(kāi)發(fā)階段并行開(kāi)發(fā)的苦惱。

到了軟件交付階段,如果我們遵循Monolith的服務(wù)化理念,那么,我們一定是將所有這些開(kāi)發(fā)階段并行開(kāi)發(fā)的項(xiàng)目集合到一起進(jìn)行交付,這就涉及服務(wù)化早期實(shí)踐中比較有名的“火車(chē)模型”,即交付的服務(wù)就像一輛火車(chē),而這個(gè)服務(wù)相關(guān)的所有功能對(duì)應(yīng)的項(xiàng)目成果,就是要裝上火車(chē)車(chē)廂的一件件貨物,交付的列車(chē)只有等到所有項(xiàng)目都開(kāi)發(fā)測(cè)試完成后才可以裝車(chē)出發(fā),完成整個(gè)服務(wù)的交付。很顯然,只要有一個(gè)車(chē)廂沒(méi)有準(zhǔn)備好貨物(即功能項(xiàng)目未開(kāi)發(fā)測(cè)試完成),火車(chē)就不能發(fā)車(chē),服務(wù)就不能交付,這大大降低了服務(wù)的交付效率。如果每個(gè)功能項(xiàng)目可以各自獨(dú)立交付,那么就不需要都等同一輛火車(chē),各自出發(fā)就可以了。順著這個(gè)思路,自然而然地,大家逐漸各自獨(dú)立,每一個(gè)功能或者少數(shù)相近的功能作為單一項(xiàng)目開(kāi)發(fā)完成后將作為一個(gè)獨(dú)立的服務(wù)單元進(jìn)行交付,從而在服務(wù)交付階段,大家也能夠并行不悖,各自演化而不受影響。

所以,隨著服務(wù)和系統(tǒng)的復(fù)雜度逐漸飆升,為了能夠在整個(gè)軟件的交付鏈路上高效擴(kuò)展,將獨(dú)立的功能和服務(wù)單元進(jìn)行拆分,從而形成一個(gè)一個(gè)的微服務(wù)是自然而然發(fā)生的事情。這就像打不同的戰(zhàn)役一樣,在雙方兵力不多、戰(zhàn)場(chǎng)復(fù)雜度不高的情況下,Monolith的統(tǒng)一指揮調(diào)度方式是合適的;而一旦要打大的戰(zhàn)役(類(lèi)似于系統(tǒng)復(fù)雜度提升),雙方一定會(huì)投入大量的兵力(軟件研發(fā)團(tuán)隊(duì)的規(guī)模增長(zhǎng)),如果還是在狹小甚至固定的戰(zhàn)場(chǎng)上進(jìn)行廝殺,顯然施展不開(kāi)!所以,小戰(zhàn)役有小戰(zhàn)役的打法,大戰(zhàn)役有大戰(zhàn)役的戰(zhàn)法,而微服務(wù)實(shí)際上就是一種幫助擴(kuò)展組織能力、提升團(tuán)隊(duì)效率的應(yīng)對(duì)“大戰(zhàn)役”的方法,它幫助我們從軟件開(kāi)發(fā)到交付,進(jìn)而到團(tuán)隊(duì)和組織層面多方位進(jìn)行擴(kuò)展。

總的來(lái)說(shuō),一方面微服務(wù)可以幫助我們應(yīng)對(duì)飆升的系統(tǒng)復(fù)雜度;另一個(gè)方面,微服務(wù)可以幫助我們進(jìn)行更大范圍的擴(kuò)展,從開(kāi)發(fā)階段項(xiàng)目并行開(kāi)發(fā)的擴(kuò)展,到交付階段并行交付的擴(kuò)展,再到相應(yīng)的組織結(jié)構(gòu)和組織能力的擴(kuò)展,皆因微服務(wù)而受惠。

主站蜘蛛池模板: 迁安市| 平顺县| 秀山| 武夷山市| 大石桥市| 佛坪县| 南漳县| 长海县| 桐梓县| 多伦县| 龙里县| 瓦房店市| 绥棱县| 那曲县| 无锡市| 北海市| 印江| 达拉特旗| 定陶县| 丰都县| 会泽县| 弥渡县| 连山| 鹿泉市| 屯留县| 历史| 仙居县| 蓬溪县| 凭祥市| 河池市| 阿合奇县| 呼伦贝尔市| 大邑县| 望江县| 定兴县| 得荣县| 连城县| 顺平县| 蓝山县| 阿尔山市| 红原县|