微服務(wù)架構(gòu)讓你的應(yīng)用程序開(kāi)發(fā)提速!
本文轉(zhuǎn)載自微信公眾號(hào)「計(jì)算機(jī)世界」,作者Lee Atchison。轉(zhuǎn)載本文請(qǐng)聯(lián)系計(jì)算機(jī)世界公眾號(hào)。
你可能正面臨這樣的處境:你擁有豐富的應(yīng)用程序,還有大量使用這些應(yīng)用程序的客戶。除此之外,你還擁有大量的產(chǎn)品目錄,商城也做得很大且功能豐富。一切看起來(lái)都很好。
但除了這些,你還要面對(duì)很多問(wèn)題。
你的應(yīng)用程序經(jīng)常崩潰。當(dāng)它出現(xiàn)問(wèn)題時(shí),雖然開(kāi)發(fā)人員可以即時(shí)解決,并且他們修復(fù)站點(diǎn)的速度也很快,但這需要付出大量時(shí)間和精力。想象一下,如果這種宕機(jī)經(jīng)常出現(xiàn),一宕就是好幾個(gè)小時(shí),你會(huì)損失多少的生意?
你的開(kāi)發(fā)人員也想解決這個(gè)問(wèn)題,他們有很多想做的事情,比如他們一直想要實(shí)現(xiàn)一些很棒的新功能。但他們根本無(wú)法完成,因?yàn)樾迯?fù)錯(cuò)誤和緊急救援消耗了他們太多的精力。
你想要雇用更多的人,但并沒(méi)有足夠的預(yù)算支持。而且,你還需要不斷招聘新人以替換即將離職的人。例如:?jiǎn)T工Judy去了一家更大的科技公司,員工Joe離開(kāi)是因?yàn)樗谏钜固幚砹颂嗟木o急情況,感到筋疲力盡。
技術(shù)問(wèn)題不僅給你帶來(lái)壓力,也給你的團(tuán)隊(duì)帶來(lái)壓力。它讓你看不到任何出路,把你和你的公司都困住了。
你掉進(jìn)了一個(gè)許多軟件公司和非軟件公司IT部門(mén)都掉進(jìn)過(guò)的陷阱。這些公司創(chuàng)建了可以處理所有事情的大型的整體式應(yīng)用程序。但是這些應(yīng)用程序因?yàn)樽兊锰^(guò)龐大和復(fù)雜,以至于難以控制。沒(méi)有人能完全了解應(yīng)用程序中發(fā)生的所有事。
這時(shí)候問(wèn)題出現(xiàn)了,這些應(yīng)用程序需要不斷地修復(fù)。你嘗試添加新的功能或改進(jìn)現(xiàn)有的功能,但這些更改牽一發(fā)而動(dòng)全身,以至于你無(wú)法在短時(shí)間內(nèi)完成這些嘗試,而且就算它們完成了,也可能充滿了錯(cuò)誤。因此,你的開(kāi)發(fā)速度變得很慢,而且越來(lái)越慢。這時(shí)你嘗試增加更多的開(kāi)發(fā)人員,但他們似乎并沒(méi)有讓事情進(jìn)展得更快,而且新開(kāi)發(fā)人員需要花費(fèi)大量的時(shí)間去學(xué)習(xí)。
這時(shí)的你感覺(jué)就像被困在泥潭里。
其實(shí)困難是可以避免的。你不用全盤(pán)否定這些應(yīng)用程序,而是根據(jù)公司需求重新構(gòu)建他們。
不斷增長(zhǎng)的應(yīng)用程序
你可以先從一個(gè)由一個(gè)人或一兩個(gè)小型開(kāi)發(fā)團(tuán)隊(duì)編寫(xiě)和管理的簡(jiǎn)單應(yīng)用程序開(kāi)始。這個(gè)應(yīng)用程序如圖 1 所示,簡(jiǎn)潔明了。
圖1:一個(gè)簡(jiǎn)單但不斷增長(zhǎng)的應(yīng)用程序
隨著時(shí)間的推移,應(yīng)用程序不斷增長(zhǎng)。因?yàn)閼?yīng)用程序的成功,導(dǎo)致流量急劇增加,所以你開(kāi)始添加新的特性和功能,并雇用更多的開(kāi)發(fā)人員來(lái)開(kāi)發(fā)應(yīng)用程序。很快,它就看起來(lái)像是圖 2。
圖2:一個(gè)復(fù)雜的、停滯不前的應(yīng)用程序
現(xiàn)在,新的問(wèn)題出現(xiàn)了。沒(méi)人知道他們?cè)撠?fù)責(zé)應(yīng)用程序的哪些部分。團(tuán)隊(duì)1做的改變會(huì)影響到團(tuán)隊(duì)3。因此,大家的壓力都很大,生產(chǎn)力變得很低,而且錯(cuò)誤會(huì)蔓延到整個(gè)應(yīng)用程序中。于是你的站點(diǎn)開(kāi)始出現(xiàn)故障,但這時(shí)候你可能還以為故障是隨機(jī)產(chǎn)生的。當(dāng)出現(xiàn)故障時(shí),您的團(tuán)隊(duì)很難找出問(wèn)題所在,因?yàn)闆](méi)有人能夠了解應(yīng)用程序中發(fā)生的一切。這就是你遇到的典型困難。
你的獨(dú)立開(kāi)發(fā)團(tuán)隊(duì)并不是真正獨(dú)立的,因?yàn)橐粋€(gè)團(tuán)隊(duì)所做的改變會(huì)對(duì)其他團(tuán)隊(duì)的工作產(chǎn)生很大的影響。你不能處理獨(dú)立的項(xiàng)目,因?yàn)樗械捻?xiàng)目都是相互交織的。創(chuàng)新被扼殺了,你的業(yè)務(wù)也是如此。
微服務(wù)架構(gòu)的價(jià)值
現(xiàn)在一起來(lái)看看圖3。
圖 3:基于微服務(wù)架構(gòu)的應(yīng)用程序
在微服務(wù)架構(gòu)的應(yīng)用程序里,每個(gè)服務(wù)都是獨(dú)立于其他服務(wù)的。每項(xiàng)服務(wù)規(guī)模都較小,但量更大。每項(xiàng)服務(wù)之間都有明確的關(guān)聯(lián),而且也有著明確規(guī)范的業(yè)務(wù)邏輯。
更重要的是,每個(gè)服務(wù)都有單一的負(fù)責(zé)人,每項(xiàng)服務(wù)的所有方面都由一個(gè)開(kāi)發(fā)團(tuán)隊(duì)負(fù)責(zé)。
干凈的應(yīng)用程序結(jié)構(gòu)會(huì)使所有權(quán)和責(zé)任更清晰。
簡(jiǎn)而言之,你的應(yīng)用程序得到了擴(kuò)展。而且,這個(gè)擴(kuò)展不是指它可以支持的客戶數(shù)量變多了,而是它支持的獨(dú)立開(kāi)發(fā)人員、項(xiàng)目和計(jì)劃更多了,因此可以支持和維護(hù)你不斷增長(zhǎng)的業(yè)務(wù)。
開(kāi)發(fā)團(tuán)隊(duì)不會(huì)互相影響,因此工作效率變得更高。而且,因?yàn)榈图?jí)問(wèn)題變少,他們會(huì)更快樂(lè),有可能在公司待得更久。
此外,你可以通過(guò)簡(jiǎn)單地再平衡所有權(quán)責(zé)任來(lái)增加開(kāi)發(fā)團(tuán)隊(duì)的數(shù)量,從而增加開(kāi)發(fā)人員的數(shù)量。越來(lái)越多的開(kāi)發(fā)人員變得更有效率,并且你可以在所有重要的業(yè)務(wù)項(xiàng)目上取得更好的進(jìn)展,從而使你的生意發(fā)展的更好。
如果出現(xiàn)問(wèn)題,通過(guò)分析服務(wù)之間的交互,你可以更輕松地鎖定問(wèn)題的根源,以及哪個(gè)團(tuán)隊(duì)?wèi)?yīng)該負(fù)責(zé)修復(fù)。此外,由于每個(gè)團(tuán)隊(duì)的職責(zé)范圍變小,他們對(duì)自己負(fù)責(zé)的服務(wù)運(yùn)作會(huì)更清楚,因此可以更快、更有效地解決問(wèn)題。而且,因?yàn)樗麄兏私庾约贺?fù)責(zé)的領(lǐng)域,所以也不太可能將錯(cuò)誤引入系統(tǒng)。
作者:Lee Atchison,云計(jì)算和應(yīng)用程序現(xiàn)代化領(lǐng)域公認(rèn)的專家。Lee在產(chǎn)品開(kāi)發(fā)、架構(gòu)、擴(kuò)展和現(xiàn)代化應(yīng)用方面擁有超過(guò)三十年的經(jīng)驗(yàn),曾在 Amazon、Amazon Web Services (AWS)、New Relic等現(xiàn)代應(yīng)用行業(yè)工作過(guò)。Lee最近的一本書(shū)是《Architing for Scale(O'Reilly Media)》。
原文網(wǎng)址:
https://www.infoworld.com/article/3637016/why-you-should-use-a-microservice-architecture.html