Serverless Computing:這才是云計(jì)算該有的樣子?
如果你是一個(gè)程序員,相信你至少肯定聽說過Serverless Computing,ServerlessComputing被認(rèn)為是繼Docker之后又一個(gè)可能改變軟件開發(fā)行業(yè)的技術(shù);如果你的工作與云計(jì)算有關(guān),你也有很大概率聽說過Serverless Computing,Serverless Computing被認(rèn)為代表了云計(jì)算的未來,Serverless Computing才是云計(jì)算真正的形態(tài)。不管這些說法是否正確,至少說明Serverless Computing是一種被廣泛關(guān)注的熱門技術(shù)。
可以看到,各大公有云廠商已經(jīng)積極行動起來。AWS從2014年推出了Serverless Computing服務(wù)Lambda,其他廠商也在積極跟進(jìn),Azure推出了Azure Function、Google有Google Cloud Function,和它們相比,中國的幾個(gè)云大廠跟進(jìn)的步伐稍稍慢了一點(diǎn),但在2018年左右阿里云、騰訊云、華為云等都紛紛推出了自己的Serverless服務(wù),用戶使用量也在快速增長。不久前騰訊云公開的數(shù)據(jù),騰訊云的Serverless服務(wù)日均調(diào)用已經(jīng)打達(dá)到百億次。
顯然,Serverless使用量是與Serverless的市場熱度相匹配的。Serverless Computing被認(rèn)為是繼虛擬機(jī)、容器之后云計(jì)算的第三波浪潮,甚至有人認(rèn)為Serverless Computing才是云計(jì)算的真正的形態(tài)。2019 年Serverless Computing就曾被 Gartner 稱為最有潛力的云計(jì)算技術(shù)發(fā)展方向,并被賦予是必然性的發(fā)展趨勢。
Serverless Computing代表云的未來?
Serverless是無服務(wù)器的意思,Serverless Computing就是無服務(wù)器計(jì)算。Serverless Computing當(dāng)然不是不要服務(wù)器,只是軟件開發(fā)人員無需考慮服務(wù)器的管理和運(yùn)維,只專心于代碼本身、專注于代碼的業(yè)務(wù)邏輯實(shí)現(xiàn)。
按照 CNCF 對 Serverless Computing的定義,Serverless Computing是指構(gòu)建和運(yùn)行不需要服務(wù)器管理的應(yīng)用程序,使用者將代碼托管到第三方(云服務(wù)商),由托管方按需提供后端服務(wù),然后根據(jù)其實(shí)際計(jì)算量付費(fèi),而不必保留和支付固定數(shù)量的帶寬或服務(wù)器數(shù)量。
Serverless Computing之所以讓軟件開發(fā)人員感覺興奮,因?yàn)樗麄儾辉傩枰c服務(wù)器打交道。此前,為了讓應(yīng)用程序順利部署到服務(wù)器端,需要考慮服務(wù)器的容量、帶寬等等,這需要軟件開發(fā)人員付出很多精力。后來有了容器和Kubernetes,讓開發(fā)人員的工作變得容易了一些,但對于不少人來說還是太難了。而Serverless Computing解放了他們,無需關(guān)注這些,主要關(guān)心代碼。
不過,只是談開發(fā)人員喜歡Serverless Computing,還是小看了它。Serverless Computing更大影響在于它可能是會再次改變云計(jì)算行業(yè)的游戲規(guī)則。眾所周知,云計(jì)算最著名的一個(gè)口號是像用水和用電一樣使用IT,但在真正落地時(shí)并非如此。云計(jì)算最典型的使用方式是,用戶根據(jù)預(yù)估的計(jì)算、網(wǎng)絡(luò)和存儲向云服務(wù)商購買云主機(jī),在真正使用時(shí),用戶不僅要在這些服務(wù)器上部署各種軟件,在實(shí)際使用時(shí)用戶還要時(shí)刻考慮實(shí)際用量,和傳統(tǒng)計(jì)算模式的區(qū)別在于沒有了基建的負(fù)擔(dān),采購變方便了,可以隨時(shí)進(jìn)行采購,而在實(shí)際運(yùn)營方面與在自己數(shù)據(jù)中心部署服務(wù)器并沒有大的區(qū)別,同樣要為部署、擴(kuò)容、縮容操心。
而Serverless Computing像插座一樣即插即用,極大地降低了云計(jì)算的接入使用門檻,通過FaaS加BaaS基本上可以重構(gòu)大部分的企業(yè)級應(yīng)用。基于Serverless平臺上創(chuàng)建高可用、高可擴(kuò)展性的微服務(wù)將是異常簡單的事情,只寫好業(yè)務(wù)代碼就行了,根本不用去考慮架構(gòu)、擴(kuò)展、并發(fā)之類的問題,也完全沒必要花大價(jià)錢買云主機(jī)或容器服務(wù),既麻煩又浪費(fèi)。正因?yàn)槿绱耍腥颂岢鯯erverless Computing是云計(jì)算領(lǐng)域繼虛擬機(jī)、容器之后第三波技術(shù)浪潮,對云計(jì)算產(chǎn)業(yè)的影響由此可見一斑。
Serverless Computing之優(yōu)與劣
任何一項(xiàng)技術(shù)的流行都是有原因的,Serverless Computing也不例外。Serverless Computing最大的優(yōu)勢可以簡單概括為按需付費(fèi)、彈性伸縮、快速部署。
成本效益是Serverless Computing的主要賣點(diǎn)之一。和云計(jì)算一樣,Serverless Computing可以降低整體 IT 預(yù)算的成本,因?yàn)闆]有服務(wù)器硬件,維護(hù)成本相對較低。而相比于傳統(tǒng)云計(jì)算,對Serverless Computing云服務(wù)提供商通常會根據(jù)運(yùn)行時(shí)間向您收費(fèi),這個(gè)計(jì)算可以精確到秒,不再會為不使用的服務(wù)付費(fèi)。騰訊云和阿里云都提到Serverless Computing能實(shí)現(xiàn)一半的費(fèi)用節(jié)省。
簡化運(yùn)維、實(shí)現(xiàn)快速部署。Serverless Computing最大優(yōu)點(diǎn)是服務(wù)器的運(yùn)維完全交由第三方云服務(wù)提供商,這可以顯著簡化企業(yè)的運(yùn)營工作,使其得以更專注于關(guān)鍵的業(yè)務(wù)開發(fā)。對于開發(fā)人員而言,這可以顯著提高工作效率,幫助他們充分發(fā)揮編碼能力。
高可擴(kuò)展性是Serverless Computing的另一優(yōu)勢。使用Serverless Computing后,由于可擴(kuò)展性規(guī)劃都交給了云服務(wù)提供商管理,如果要在軟件開發(fā)計(jì)劃中擴(kuò)展和引入新功能變得更加容易,根本不必?fù)?dān)心服務(wù)器、帶寬和存儲容量是否夠用。
同樣,和所有技術(shù)一樣,Serverless Computing也并非完美,特別是作為一項(xiàng)還處于成長過程中的技術(shù),Serverless Computing還面臨不小的挑戰(zhàn),其中有技術(shù)的也有市場方面的。
毫無疑問,Serverless Computing最被詬病的是冷啟動。所謂冷啟動是指應(yīng)用程序首次被調(diào)用加載時(shí)間過長,影響了用戶體驗(yàn)。這個(gè)問題比較突出,好在各大云服務(wù)商都針對這一點(diǎn)提出了不少解決辦法,假以時(shí)日這個(gè)問題至少會得到緩解。
Serverless Computing面臨的第二挑戰(zhàn)是安全問題。由于Serverless Computing用戶把代碼托管給了第三方,也就意味著基本失去了對代碼的控制,而第三方往往會在同一臺服務(wù)器上運(yùn)行多個(gè)用戶的代碼,這就可能帶來安全問題,比如數(shù)據(jù)泄露。另外,如果服務(wù)器受到DDoS 攻擊,所有依賴該服務(wù)器的客戶都會受到影響。
Serverless Computing另一個(gè)挑戰(zhàn)是調(diào)試和監(jiān)控困難。由于代碼托管到第三方,用戶根本無法了解后端流程,要調(diào)試代碼,可能必須逐行(逐步調(diào)試)以找出問題所在,這都可能既耗時(shí)又令人不快。
不過,在Serverless Computing面臨的所有挑戰(zhàn)中最受關(guān)注的或者說最可能影響用戶使用的還是供應(yīng)商鎖定問題。由于缺乏標(biāo)準(zhǔn),今天用戶在一個(gè)平臺上構(gòu)建的Serverless Computing程序功能通常很難遷移到另一個(gè)服務(wù)提供商,在最壞的情況下可能需要重寫代碼。這就使得用戶在選定一個(gè)Serverless Computing平臺時(shí)必須小心確認(rèn),其是否具有你需要的(不止是當(dāng)前可能還有以后)所有功能。
不過,考慮Serverless Computing目前還處于高速成長過程中,假以時(shí)日這些問題相信都會得到解決。只要它能讓我們以一種資源高效、有效且經(jīng)濟(jì)實(shí)惠的方式來構(gòu)建我們的應(yīng)用程序,創(chuàng)造更多業(yè)務(wù)價(jià)值。隨著這項(xiàng)技術(shù)的逐步成熟和完善,相信在不久的將來會有越來越多公司選擇Serverless Computing。

