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