越來越火的Serverless(無伺服器計算),到底是個啥?

今天這篇文章,我們來聊一個雲計算領域的熱門概念——Serverless。

越來越火的Serverless(無伺服器計算),到底是個啥?

到底什麼是Serverless?

英語好的童鞋,可能一眼就看出來了,Serverless是由Server和less兩個詞根組成的詞。從字面上理解,就是“無伺服器”。

行業通常所說的Serverless,主要是指

“無伺服器計算(Serverless Computing)”

那麼問題來了,這年頭,就連小學生都知道,伺服器是具有很強計算能力的計算機,是我們現在最主要的計算工具。“無伺服器計算”,如果不採用伺服器,那該怎麼算呢?

事實上,Serverless所謂的“無伺服器計算”,並不是真的不需要伺服器,而是說,對於使用者,伺服器變得“不可見”了(或者說“無感知”了)。

越說越玄乎了,有木有?別急,還是讓我從頭開始說起吧——

Serverless的誕生背景

1946年2月,世界上第一臺數字式電子計算機ENIAC誕生,標誌著人類正式進入了數字計算機時代。

早期的計算機都是大型機,體積龐大,價格昂貴,但是,算力卻很弱。當時,這些機器只有很少的公司才能擁有,用於特定的計算目的。

到了1970-80年代,為了解決單點式計算(一臺大型機,獨立完成全部的計算任務)算力不足的問題,專家們發明了

網格計算

這樣的分散式計算架構,取得了不錯的效果。

說白了,分散式計算,就是把一個巨大的計算任務,分解為很多的小型計算任務,交給不同的計算機分工完成,

越來越火的Serverless(無伺服器計算),到底是個啥?

再後來,隨著晶片技術的進步,計算機的體積變得越來越小,算力也變得越來越強勁。不久後,小型化的計算機出現了,也就是我們常說的PC(Personal Computer,個人電腦)。

計算機制造和使用成本的不斷下降,加速自身的普及,也刺激了計算機網路的出現與發展。從區域網到廣域網,再到網際網路,計算機網路的規模變得越來越大。

網際網路的出現,徹底改變了計算機服務使用者的方式。

此前,一個機房服務於一所學校、一家企業、一個政府部門,現在,有了網際網路,服務物件可以是全球使用者,規模大大增加了。

使用者規模增加,意味著對算力的需求也增加了。網際網路服務提供商,需要一種更強大、更便宜的算力,滿足使用者需求。

於是乎,就有了

雲計算

越來越火的Serverless(無伺服器計算),到底是個啥?

很多人認為,雲計算就是一個超大號的機房,和以前的企業機房沒有區別,只不過伺服器更多些。

這種觀點是不對的。

雲計算的本質,不是算力資源的簡單堆砌,而是池化——它將大量的零散算力資源(廉價的算力資源)進行打包、匯聚,實現更高可靠性、更高效能、更低成本的算力。

具體來說,在雲計算中,CPU、GPU、記憶體、硬碟等計算資源被集合起來,透過軟體的方式,組成一個虛擬的可無限擴充套件的“算力資源池”。如果使用者有算力需求,“算力資源池”就會動態地進行算力資源的分配,構建一個虛擬的“計算機”。使用者按需使用、付費,即可。

相比於使用者自購裝置、自建機房、自己運維,雲計算有明顯的成本優勢,可以節約大量資金和人力。

根據提供算力資源的層級不同,雲計算通常也分為IaaS(基礎設施即服務)、PaaS(平臺即服務)、SaaS(軟體即服務)。如下圖所示:

越來越火的Serverless(無伺服器計算),到底是個啥?

那麼,問題又來了——雲計算這種“租”的方式,是不是最終極的算力資源使用方式呢?我們作為使用者,使用算力,還能更簡單一點嗎?

答案是肯定的。

不管是自建機房,還是雲計算,使用者都需要和伺服器打交道,和軟硬體環境打交道。這些都是工具和過程,而我們的最終目的是什麼?是得到運算結果。

越來越火的Serverless(無伺服器計算),到底是個啥?

那麼,為了得到結果,我們是不是一定要關心環境的搭建過程?

不一定。既然環境可以租,那何不更徹底一點,直接“租”服務呢?

舉例來說,如果把計算過程理解為炒菜。以前,我們為了炒菜,需要自己建個廚房,自己買鍋碗瓢盆、油鹽醬醋,自己親自炒菜。後來,有了雲計算,我們可以租個廚房,租工具,然後炒菜。現在,想要更簡單的話,是不是可以直接叫外賣?

