原標(biāo)題:越來(lái)越火的Serverless(無(wú)服務(wù)器計(jì)算),到底是個(gè)啥?
今天這篇文章,我們來(lái)聊一個(gè)云計(jì)算領(lǐng)域的熱門(mén)概念——Serverless。
英語(yǔ)好的童鞋,可能一眼就看出來(lái)了,Serverless是由Server和less兩個(gè)詞根組成的詞。從字面上理解,就是“無(wú)服務(wù)器”。
行業(yè)通常所說(shuō)的Serverless,主要是指“無(wú)服務(wù)器計(jì)算(Serverless Computing)”。
那么問(wèn)題來(lái)了,這年頭,就連小學(xué)生都知道,服務(wù)器是具有很強(qiáng)計(jì)算能力的計(jì)算機(jī),是我們現(xiàn)在最主要的計(jì)算工具。“無(wú)服務(wù)器計(jì)算”,如果不采用服務(wù)器,那該怎么算呢?
事實(shí)上,Serverless所謂的“無(wú)服務(wù)器計(jì)算”,并不是真的不需要服務(wù)器,而是說(shuō),對(duì)于用戶(hù),服務(wù)器變得“不可見(jiàn)”了(或者說(shuō)“無(wú)感知”了)。
越說(shuō)越玄乎了,有木有?別急,還是讓我從頭開(kāi)始說(shuō)起吧——
1946年2月,世界上第一臺(tái)數(shù)字式電子計(jì)算機(jī)ENIAC誕生,標(biāo)志著人類(lèi)正式進(jìn)入了數(shù)字計(jì)算機(jī)時(shí)代。
早期的計(jì)算機(jī)都是大型機(jī),體積龐大,價(jià)格昂貴,但是,算力卻很弱。當(dāng)時(shí),這些機(jī)器只有很少的公司才能擁有,用于特定的計(jì)算目的。
到了1970-80年代,為了解決單點(diǎn)式計(jì)算(一臺(tái)大型機(jī),獨(dú)立完成全部的計(jì)算任務(wù))算力不足的問(wèn)題,專(zhuān)家們發(fā)明了網(wǎng)格計(jì)算這樣的分布式計(jì)算架構(gòu),取得了不錯(cuò)的效果。
說(shuō)白了,分布式計(jì)算,就是把一個(gè)巨大的計(jì)算任務(wù),分解為很多的小型計(jì)算任務(wù),交給不同的計(jì)算機(jī)分工完成,
再后來(lái),隨著芯片技術(shù)的進(jìn)步,計(jì)算機(jī)的體積變得越來(lái)越小,算力也變得越來(lái)越強(qiáng)勁。不久后,小型化的計(jì)算機(jī)出現(xiàn)了,也就是我們常說(shuō)的PC(Personal Computer,個(gè)人電腦)。
計(jì)算機(jī)制造和使用成本的不斷下降,加速自身的普及,也刺激了計(jì)算機(jī)網(wǎng)絡(luò)的出現(xiàn)與發(fā)展。從局域網(wǎng)到廣域網(wǎng),再到互聯(lián)網(wǎng),計(jì)算機(jī)網(wǎng)絡(luò)的規(guī)模變得越來(lái)越大。
互聯(lián)網(wǎng)的出現(xiàn),徹底改變了計(jì)算機(jī)服務(wù)用戶(hù)的方式。
此前,一個(gè)機(jī)房服務(wù)于一所學(xué)校、一家企業(yè)、一個(gè)政府部門(mén),現(xiàn)在,有了互聯(lián)網(wǎng),服務(wù)對(duì)象可以是全球用戶(hù),規(guī)模大大增加了。
用戶(hù)規(guī)模增加,意味著對(duì)算力的需求也增加了?;ヂ?lián)網(wǎng)服務(wù)提供商,需要一種更強(qiáng)大、更便宜的算力,滿足用戶(hù)需求。
很多人認(rèn)為,云計(jì)算就是一個(gè)超大號(hào)的機(jī)房,和以前的企業(yè)機(jī)房沒(méi)有區(qū)別,只不過(guò)服務(wù)器更多些。
云計(jì)算的本質(zhì),不是算力資源的簡(jiǎn)單堆砌,而是池化——它將大量的零散算力資源(廉價(jià)的算力資源)進(jìn)行打包、匯聚,實(shí)現(xiàn)更高可靠性、更高性能、更低成本的算力。
具體來(lái)說(shuō),在云計(jì)算中,CPU、GPU、內(nèi)存、硬盤(pán)等計(jì)算資源被集合起來(lái),通過(guò)軟件的方式,組成一個(gè)虛擬的可無(wú)限擴(kuò)展的“算力資源池”。如果用戶(hù)有算力需求,“算力資源池”就會(huì)動(dòng)態(tài)地進(jìn)行算力資源的分配,構(gòu)建一個(gè)虛擬的“計(jì)算機(jī)”。用戶(hù)按需使用、付費(fèi),即可。
相比于用戶(hù)自購(gòu)設(shè)備、自建機(jī)房、自己運(yùn)維,云計(jì)算有明顯的成本優(yōu)勢(shì),可以節(jié)約大量資金和人力。
根據(jù)提供算力資源的層級(jí)不同,云計(jì)算通常也分為IaaS(基礎(chǔ)設(shè)施即服務(wù))、PaaS(平臺(tái)即服務(wù))、SaaS(軟件即服務(wù))。如下圖所示:
那么,問(wèn)題又來(lái)了——云計(jì)算這種“租”的方式,是不是最終極的算力資源使用方式呢?我們作為用戶(hù),使用算力,還能更簡(jiǎn)單一點(diǎn)嗎?
不管是自建機(jī)房,還是云計(jì)算,用戶(hù)都需要和服務(wù)器打交道,和軟硬件環(huán)境打交道。這些都是工具和過(guò)程,而我們的最終目的是什么?是得到運(yùn)算結(jié)果。
那么,為了得到結(jié)果,我們是不是一定要關(guān)心環(huán)境的搭建過(guò)程?
不一定。既然環(huán)境可以租,那何不更徹底一點(diǎn),直接“租”服務(wù)呢?
舉例來(lái)說(shuō),如果把計(jì)算過(guò)程理解為炒菜。以前,我們?yōu)榱顺床?,需要自己建個(gè)廚房,自己買(mǎi)鍋碗瓢盆、油鹽醬醋,自己親自炒菜。后來(lái),有了云計(jì)算,我們可以租個(gè)廚房,租工具,然后炒菜?,F(xiàn)在,想要更簡(jiǎn)單的話,是不是可以直接叫外賣(mài)?
再例如,以前,我們上班通勤,是自己買(mǎi)車(chē),自己開(kāi)車(chē)。然后,有了云計(jì)算,相當(dāng)于租車(chē)?,F(xiàn)在,是不是可以直接打車(chē)?
說(shuō)白了,我們要的是計(jì)算服務(wù)和計(jì)算結(jié)果。計(jì)算環(huán)境(硬件),我們完全可以不去操心。
說(shuō)到這,我們的主角——Serverless,終于閃亮登場(chǎng)了。
對(duì)于Serverless,我們可以把它理解為一種架構(gòu),一種理念,甚至是一種思想。
Serverless的核心目的,就是在云計(jì)算的基礎(chǔ)上,再向前邁進(jìn)一步,徹底“包攬”所有的環(huán)境工作,直接提供計(jì)算服務(wù)。
在Serverless架構(gòu)下,開(kāi)發(fā)者只需編寫(xiě)代碼并上傳,云平臺(tái)就會(huì)自動(dòng)準(zhǔn)備好相應(yīng)的計(jì)算資源,完成運(yùn)算并輸出結(jié)果,從而大幅簡(jiǎn)化開(kāi)發(fā)運(yùn)維過(guò)程。
換句話說(shuō),用戶(hù)完全不用關(guān)心廚房,你把食材提供給Serverless平臺(tái),它負(fù)責(zé)把菜炒好,就這么簡(jiǎn)單。
Serverless是云計(jì)算的進(jìn)一步延伸,所以,它繼承了云計(jì)算的最大特點(diǎn)——按需彈性伸縮、按需付費(fèi)。
現(xiàn)在的互聯(lián)網(wǎng)服務(wù),基本上都是采用微服務(wù)架構(gòu)。也就是把一整套服務(wù),拆分為多個(gè)細(xì)分服務(wù),由不同的服務(wù)器完成運(yùn)算。
Serverless的特點(diǎn)是,這個(gè)服務(wù)足夠“細(xì)小”,變成了“函數(shù)級(jí)”的顆粒度。
所謂函數(shù),就是提供輸入,計(jì)算輸出。
從層級(jí)上來(lái)看,Serverless在傳統(tǒng)云計(jì)算SaaS的Application(應(yīng)用)層級(jí)之上,又加了一層——function(函數(shù))。它的顆粒度更細(xì),可以更靈活地滿足用戶(hù)的算力需求。
按照CNCF對(duì)Serverless 的定義,Serverless架構(gòu)是采用FaaS(函數(shù)即服務(wù))和BaaS(后端服務(wù))服務(wù)來(lái)解決問(wèn)題的一種設(shè)計(jì)。
FaaS就是Function as a service(函數(shù)即服務(wù))。每一個(gè)函數(shù)都是一個(gè)服務(wù),函數(shù)可以由任何語(yǔ)言編寫(xiě),直接托管在云平臺(tái),以服務(wù)形式運(yùn)行,通過(guò)事件觸發(fā)。
BaaS則是Backend as a service(后端即服務(wù))。云平臺(tái)提供的后端組件整合,開(kāi)發(fā)者無(wú)需開(kāi)發(fā)和維護(hù)后端服務(wù),通過(guò)API/SDK的調(diào)用,便可獲得例如數(shù)據(jù)存儲(chǔ)、消息推送、賬號(hào)管理等能力。
Serverless的背后,依然是虛擬機(jī)和容器。只不過(guò),服務(wù)器部署、runtime安裝、編譯等工作,都由Serverless計(jì)算平臺(tái)負(fù)責(zé)完成了。對(duì)開(kāi)發(fā)人員來(lái)說(shuō),只需要維護(hù)源代碼和Serverless執(zhí)行環(huán)境的相關(guān)配置即可。這就叫“無(wú)服務(wù)器計(jì)算”。
Serverless架構(gòu)的最大優(yōu)勢(shì),顯然就是幫助用戶(hù)徹底擺脫了基礎(chǔ)設(shè)施管理這樣的“雜事”,更加專(zhuān)注于業(yè)務(wù)開(kāi)發(fā),從而提升了效率,降低了開(kāi)發(fā)和運(yùn)營(yíng)成本。
根據(jù)業(yè)界的統(tǒng)計(jì),在商業(yè)和企業(yè)數(shù)據(jù)中心里的典型服務(wù)器,日常僅僅只提供了5%~15%的平均最大處理能力的輸出。這是一種算力資源的巨大浪費(fèi)。
Serverless的出現(xiàn),可以讓用戶(hù)按照實(shí)際算力使用量進(jìn)行付費(fèi),屬于真正的“精確計(jì)費(fèi)”。
換言之,用戶(hù)的每一分錢(qián),都花在了刀刃上。
世界上第一個(gè)Serverless平臺(tái),是2006年發(fā)布的Zimki。這個(gè)平臺(tái)提供服務(wù)端JavaScript應(yīng)用,支持“按照實(shí)際調(diào)用付費(fèi)”。不過(guò),當(dāng)時(shí)他們并沒(méi)有使用Serverless這個(gè)名詞。
后來(lái),到了2012年,Iron.io的副總裁Ken Form在文章“Why The Future of Software and Apps is Serverless”中,首次提出了Serverless,才宣告這個(gè)概念的正式誕生。
2014年11月,亞馬遜率先推出了真正意義上的第一款Serverless FaaS服務(wù)——Lambda。從此,各大廠商開(kāi)始跟進(jìn)。
2017年,Serverless開(kāi)始在國(guó)內(nèi)落地。這一年,阿里云和騰訊云先后推出了自己的 Serverless平臺(tái)。阿里云的Serverless平臺(tái),被直接命名為函數(shù)計(jì)算(FC,F(xiàn)unction Compute)。
一年后的2018年,阿里云推出Serverless容器服務(wù)ASK和Serverless應(yīng)用引擎SAE。
那一時(shí)期,剛好小程序開(kāi)始火爆。Serverless的靈活架構(gòu),非常適合小程序的開(kāi)發(fā)。于是,吸引了大量的開(kāi)發(fā)者們。
到了2019年,國(guó)內(nèi)廠商紛紛入局Serverless。如今,Serverless已經(jīng)成了各大云廠商的標(biāo)配,受到整個(gè)行業(yè)的熱捧。
本月初,2022·云棲大會(huì)上,阿里云智能總裁張建鋒表示,以云為核心的新型計(jì)算體系正在形成,軟件研發(fā)范式正在發(fā)生新的變革,Serverless是其中最重要的趨勢(shì)之一。
他認(rèn)為,Serverless讓云計(jì)算從一種資源真正變成一種能力,未來(lái)云將全面Serverless化,更加接近“電網(wǎng)”模式,按計(jì)算的調(diào)用次數(shù)付費(fèi)。
目前,阿里云已經(jīng)擁有超過(guò)20款Serverless產(chǎn)品,包括函數(shù)計(jì)算FC、Serverless 應(yīng)用引擎SAE、Serverless容器服務(wù)ASK、PolarDB數(shù)據(jù)庫(kù)、AnalyticDB數(shù)倉(cāng)等。其中函數(shù)計(jì)算日調(diào)用次數(shù)超過(guò)200億次,整體規(guī)模位居國(guó)內(nèi)首位。
前面小棗君也提到,Serverless并不是沒(méi)有服務(wù)器的計(jì)算,而是將算力環(huán)境和資源進(jìn)行了“隱藏”,讓用戶(hù)不可見(jiàn),無(wú)需操心。事實(shí)上,Serverless不僅需要算力資源,而且對(duì)算力資源的要求比以往更高。
以阿里云為例。他們之所以能夠做Serverless平臺(tái),就是因?yàn)楸澈笥兴拇蠛诵募夹g(shù)的支撐。這四大核心技術(shù),分別是:神龍計(jì)算平臺(tái)、袋鼠沙箱容器、盤(pán)古存儲(chǔ)平臺(tái)和洛神網(wǎng)絡(luò)平臺(tái)。
在算力芯片上,阿里云今年6月新推出的一款云數(shù)據(jù)中心專(zhuān)用處理器 CIPU(Cloud Infrastructure Processing Unit),也非常擅長(zhǎng)對(duì)數(shù)據(jù)中心的計(jì)算、網(wǎng)絡(luò)和存儲(chǔ)資源進(jìn)行管理和加速,幫助進(jìn)一步提升Serverless平臺(tái)的性能。
接下來(lái),我們不妨通過(guò)幾個(gè)案例,詳細(xì)看看阿里云Serverless平臺(tái)究竟是如何提升算力效率的。
阿里巴巴每年的雙11促銷(xiāo),是行業(yè)公認(rèn)的算力極限挑戰(zhàn)。海量用戶(hù)、高并發(fā),對(duì)系統(tǒng)的處理能力有著極高的要求。
2020 年天貓雙 11,阿里云實(shí)現(xiàn)了國(guó)內(nèi)首例Serverless在核心業(yè)務(wù)場(chǎng)景下的大規(guī)模落地,扛住了全球最大規(guī)模的流量洪峰,創(chuàng)造了Serverless落地應(yīng)用的里程碑。
今年天貓雙 11,阿里云Serverless支撐業(yè)務(wù)場(chǎng)景更多,范圍更廣。阿里云函數(shù)計(jì)算(FC)與集團(tuán)內(nèi)的運(yùn)維體系全面實(shí)現(xiàn)標(biāo)準(zhǔn)化對(duì)接,打通了研發(fā)的最后一公里,首次實(shí)現(xiàn)了業(yè)務(wù)全鏈路“FaaS+BaaS”的Serverless體系化研發(fā),覆蓋淘特、淘系、阿里媽媽、1688、高德、飛豬等業(yè)務(wù)場(chǎng)景。
根據(jù)數(shù)據(jù)統(tǒng)計(jì),支撐場(chǎng)景數(shù)量同比增加2倍,峰值流量總數(shù)同比增加3倍,實(shí)現(xiàn)了百萬(wàn)QPS的突破,人效提升40%。
網(wǎng)易云音樂(lè),是阿里云Serverless產(chǎn)品的重要客戶(hù)之一。
他們的產(chǎn)品背后,有非常多的算法服務(wù)支撐,比如多種碼率的音頻轉(zhuǎn)碼、聽(tīng)歌識(shí)曲中應(yīng)用的音頻指紋生成和識(shí)別、副歌檢測(cè)、小語(yǔ)種音譯歌詞等等。
這些任務(wù)的資源需求和執(zhí)行時(shí)間變化很大,需要使用C++、Python等多種語(yǔ)言實(shí)現(xiàn),對(duì)算力的彈性要求非常大。
早期的時(shí)候,網(wǎng)易自建了一個(gè)算法服務(wù)平臺(tái),進(jìn)行應(yīng)對(duì)。但隨著業(yè)務(wù)增長(zhǎng),以及算法復(fù)雜度的不斷增加,基礎(chǔ)設(shè)施管理的負(fù)擔(dān)越來(lái)越大,嚴(yán)重影響了工作效率。
引入阿里云Serverless平臺(tái)之后,網(wǎng)易的算法計(jì)算需求得到了很好的滿足。網(wǎng)易在函數(shù)計(jì)算上高峰期一天處理超過(guò)2000萬(wàn)個(gè)任務(wù),算法應(yīng)用到業(yè)務(wù)10倍速的提升,稀疏調(diào)用的算法成本大幅縮減。
同樣的效率提升,還發(fā)生在南瓜電影、越光醫(yī)療、世紀(jì)華聯(lián)、江娛互動(dòng)等企業(yè)身上。他們都是阿里云Serverless平臺(tái)的用戶(hù)。
2021年3月,阿里云函數(shù)計(jì)算憑借在產(chǎn)品能力、安全性、戰(zhàn)略愿景和市場(chǎng)規(guī)模等方面的優(yōu)勢(shì)脫穎而出,在19個(gè)評(píng)估項(xiàng)目中,拿到了8項(xiàng)滿分和12項(xiàng)最高分,進(jìn)入了FaaS領(lǐng)導(dǎo)者象限(綜合產(chǎn)品能力位列全球第一,戰(zhàn)略愿景全球第二)。這是首次有中國(guó)云廠商進(jìn)入Forrester FaaS領(lǐng)導(dǎo)者象限。
在單純提升芯片算力方面,我們面臨越來(lái)越大的挑戰(zhàn)(摩爾定律逐漸失效)。在這種情況下,我們必須更多地考慮,該如何提升算力的使用效率。
作為一種靈活輕量化的新型算力架構(gòu),Serverless毫無(wú)疑問(wèn)是我們挖掘算力潛力、提升算力效率的一個(gè)重要手段。
客觀來(lái)說(shuō),目前的Serverless談不上完美。在實(shí)時(shí)性等方面,還存在一些不足。小棗君相信,隨著時(shí)間的推移,這些問(wèn)題最終都會(huì)得到解決。
Serverless,將引領(lǐng)我們?nèi)孀呦蛩懔π聲r(shí)代。