譯者 | 胥磊
審校 | 孫淑娟
自云計(jì)算問(wèn)世以來(lái)歷經(jīng)數(shù)次演進(jìn),其中歸根于成本的因素是推動(dòng)云計(jì)算歷次演進(jìn)的重要?jiǎng)恿?。近幾年隨著云計(jì)算的迅猛發(fā)展,終于出現(xiàn)一種新的推動(dòng)力那就是Serverless,其將推動(dòng)云計(jì)算再次演進(jìn)。本文中我們將闡述一個(gè)觀點(diǎn),即Serverless是云計(jì)算的未來(lái),同時(shí)將該論點(diǎn)圍繞以下的前提展開(kāi)論述,進(jìn)而描繪一個(gè)全新的愿景。
- 云計(jì)算是現(xiàn)代互聯(lián)世界的中心,大多數(shù)應(yīng)用都使用云計(jì)算來(lái)收集和處理數(shù)據(jù),并構(gòu)建邊緣設(shè)備需要的信息
- 云計(jì)算的需求預(yù)計(jì)將以每年15%的速度增長(zhǎng)
- 云計(jì)算的支出預(yù)計(jì)將達(dá)到關(guān)鍵市場(chǎng)領(lǐng)域IT成本的50%
- 云計(jì)算的能耗已經(jīng)占了全球能源消耗的1-1.5%,其增長(zhǎng)已對(duì)環(huán)境構(gòu)成實(shí)質(zhì)威脅
綜上,鑒于云計(jì)算不斷增長(zhǎng)的需求,我們提出更節(jié)能,更具成本效益的Serverless計(jì)算模式是當(dāng)前主流云計(jì)算的下一個(gè)演進(jìn)方向。
一、簡(jiǎn)介
當(dāng)下云計(jì)算的影響力已經(jīng)滲透到世界的各個(gè)角落,無(wú)論你身處何方都可以看見(jiàn)那些依賴便攜電腦上網(wǎng)和處理信息的人。那些信息大都從邊緣設(shè)備采集,進(jìn)而被運(yùn)行在云端的應(yīng)用程序和服務(wù)收集,處理后產(chǎn)生的。作為一名擁有該領(lǐng)域多年經(jīng)驗(yàn),且推動(dòng)支撐現(xiàn)代IT關(guān)鍵開(kāi)源技術(shù)發(fā)展的個(gè)體,是時(shí)候退一步思考一下云計(jì)算未來(lái)發(fā)展方向的大問(wèn)題--當(dāng)前云計(jì)算模式的下一步的發(fā)展方向是什么?更確切地說(shuō)是目前占主導(dǎo)地位的由Kubernetes驅(qū)動(dòng)的混合云的計(jì)算模式的未來(lái)是什么。
說(shuō)起無(wú)服務(wù)計(jì)算,就和當(dāng)初Kubernetes的情況一樣,通常被提到的就是自然進(jìn)化,但它是朝著正確的方向演進(jìn)嗎?是否有助于緩解日益增長(zhǎng)的云計(jì)算成本?亦或它的持續(xù)增長(zhǎng)是否對(duì)我們的環(huán)境再次造成威脅?
二、動(dòng)力
在本文中,我們認(rèn)為這些極具挑戰(zhàn)性的問(wèn)題的答案都是確切的。我們相信云計(jì)算的未來(lái)就是Serverless。這一論點(diǎn)的得出,不是簡(jiǎn)單的源自于用戶所實(shí)現(xiàn)的成本效益,而是源于云供應(yīng)商所獲得的更高的計(jì)算密度,另外還源于對(duì)環(huán)境影響方面的因素。所有的計(jì)算模型都必須是“綠色”的,都要具備環(huán)境的可持續(xù)性,要對(duì)我們賴以生存的氣候更友好。
三、歷史視角
作為21世紀(jì)初主導(dǎo)模式的云計(jì)算,被看作是IT史上的一場(chǎng)革命。伴隨著云計(jì)算的興起,任何人都可以用每小時(shí)幾分錢的低廉價(jià)格擁有一塊云計(jì)算機(jī)(通常以VM虛擬機(jī)或容器的形式)。極大的便捷性使任何人在任何地方都具備毫不費(fèi)力的啟動(dòng)“云規(guī)模”計(jì)算資源的能力,這也是我們當(dāng)前技術(shù)革命的最大驅(qū)動(dòng)力之一。
當(dāng)然這場(chǎng)變革也帶來(lái)一個(gè)后果,一旦向用戶提供了高可用的廉價(jià)計(jì)算單元,無(wú)論計(jì)算資源是否被充分的利用都將被一直分配。這些資源被分配后,云供應(yīng)商就需確保在用戶需要使用時(shí)可以被隨時(shí)使用。而與此同時(shí),用戶運(yùn)行的工作負(fù)載卻很難達(dá)到7*24持續(xù)去使用這些分配的計(jì)算資源。
大多數(shù)的工作負(fù)載都具有事件驅(qū)動(dòng)的特性,除了被設(shè)置的事件調(diào)度的時(shí)候,大部分時(shí)間都是在等待事件,當(dāng)一個(gè)事件到來(lái)后工作負(fù)載才會(huì)做出反應(yīng)和回應(yīng)。另一種常見(jiàn)的工作負(fù)載就是以批處理的模式工作,當(dāng)然批處理任務(wù)可能是外部事件觸發(fā),也可能是定期發(fā)生。在目前主流的云計(jì)算模式下,用戶必須預(yù)先獲取其工作負(fù)載所需要的計(jì)算資源的量,這種做法通常會(huì)帶來(lái)巨大的浪費(fèi)。而這些浪費(fèi)的計(jì)算資源則增加了成本支出,以及能源的耗費(fèi)。
四、Serverless是云計(jì)算的未來(lái)
Serverless是為了解決云計(jì)算資源分配的問(wèn)題而產(chǎn)生的。通過(guò)增加資源分配的自動(dòng)化功能,Serverless使用戶不再需要預(yù)先確認(rèn)和分配其工作負(fù)載所需要的計(jì)算資源。作為一個(gè)開(kāi)源的示例,Knative就是在Kubernetes云平臺(tái)之上增加了自動(dòng)化擴(kuò)展,根據(jù)實(shí)際服務(wù)的需要自由擴(kuò)縮計(jì)算資源。一方面隨著請(qǐng)求的不斷到來(lái),Knative會(huì)相應(yīng)增加分配的計(jì)算資源,并且支持無(wú)限擴(kuò)展Pods節(jié)點(diǎn),另一方面當(dāng)請(qǐng)求量逐步降低時(shí),Knative會(huì)相應(yīng)縮小計(jì)算資源的規(guī)模(無(wú)請(qǐng)求時(shí)則0個(gè)Pods)
由此,Knative通過(guò)確定何時(shí)何地需要那些計(jì)算資源,解決了為用戶預(yù)先分配資源的問(wèn)題。唯一要做的就是在Knative增強(qiáng)的Kubernetes集群上部署一個(gè)服務(wù),當(dāng)然服務(wù)本身并不占用額外的計(jì)算資源,以后便可以隨時(shí)隨地的響應(yīng)計(jì)算資源的請(qǐng)求。正如Knative所展示的,Serverless模型將每個(gè)服務(wù)都定義為一個(gè)事件,Knative本身也做了一些功能增強(qiáng),以便能更好的控制事件的生產(chǎn)和消費(fèi)。這也能確保每個(gè)服務(wù)在任何時(shí)候都能獨(dú)立的進(jìn)行擴(kuò)展控制,只需要有必要數(shù)量的服務(wù)實(shí)例在云上運(yùn)行。
Knative通過(guò)不斷的將每個(gè)服務(wù)所預(yù)留的云資源與實(shí)際使用的量相適應(yīng)來(lái)提高云的效率。Knative成為改進(jìn)Kubernetes的一種方式—涵蓋了很多相同功能的同時(shí)為用戶增加了簡(jiǎn)化和自動(dòng)化,從而實(shí)現(xiàn)了更高的云效率。因此,你應(yīng)該盡可能去使用Knative而不是直接使用底層Kubernetes。
五、管理成本
Serverless主要承諾之一就是通過(guò)有效分配和使用云資源與服務(wù)來(lái)節(jié)省成本。目前在云上運(yùn)行的工作負(fù)載大都需要對(duì)云資源進(jìn)行預(yù)先分配。但鑒于確切的資源消耗難以預(yù)測(cè)和知曉,用戶往往都進(jìn)行了過(guò)度分配,因此也支付了過(guò)多的費(fèi)用。
此外,大多數(shù)的云計(jì)算服務(wù)的資源需求也并不是恒定的。恰恰相反,一個(gè)典型的服務(wù)的需求會(huì)隨著每天不同時(shí)間,每周不同日期,一年中不同季節(jié),假期以及當(dāng)?shù)鼗蛉蛲话l(fā)事件而波動(dòng)。多數(shù)情況下,試圖預(yù)測(cè)實(shí)際需求都是一項(xiàng)不可能完成的任務(wù),所以用戶都會(huì)在預(yù)期的峰值之上配置和預(yù)留冗余的云資源,以確保能夠平穩(wěn)處理峰值。這些都意味著大多數(shù)時(shí)候?yàn)榉?wù)提供的云資源比實(shí)際需要的要高很多。即使用戶通過(guò)充分分析峰值后選擇一個(gè)較低的冗余數(shù)量,而實(shí)際的需求也可能會(huì)更低,這就造成了成本的浪費(fèi)?;蛘咭部梢赃x擇一個(gè)不足的數(shù)量,這將可能會(huì)導(dǎo)致收入的損失。通過(guò)實(shí)時(shí)自動(dòng)配置資源以適應(yīng)需求,Serverless有效避免了浪費(fèi)和損失。
Serverless解決了云用戶在部署服務(wù)時(shí)需要保留計(jì)算資源的問(wèn)題。通過(guò)Serverless部署的服務(wù)只有在事件(服務(wù)請(qǐng)求)需要處理時(shí)才會(huì)被激活,為云用戶節(jié)約了成本。伴隨更多事件的出現(xiàn),相應(yīng)的云服務(wù)就會(huì)通過(guò)擴(kuò)展來(lái)滿足需要,而當(dāng)需求減少時(shí)服務(wù)便可以縮減直至為零,最佳的情況就是一個(gè)服務(wù)只需要消耗它處理收到需求所必要的資源,不多也不少。
云服務(wù)商在提供Serverless服務(wù)時(shí)也可以節(jié)約成本。在沒(méi)有Serverless的時(shí)候,用戶購(gòu)買了預(yù)先配置的計(jì)算資源,所有的這些資源都在某處的虛擬機(jī)上進(jìn)行本地化部署。云服務(wù)商必須確保當(dāng)服務(wù)達(dá)到峰值時(shí),為該服務(wù)提供資源的虛擬機(jī)要有足夠的本地資源提供擴(kuò)展空間。而有了Serverless后,隨著服務(wù)需求的增長(zhǎng),云服務(wù)商只要確保云上有足夠的資源來(lái)服務(wù)該事件既可。
以Knative為例,如果一個(gè)事件到達(dá)某個(gè)特定的Kubernetes集群,Knative可以在集群的任何地方為該事件尋找資源,而不必局限于一個(gè)特定的工作節(jié)點(diǎn)。如果整個(gè)Kubernetes集群的資源都被完全使用,云服務(wù)商可以將事件路由到其他集群,這些通過(guò)Istio將網(wǎng)絡(luò)抽象,同時(shí)使用Kubernetes的聯(lián)合模型非常容易實(shí)現(xiàn)。隨意使用任意地方的計(jì)算資源為事件服務(wù)解決了對(duì)本地資源預(yù)分配的問(wèn)題,也大幅提高了云效率??偟膩?lái)說(shuō),Serverless為云服務(wù)商和用戶都帶來(lái)了顯著的成本降低。
六、環(huán)境
正如我們之前所討論的,Serverless提高了云服務(wù)的效率。通過(guò)解決只能在節(jié)點(diǎn)層面上對(duì)資源進(jìn)行本地的預(yù)配置問(wèn)題,Serverless可以使用任何地方的云資源來(lái)服務(wù)請(qǐng)求。整體上看整個(gè)云端只需要更少的計(jì)算資源來(lái)服務(wù)同一云服務(wù)。更重要的是每個(gè)工作負(fù)載所耗費(fèi)的資源會(huì)隨之減少。例如一個(gè)縮減到零的工作負(fù)載比它持續(xù)運(yùn)行所耗費(fèi)的資源要少,同樣必要的能源消耗的數(shù)量也會(huì)隨之減少。所以Serverless可以帶來(lái)額外的能源節(jié)約,隨著越來(lái)越多的服務(wù)轉(zhuǎn)向Serverless計(jì)算模式,云供應(yīng)商就可以在數(shù)據(jù)中心的任務(wù)地方提供服務(wù),未來(lái)甚至數(shù)據(jù)中心可以在容量滿足需求的情況下暫停部分工作節(jié)點(diǎn)和物理機(jī)。由于能源消耗是云服務(wù)商首要成本之一,這樣就可以節(jié)省很多的成本支出。
這種節(jié)約不僅使云的效率更高,也使云更環(huán)保。隨著越來(lái)越多的工作負(fù)載轉(zhuǎn)移到云上,節(jié)省的費(fèi)用將非??捎^。另外氣候變化的問(wèn)題不是單靠行為上改變就能應(yīng)對(duì)的,而是要通過(guò)更有效的利用我們所擁有的能源,進(jìn)一步減少能源的消耗。通過(guò)Serverless這些就可以在對(duì)當(dāng)前應(yīng)用沒(méi)有任何影響的情況下實(shí)現(xiàn),事實(shí)也是如此。當(dāng)然并不是所有的工作負(fù)載都可以采用Serverless模式的,轉(zhuǎn)向Serverless也是有挑戰(zhàn)性的,這一點(diǎn)我們將在后續(xù)討論。所以,云負(fù)載的Serverless未來(lái)意味著更環(huán)保的環(huán)境。
七、其他用例
最初Serverless是一種使用范圍狹窄的小眾技術(shù),主要用于功能或服務(wù)的工作負(fù)載。近來(lái)隨著其使用范圍的大幅擴(kuò)展,幾乎可以滿足任何類型的工作負(fù)載要求。例如批處理或交易的處理就天然適合Serverless架構(gòu),因?yàn)樗鼈兌际菫閷?shí)現(xiàn)一個(gè)結(jié)果而執(zhí)行的工作負(fù)載類型,當(dāng)然為了保證批處理和事務(wù)處理的完整性,事件調(diào)度和失敗重試協(xié)議也是很有必要的。
1、數(shù)據(jù)和人工智能
數(shù)據(jù)和人工智能也是一個(gè)成熟的Serverless使用領(lǐng)域。典型的用例就是在大型數(shù)據(jù)集上運(yùn)行機(jī)器學(xué)習(xí)(ML)算法,以及完善算法和功能,并重新運(yùn)行的能力。一些項(xiàng)目如Kubeflow圍繞Knative打包了必要的庫(kù)和功能,便于這些用例的執(zhí)行。我們還可能會(huì)通過(guò)不同的交互模式擴(kuò)展當(dāng)前的Serverless解決方案,使數(shù)據(jù)和人工智能用例更加自然,如允許fire-and-forget類型調(diào)用。此外,添加對(duì)提供的端點(diǎn)進(jìn)行回調(diào),以獲得結(jié)果的功能也可能會(huì)非常有幫助。
2、量子計(jì)算
最后Serverless架構(gòu)未來(lái)的一個(gè)非常重要的應(yīng)用就是幫助量子計(jì)算機(jī)成為主流。量子計(jì)算機(jī)性能全面超越經(jīng)典計(jì)算機(jī),且具有其所不具備的優(yōu)勢(shì),然而它的使用卻需要專門的硬件和機(jī)柜,并且量子計(jì)算機(jī)編程限制也是一個(gè)重要因素。量子計(jì)算機(jī)令人望而卻步的財(cái)務(wù)成本及其冷卻系統(tǒng)相關(guān)的能源成本,使得能提供成本和能源優(yōu)化的Serverless成為天然候選者。通過(guò)量子Serverless模型,如《超導(dǎo)量子計(jì)算的未來(lái)》中所述,我們可以通過(guò)訪問(wèn)事件驅(qū)動(dòng)和經(jīng)典的Serverless相關(guān)的工作負(fù)載來(lái)減少直接使用量子計(jì)算機(jī)的復(fù)雜性。IBM量子團(tuán)隊(duì)正在將量子Serverless作為他們未來(lái)2-5年戰(zhàn)略的基石。
八、總結(jié)
在這篇博文中,我們解釋了為什么Serverless成為所有云計(jì)算工作負(fù)載的未來(lái)方向。我們認(rèn)為未來(lái)這種Serverless優(yōu)先的模式對(duì)云用戶和服務(wù)商都帶來(lái)各種潛在的好處。這種好處不僅僅體現(xiàn)在各方面成本的節(jié)約,更重要的是還包括能源效率,從而帶來(lái)更環(huán)保的云和更有環(huán)境意識(shí)的計(jì)算。最后我們還提供了Serverless優(yōu)先的云的一些用例,如數(shù)據(jù)和人工智能以及量子計(jì)算。
原文鏈接:https://developer.ibm.com/blogs/the-future-is-serverless/
譯者介紹
胥磊,51CTO社區(qū)編輯,某頭部電商技術(shù)副總監(jiān),關(guān)注Java后端開(kāi)發(fā),技術(shù)管理,架構(gòu)優(yōu)化,分布式開(kāi)發(fā)等領(lǐng)域。