再例如,以前,我們上班通勤,是自己買車,自己開車。然後,有了雲計算,相當於租車。現在,是不是可以直接打車?

說白了,我們要的是計算服務和計算結果。計算環境(硬體),我們完全可以不去操心。

越來越火的Serverless(無伺服器計算),到底是個啥?

說到這,我們的主角——

Serverless

,終於閃亮登場了。

對於Serverless,我們可以把它理解為一種架構,一種理念,甚至是一種思想。

Serverless的核心目的,就是在雲計算的基礎上,再向前邁進一步,徹底“包攬”所有的環境工作,直接提供計算服務。

在Serverless架構下,開發者只需編寫程式碼並上傳,雲平臺就會自動準備好相應的計算資源,完成運算並輸出結果,從而大幅簡化開發運維過程。

換句話說,使用者完全不用關心廚房,你把食材提供給Serverless平臺,它負責把菜炒好,就這麼簡單。

█ Serverless的特點

Serverless是雲計算的進一步延伸,所以,它繼承了雲計算的最大特點——按需彈性伸縮、按需付費。

現在的網際網路服務,基本上都是採用

。也就是把一整套服務,拆分為多個細分服務,由不同的伺服器完成運算。

Serverless的特點是,這個服務足夠“細小”,變成了“函式級”的顆粒度。

越來越火的Serverless(無伺服器計算),到底是個啥?

所謂函式,就是提供輸入,計算輸出。

從層級上來看,Serverless在傳統雲計算SaaS的Application(應用)層級之上,又加了一層——function(函式)。它的顆粒度更細,可以更靈活地滿足使用者的算力需求。

越來越火的Serverless(無伺服器計算),到底是個啥?

按照CNCF對Serverless 的定義,Serverless架構是採用FaaS(函式即服務)和BaaS(後端服務)服務來解決問題的一種設計。

FaaS就是Function as a service(函式即服務)。每一個函式都是一個服務,函式可以由任何語言編寫,直接託管在雲平臺,以服務形式執行,透過事件觸發。

BaaS則是Backend as a service(後端即服務)。雲平臺提供的後端元件整合,開發者無需開發和維護後端服務,透過API/SDK的呼叫,便可獲得例如資料儲存、訊息推送、賬號管理等能力。

微服務架構

Serverless的背後,依然是虛擬機器和容器。只不過,伺服器部署、runtime安裝、編譯等工作,都由Serverless計算平臺負責完成了。對開發人員來說,只需要維護原始碼和Serverless執行環境的相關配置即可。這就叫“無伺服器計算”。

Serverless架構的最大優勢,顯然就是幫助使用者徹底擺脫了基礎設施管理這樣的“雜事”,更加專注於業務開發,從而提升了效率,降低了開發和運營成本。

根據業界的統計,在商業和企業資料中心裡的典型伺服器,日常僅僅只提供了5%~15%的平均最大處理能力的輸出。這是一種算力資源的巨大浪費。

Serverless的出現,可以讓使用者按照實際算力使用量進行付費,屬於真正的“精確計費”。

換言之,使用者的每一分錢,都花在了刀刃上。

Serverless = FaaS + BaaS

世界上第一個Serverless平臺,是2006年釋出的Zimki。這個平臺提供服務端JavaScript應用,支援“按照實際呼叫付費”。不過,當時他們並沒有使用Serverless這個名詞。

後來,到了2012年,Iron。io的副總裁Ken Form在文章

“Why The Future of Software and Apps is Serverless”

中,首次提出了Serverless,才宣告這個概念的正式誕生。

2014年11月,亞馬遜率先推出了真正意義上的第一款Serverless FaaS服務——Lambda。從此,各大廠商開始跟進。

2017年,Serverless開始在國內落地。這一年,阿里雲和騰訊雲先後推出了自己的 Serverless平臺。阿里雲的Serverless平臺,被直接命名為函式計算(FC,Function Compute)。

一年後的2018年,阿里雲推出Serverless容器服務ASK和Serverless應用引擎SAE。

那一時期,剛好小程式開始火爆。Serverless的靈活架構,非常適合小程式的開發。於是,吸引了大量的開發者們。

到了2019年,國內廠商紛紛入局Serverless。如今,Serverless已經成了各大雲廠商的標配,受到整個行業的熱捧。

本月初,2022·雲棲大會上,阿里雲智慧總裁張建鋒表示,以云為核心的新型計算體系正在形成,軟體研發正規化正在發生新的變革,Serverless是其中最重要的趨勢之一。

