Serverless?時代下大規(guī)模微服務(wù)應(yīng)用運(yùn)維的最佳實(shí)踐
時間:2021-10-08 17:01:11
手機(jī)看文章
掃描二維碼
隨時隨地手機(jī)看文章
[導(dǎo)讀]微服務(wù)架構(gòu)的優(yōu)點(diǎn)和痛點(diǎn)Aliware1微服務(wù)架構(gòu)的誕生背景回到互聯(lián)網(wǎng)早期時代,也就是web1.0時代,當(dāng)時主要是一些門戶網(wǎng)站,單體應(yīng)用是當(dāng)時的主流應(yīng)用,研發(fā)團(tuán)隊(duì)相對較小,這時候的挑戰(zhàn)在于技術(shù)的復(fù)雜度,以及技術(shù)人員的匱乏。到了新世紀(jì)互聯(lián)網(wǎng)時代,出現(xiàn)了較大規(guī)模的一些應(yīng)用,比如社交、電...
微服務(wù)架構(gòu)的優(yōu)點(diǎn)和痛點(diǎn)
Aliware
1
微服務(wù)架構(gòu)的誕生背景
回到互聯(lián)網(wǎng)早期時代,也就是web1.0時代,當(dāng)時主要是一些門戶網(wǎng)站,單體應(yīng)用是當(dāng)時的主流應(yīng)用,研發(fā)團(tuán)隊(duì)相對較小,這時候的挑戰(zhàn)在于技術(shù)的復(fù)雜度,以及技術(shù)人員的匱乏。
到了新世紀(jì)互聯(lián)網(wǎng)時代,出現(xiàn)了較大規(guī)模的一些應(yīng)用,比如社交、電商等,流量和業(yè)務(wù)的復(fù)雜度也大幅增加,出現(xiàn)了幾百甚至上千人的研發(fā)團(tuán)隊(duì),研發(fā)團(tuán)隊(duì)擴(kuò)大之后,協(xié)作問題成為困擾。SOA 解決方案是互聯(lián)網(wǎng)的產(chǎn)物,其核心在于分布式、拆分等。但是因?yàn)?ESB 這樣一些單點(diǎn)的組件,所以沒有得到很好的推廣。阿里巴巴在當(dāng)時推出的 HSF、開源的Dubbo 等技術(shù),其實(shí)是類似于分布式的一個解決方案,當(dāng)時就已經(jīng)有了微服務(wù)架構(gòu)的理念。
微服務(wù)架構(gòu)正式名稱的誕生是在移動互聯(lián)網(wǎng)時代,這時的生活已經(jīng)實(shí)現(xiàn)全面互聯(lián)網(wǎng)化,各種各樣的生活類 APP 涌現(xiàn),網(wǎng)民以及流量復(fù)雜度相對于新世紀(jì)互聯(lián)網(wǎng)時代顯著增強(qiáng)。另外,較大規(guī)模的研發(fā)團(tuán)隊(duì)也已成為主流。這時候,大家普遍都對效率有了更高的追求,而不只是原來只有幾個巨頭需要有這方面的技術(shù)。微服務(wù)架構(gòu)以及微服務(wù)技術(shù)的推出,如 Spring ?Cloud、Dubbo 等框架的普及,極大地推廣了微服務(wù)技術(shù)。
現(xiàn)在我們已經(jīng)進(jìn)入全面的數(shù)字化時代,社會全面互聯(lián)網(wǎng)化,各種各樣的單位(包括政企、相對傳統(tǒng)的單位)都需要較強(qiáng)的研發(fā)能力。流量的挑戰(zhàn)及傳統(tǒng)業(yè)務(wù)復(fù)雜度的挑戰(zhàn)、研發(fā)團(tuán)隊(duì)的擴(kuò)大等,使得大家對效率有了更高的要求。這時候微服務(wù)架構(gòu)得到了進(jìn)一步的推廣和普及。
微服務(wù)架構(gòu)經(jīng)過這么多年的發(fā)展,是經(jīng)久不衰的一項(xiàng)技術(shù),為什么它能夠有這樣持續(xù)的發(fā)展?
2
微服務(wù)架構(gòu)的優(yōu)點(diǎn)
我們來回顧一下微服務(wù)架構(gòu)和單體架構(gòu)的區(qū)別,以及微服務(wù)架構(gòu)的核心優(yōu)勢。
單體架構(gòu)核心的問題在于沖突域太大,包括共享代碼庫。在研發(fā)過程中特別容易沖突;邊界和模塊的規(guī)模不清,使得團(tuán)隊(duì)效率也會降低。
而在微服務(wù)架構(gòu)下,核心就在于拆分,包括解耦的研發(fā)態(tài),解耦的部署態(tài),極大地釋放了團(tuán)隊(duì)的研發(fā)效率。大道至簡,這也是微服務(wù)架構(gòu)為什么能夠持續(xù)發(fā)展的一個原因。
根據(jù)復(fù)雜性守恒定律,我們解決了一個問題,問題會以另一種形式出現(xiàn),我們又需要去解決??梢钥吹?,微服務(wù)時代下會引入非常多的一些痛點(diǎn),核心就是穩(wěn)定性。因?yàn)閺脑瓉淼囊恍┍镜卣{(diào)用改成遠(yuǎn)程調(diào)用以后,可能會發(fā)生穩(wěn)定性的點(diǎn)激增,包括調(diào)度放大,即可能因?yàn)榈讓拥囊恍┻h(yuǎn)程調(diào)用問題,造成上層的一些不穩(wěn)定,以及期間需要做的限流降級、調(diào)用鏈等。
在微服務(wù)時代定位一個問題的復(fù)雜度,也會成指數(shù)級的一個增長,這里面可能還需要服務(wù)治理。另外如果沒有較好的設(shè)計(jì)和預(yù)先的一些設(shè)想,可能會出現(xiàn)微服務(wù)應(yīng)用的爆炸,包括研發(fā)人員和測試人員之間的協(xié)作也都會成問題。
微服務(wù)技術(shù)經(jīng)過這么多年的發(fā)展,業(yè)界其實(shí)已經(jīng)有了一些解決方案。
如上圖顯示,如果要比較好地玩轉(zhuǎn)微服務(wù)技術(shù),除了開發(fā)自己的業(yè)務(wù)系統(tǒng)以外,可能還要配套地搭建多個系統(tǒng),包括CI/CD、發(fā)布系統(tǒng)、研發(fā)流程、微服務(wù)組件相關(guān)的一些工具,以及可觀測性相關(guān)的實(shí)時監(jiān)控、告警系統(tǒng)、服務(wù)治理、調(diào)用鏈等等,還需要運(yùn)維基礎(chǔ)的 IaaS 資源。在這個時代,為了更好地運(yùn)維 IaaS 資源,可能還需要自己維護(hù)一個K8s 集群。
所以說,在這樣的背景下,很多企業(yè)會選擇搭建一個運(yùn)維團(tuán)隊(duì),或者中間件團(tuán)隊(duì),或者說由一些后端研發(fā)同學(xué)兼職。但是試想,有多少企業(yè)對自己內(nèi)部搭建的這套系統(tǒng)是滿意的?系統(tǒng)的迭代效率是多少,有沒有踩到過一些開源的坑,這些坑現(xiàn)在有沒有解決?這些應(yīng)該是在企業(yè)的CTO、架構(gòu)師心中一個持續(xù)的痛點(diǎn)。
Serverless時代下的解決方案
Aliware
1
Serverless時代
Serverless 從2012年第一次提出,到 2014年 推出了 Lambda 這樣一個引爆性的產(chǎn)品后,短暫地達(dá)到了一個影響力的頂峰。但是這樣一個新生事物,突然到真實(shí)的、復(fù)雜的生產(chǎn)環(huán)境中,其實(shí)有許多不適應(yīng),包括需要改善的地方,所以后續(xù)幾年它可能要進(jìn)入一個低谷。
但是,Serverless 的“將簡單交給用戶,復(fù)雜留給平臺”的理念,其實(shí)是非常正確的一個方向。所以在開源界包括業(yè)界,其實(shí)都在持續(xù)性地進(jìn)行 Serverless 方面的一些探索和發(fā)展。
阿里云在2017年推出了函數(shù)計(jì)算(Function Compute,F(xiàn)C),在2018年推出了Serverless應(yīng)用引擎 SAE,在 2019年以及后續(xù)的這些年,阿里云持續(xù)地在 Serverless 領(lǐng)域進(jìn)行投入,支持了包括鏡像部署、預(yù)留實(shí)力、微服務(wù)場景等。
2
Serverless 市場概況
在2021年最新的 Forrester 評測中,阿里云 Serverless 產(chǎn)品能力是中國第一、全球領(lǐng)先,阿里云的 Serverless 用戶占比也是中國第一。這側(cè)面說明了阿里云 Serverless 是已經(jīng)越來越多地進(jìn)入到企業(yè)真實(shí)的生產(chǎn)環(huán)境中,越來越多的企業(yè)認(rèn)可 Serverless 以及阿里云 Serverless 的能力和價(jià)值。
3
SAE解決方案
可以看到,在傳統(tǒng)的微服務(wù)架構(gòu)下面,企業(yè)要用好微服務(wù)相關(guān)的技術(shù)需要自己研發(fā)非常多的解決方案,那么在 Serverless 時代下,在 SAE 這個產(chǎn)品里面是怎么解決的?
我們可以看到,SAE 將 Serverless 這個理念發(fā)揚(yáng)到了極致,不僅僅托管了 IaaS 資源,包括上層的 K8s,另外還集成了白屏化的 PaaS 以及企業(yè)級微服務(wù)相關(guān)的套件和可觀測相關(guān)的套件。在 SAE 整體解決方案里面,針對這些都進(jìn)行了很好的集成,給用戶提供了一個開箱即用的微服務(wù)解決方案,讓企業(yè)和開發(fā)者能夠很簡單地使用微服務(wù)。
1、0 門檻 PaaS
圖中可以看到,SAE 在最上層給用戶提供的是一個白屏化的操作系統(tǒng),它的設(shè)計(jì)理念非常符合企業(yè)一般的 PaaS 系統(tǒng),包括發(fā)布系統(tǒng)或者一些開源的 PaaS 系統(tǒng),這樣極大地降低了企業(yè)上手 SAE 的門檻,甚至可以說零門檻,包括它也集成了阿里巴巴最佳的一些發(fā)布,即發(fā)布三板斧——可觀測、可灰度、可回滾。
另外它也提供了一些企業(yè)級能力的增強(qiáng),包括命名空間環(huán)境隔離、細(xì)粒度的權(quán)限控制等等。從圖中可以看到,在一個企業(yè)里面,如果有兩個相互比較獨(dú)立的模塊,完全可以通過命名空間進(jìn)程進(jìn)行隔離。
2、微服務(wù)治理增強(qiáng)
在微服務(wù)治理增強(qiáng)方面,特別是在 Java 語言,SAE 采用了一個 agent,對用戶來說相當(dāng)于是無侵入、無感知、零升級,而且 agent 的全面兼容開源,使用戶幾乎在無修改的情況下,就可以使用無損下限、API 管理、限流降級、鏈路追蹤等等能力。
3、前后端全鏈路灰度
這里展開兩個能力,第一個能力是前后端全鏈路灰度。SAE 借助前面提到的 agent 技術(shù),從 web請求到網(wǎng)關(guān)到 consumer 到 provide 進(jìn)行了一個全鏈路的打通,使用戶可以通過很簡單的白屏化配置,就可以實(shí)現(xiàn)一個灰度發(fā)布場景。而這樣的技術(shù)如果企業(yè)需要自建,這里面的復(fù)雜度大家應(yīng)該是非常清楚的。
4、CloudToolkit 端云聯(lián)調(diào)
第二個能力就是 CloudToolkit 的端云聯(lián)調(diào)。大家都知道微服務(wù)的場景下面應(yīng)用數(shù)量是呈現(xiàn)一個爆炸的趨勢,如果本地需要開發(fā),需要啟動那么多的應(yīng)用,如何能夠安全便捷地聯(lián)調(diào)云上的一個服務(wù)?現(xiàn)在借助 CloudToolkit,用戶可以很簡單地在本地就打通云上的環(huán)境,進(jìn)行一個端云聯(lián)調(diào),極大地降低開發(fā)測試的門檻。
5、強(qiáng)大的應(yīng)用監(jiān)控