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