越來越火的Serverless(無伺服器計算),到底是個啥?

他認為,Serverless讓雲計算從一種資源真正變成一種能力,未來雲將全面Serverless化,更加接近“電網”模式,按計算的呼叫次數付費。

目前,阿里雲已經擁有超過20款Serverless產品,包括函式計算FC、Serverless 應用引擎SAE、Serverless容器服務ASK、PolarDB資料庫、AnalyticDB數倉等。其中函式計算日呼叫次數超過200億次,整體規模位居國內首位。

前面小棗君也提到,Serverless並不是沒有伺服器的計算,而是將算力環境和資源進行了“隱藏”,讓使用者不可見,無需操心。事實上,Serverless不僅需要算力資源,而且對算力資源的要求比以往更高。

以阿里云為例。他們之所以能夠做Serverless平臺,就是因為背後有四大核心技術的支撐。這四大核心技術,分別是:神龍計算平臺、袋鼠沙箱容器、盤古儲存平臺和洛神網路平臺。

在算力晶片上,阿里雲今年6月新推出的一款雲資料中心專用處理器 CIPU(Cloud Infrastructure Processing Unit),也非常擅長對資料中心的計算、網路和儲存資源進行管理和加速,幫助進一步提升Serverless平臺的效能。

Serverless的發展歷程

接下來,我們不妨通過幾個案例,詳細看看阿里雲Serverless平臺究竟是如何提升算力效率的。

阿里巴巴每年的雙11促銷,是行業公認的算力極限挑戰。海量使用者、高併發,對系統的處理能力有著極高的要求。

2020 年天貓雙 11,阿里雲實現了國內首例Serverless在核心業務場景下的大規模落地,扛住了全球最大規模的流量洪峰,創造了Serverless落地應用的里程碑。

今年天貓雙 11,阿里雲Serverless支撐業務場景更多,範圍更廣。阿里雲函式計算(FC)與集團內的運維體系全面實現標準化對接,打通了研發的最後一公里,首次實現了業務全鏈路“FaaS+BaaS”的Serverless體系化研發,覆蓋淘特、淘系、阿里媽媽、1688、高德、飛豬等業務場景。

根據資料統計,支撐場景數量同比增加2倍,峰值流量總數同比增加3倍,實現了百萬QPS的突破,人效提升40%。

越來越火的Serverless(無伺服器計算),到底是個啥?

再來看看外部使用者。

網易雲音樂,是阿里雲Serverless產品的重要客戶之一。

他們的產品背後,有非常多的演算法服務支撐,比如多種位元速率的音訊轉碼、聽歌識曲中應用的音訊指紋生成和識別、副歌檢測、小語種音譯歌詞等等。

這些任務的資源需求和執行時間變化很大,需要使用C++、Python等多種語言實現,對算力的彈性要求非常大。

早期的時候,網易自建了一個演算法服務平臺,進行應對。但隨著業務增長,以及演算法複雜度的不斷增加,基礎設施管理的負擔越來越大,嚴重影響了工作效率。

引入阿里雲Serverless平臺之後,網易的演算法計算需求得到了很好的滿足。網易在函式計算上高峰期一天處理超過2000萬個任務,演算法應用到業務10倍速的提升,稀疏呼叫的演算法成本大幅縮減。

同樣的效率提升,還發生在南瓜電影、越光醫療、世紀華聯、江娛互動等企業身上。他們都是阿里雲Serverless平臺的使用者。

越來越火的Serverless(無伺服器計算),到底是個啥?

2021年3月,阿里雲函式計算憑藉在產品能力、安全性、戰略願景和市場規模等方面的優勢脫穎而出,在19個評估專案中,拿到了8項滿分和12項最高分,進入了FaaS領導者象限(綜合產品能力位列全球第一,戰略願景全球第二)。這是首次有中國雲廠商進入Forrester FaaS領導者象限。

Serverless的落地案例

隨著數字經濟浪潮的蓬勃發展,以及各行各業數字化轉型的不斷推進,算力的價值正在持續提升。

在單純提升晶片算力方面,我們面臨越來越大的挑戰(摩爾定律逐漸失效)。在這種情況下,我們必須更多地考慮,該如何提升算力的使用效率。

作為一種靈活輕量化的新型算力架構,Serverless毫無疑問是我們挖掘算力潛力、提升算力效率的一個重要手段。

客觀來說,目前的Serverless談不上完美。在實時性等方面,還存在一些不足。小棗君相信,隨著時間的推移,這些問題最終都會得到解決。

Serverless,將引領我們全面走向算力新時代。