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

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

到底什麼是Serverless?

到底什麼是Serverless?

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

行業通常所說的Serverless,主要是指「無伺服器計算(Serverless Computing)」

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

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

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

█Serverless的誕生背景

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

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

到了1970-80年代,為了解決單點式計算(一臺大型機,獨立完成全部的計算任務)算力不足的問題,專家們發明了網格計算這樣的分散式運算架構,取得了不錯的效果。

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

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

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

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

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

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

於是乎,就有了雲端運算

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

這種觀點是不對的。

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

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

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

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

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

答案是肯定的。

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

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

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

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

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

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

說到這,我們的主角——

說到這,我們的主角——Serverless,終於閃亮登場了。

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

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

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

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

█Serverless的特點

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

現在的網際網路服務,基本上都是採用微服務架構。也就是把一整套服務,拆分為多個細分服務,由不同的伺服器完成運算。

Serverless的特點是,這個服務足夠「細小」,變成了「函數級」的顆粒度。

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

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

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

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

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

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

Serverless = FaaS + BaaS

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

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

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

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

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

█Serverless的發展歷程

世界上第一個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化,更加接近「電網」模式,按計算的調用次數付費。

目前,阿里雲已經擁有超過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產品的重要客戶之一。

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

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

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

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

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

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

█結語

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

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

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

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

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

相關文章

什麼是 「無伺服器計算」 ?

什麼是 「無伺服器計算」 ?

今天這篇文章,我們來聊一個雲端運算領域的熱門概念——Serverless。 到底什麼是Serverless? 英語好的童鞋,可能一眼就看出來...

算力網路,到底是如何工作的?

算力網路,到底是如何工作的?

大家好,我是小棗君。 前幾期文章,我給大家詳細介紹了一下算力和算力網路的本質。今天,是算力系列的最後一期,我們詳細看看算力網路的組網架構和技...

AIGC改變世界?拉斯維加斯給出答案

AIGC改變世界?拉斯維加斯給出答案

夢晨 發自 凹非寺 最早關注到AI繪畫是在去年6月。 當時有人突然發現,在提示詞中加上「虛幻引擎」就能讓畫質飆升,簡直像咒語一樣。 但受限於...

「小靈通」的風雨往事

「小靈通」的風雨往事

最近,有一部叫做《狂飆》的國產電視劇火遍全網,相信大家都看到了。 在劇中,出現了一個通訊名詞,不知道在座各位有沒有關注到。 沒錯,這個名詞,...