Serverless的出現(xiàn)標(biāo)志著云計算將從“資源時代”過渡到“功能時代“,企業(yè)將逐步擺脫底層運(yùn)維的管理負(fù)擔(dān),大幅降低云的使用門檻,給云服務(wù)行業(yè)帶來質(zhì)變。
云計算行業(yè)的競爭維度已悄然變化,從資源價格戰(zhàn)轉(zhuǎn)為對服務(wù)能力的比拼。
AWS Lambda
在Serverless1.0場景的優(yōu)勢
業(yè)界對Serverless尚無明確定義,當(dāng)提到 Serverless 大家腦中立刻就會聯(lián)想到 AWS 的 Lambda 服務(wù)。
狹義上 Serverless 的確指 Lambda 這類無需預(yù)置環(huán)境或管理服務(wù)器即可運(yùn)行函數(shù)代碼的服務(wù)。核心是幫助應(yīng)用開發(fā)者擺脫服務(wù)器等底層基礎(chǔ)設(shè)施管理的負(fù)擔(dān),專注于業(yè)務(wù)層的創(chuàng)新。
AWS Lambda已經(jīng)滿打滿算運(yùn)營了4年,其他廠商才剛剛開始。
能否從業(yè)務(wù)中抽象出共性功能直接提供給客戶,幫助其產(chǎn)品快速投入市場,是云廠商競爭的關(guān)鍵。

通過AWS的Lambda案例可以看出,現(xiàn)實(shí)的Serverless1.0場景基本都是云端的大量的程序片斷場景,例如識別一張圖片、對一段音頻/視頻進(jìn)行編解碼、對IOT設(shè)備的請求返回部分?jǐn)?shù)據(jù)、將客戶提交的工單通過郵件通知客服人員等等。
Serverless 視頻轉(zhuǎn)碼服務(wù)
這些基于事件觸發(fā)的程序片斷在傳統(tǒng)架構(gòu)中實(shí)現(xiàn)起來相對復(fù)雜,往往需要為20%的核心業(yè)務(wù)運(yùn)營80%的支撐業(yè)務(wù)。
Serverless完美地解決了這些問題,它可以成為復(fù)雜應(yīng)用的一種補(bǔ)充架構(gòu)。可以將無狀態(tài)的、事件觸發(fā)的業(yè)務(wù)拆分成Serverless應(yīng)用,讓整個架構(gòu)變得更加的簡潔和高效。
縱觀各大廠商的實(shí)現(xiàn),Serverless的優(yōu)勢主要有以下幾點(diǎn):
1) 不需要管理服務(wù)器–不需要提供或維護(hù)任何的服務(wù)器,不需要安裝任何的軟件或運(yùn)行時。
2) 彈性伸縮–按函數(shù)調(diào)用自動進(jìn)行的彈性擴(kuò)縮容,不需要人為去管理伸縮問題。
3) 高可用-無服務(wù)器應(yīng)用程序內(nèi)置高可用和容錯。無需考慮高可用,運(yùn)行應(yīng)用的服務(wù)默認(rèn)提供高可用。
4) 低成本-沒有閑置費(fèi)用,不需要預(yù)留容量。代碼不運(yùn)行就不收費(fèi)。
聽起來相當(dāng)誘人。
Lambda在HPC場景中表現(xiàn)如何呢?
和Serverless相比,HPC絕對算是個老古董。(有對HPC前世今生感興趣的可以點(diǎn)這里)。
高性能計算的分類方法很多。從并行任務(wù)間的關(guān)系角度來看,高性能計算任務(wù)可以分為集群計算和網(wǎng)格計算兩類:

集群計算的應(yīng)用,通常需要高帶寬、低延時的特殊硬件如InfiniBand。另外,軟件一般需要使用統(tǒng)一的消息傳遞接口開發(fā)庫MPI來進(jìn)行所有進(jìn)程間通信和數(shù)據(jù)交換。
這種類型的應(yīng)用無論從性能需求還是運(yùn)行方式上目前都不具有在當(dāng)前的主流云廠商Serverless架構(gòu)上直接運(yùn)行的可能性。
而網(wǎng)格計算型的HPC屬于可極致并發(fā)的應(yīng)用,這一特點(diǎn)和Serverless的彈性伸縮特性非常匹配。
理論上看Lambda完全可以解決這類應(yīng)用的基礎(chǔ)架構(gòu)問題。
用戶只要寫一個函數(shù),上傳到Lambda,就可以輕松地按需觸發(fā)成千上萬個并行的任務(wù),不用擔(dān)心架構(gòu)的擴(kuò)展和可用性,這比自己維護(hù)一個高性能計算集群要省心很多。
但是仍然有以下幾點(diǎn)可能制約這種類型的任務(wù)跑在Lambda上的可能性:
1. Lambda目前對單次函數(shù)調(diào)用的時間限制是15分鐘,超過15分鐘將被關(guān)閉。
雖然可以緩存函數(shù)狀態(tài)以便下次調(diào)用代碼時進(jìn)行熱啟動,但無法返回到同一個虛擬機(jī)。
2. 性能需求。Lambda目前根據(jù)內(nèi)存的分配來決定CPU的算力,目前沒有明確的SLA,對計算密集型應(yīng)用,要多次測試去決定適合的配置。
另外,有研究顯示,Lambda會試圖把同一個用戶的函數(shù)放到一個虛擬機(jī)上運(yùn)行,每個函數(shù)得到的帶寬有限,在數(shù)據(jù)量較大的情況下會有IO瓶頸。
3. 當(dāng)前Lambda沒有API或者其它機(jī)制支持使用GPU,只支持通用CPU類型應(yīng)用。
4. 成本,現(xiàn)實(shí)中的成本可能會更高。
前三點(diǎn)很好理解,主要是受目前Lambda的架構(gòu)所限。第四點(diǎn)就有點(diǎn)費(fèi)解了,說好的節(jié)省成本呢?
我們來看一個Lambda運(yùn)行HPC的實(shí)例
這篇《一小時內(nèi)完成百萬計算任務(wù)?》里提到的就是一個典型的網(wǎng)格計算模型,當(dāng)任務(wù)被分解后,使用Lambda實(shí)現(xiàn)一個函數(shù),然后上傳要計算的分子,Lambda就會自動按照上傳的分子數(shù)按需計算了。
試驗結(jié)果:
使用1024M的內(nèi)存運(yùn)行這個函數(shù),完成一個分子計算的平均時間為3.2分鐘(注:個別的大分子計算時間會高于15分鐘,這類分子比較少,暫且忽略)。
Lambda 1024M內(nèi)存的費(fèi)用為0.0000113477元/100ms, 平均計算一個分子的費(fèi)用為0.0000113477x10x3.2x60=0.02179元。
這樣算下來,10000個分子的總費(fèi)用為217.9元。
而之前我們使用spot成本優(yōu)化過的費(fèi)用在50元左右。

當(dāng)然,目前Lambda每月會免費(fèi)贈送計算時間,如果計算任務(wù)不多,確實(shí)可以考慮一下。但遇到百萬分子計算任務(wù)的話,使用Lambda的成本將大幅上升。
通過以上分析我們可以得出結(jié)論,目前主流廠商的Serverless產(chǎn)品并不適合運(yùn)行HPC應(yīng)用。
現(xiàn)在的Serverless1.0更多的是面向運(yùn)行時間極短,業(yè)務(wù)波峰和波谷特別明顯的片段任務(wù)。對于一些小的應(yīng)用開發(fā)商,也許每月用免費(fèi)的額度就夠用了。
Serverless HPC是可以實(shí)現(xiàn)的嗎?
實(shí)現(xiàn)路徑是什么?
讓我們再來理解一下Serverless到底是什么。
廣義上講,Serverless 是在用戶和云服務(wù)之間搭建了一個抽象層,用戶直接使用功能,而對其中的云服務(wù)無感知的一種云服務(wù)方式。
在這個定義下,Serverless HPC可以怎么實(shí)現(xiàn)呢?
首先,基于Serverless的核心概念。
我們認(rèn)為對于基本的計算資源的調(diào)度,管理,分配應(yīng)該像主流的Serverless一樣由平臺負(fù)責(zé), 用戶只需要關(guān)心他們需要完成的計算任務(wù)。
這就需要平臺對于底層的資源做一定的抽象, 提供統(tǒng)一的資源訪問方式。
其次, 應(yīng)用本身需要由統(tǒng)一的打包工具來打包, 分發(fā)和運(yùn)行。
對于一些常見的傳統(tǒng)HPC應(yīng)用,因為其行業(yè)應(yīng)用使用方式相對固定,則可以由平臺預(yù)先打包成功能模塊或者函數(shù)。 用戶只需要提供用于計算用的數(shù)據(jù)就可以完成計算,省去了構(gòu)建復(fù)雜計算資源的負(fù)擔(dān)。
針對cloud HPC場景,我們進(jìn)行了一系列試驗和探索。

我們提供fastone compute platform,讓用戶可以選擇將應(yīng)用打包成容器鏡像上傳,或者選擇現(xiàn)有的已經(jīng)由我們預(yù)先打包好的應(yīng)用,確定分析任務(wù),上傳輸入文件,像使用主流Serverless的服務(wù)一樣,即可以開始運(yùn)行計算任務(wù)。
而fastone后端服務(wù),將自動為任務(wù)選擇合適的實(shí)例(GPU/CPU/FPGA),創(chuàng)建集群,運(yùn)行任務(wù)。可以根據(jù)用戶定義的成本和性能策略自動在多云中選擇最經(jīng)濟(jì)或最佳性能的實(shí)例,在提高效率的同時大大降低了成本。
這些功能,我們都通過API的方式開放出來,HPC用戶只需要調(diào)用這些API,寫一個函數(shù),上傳代碼到fastone平臺,就可以在云上運(yùn)行HPC任務(wù)。
這又何嘗不是一種Serverless的嘗試呢?
Serverless作為一種全新的架構(gòu),是云計算發(fā)展演化的必然結(jié)果。
追求更細(xì)粒度的計費(fèi)單元,更加專注于核心業(yè)務(wù)、將支撐業(yè)務(wù)外包給基礎(chǔ)設(shè)施提供商是云計算的趨勢。
目前主流Serverless架構(gòu)的特點(diǎn),讓編寫事件觸發(fā)的短時間任務(wù)變得更加容易。同時它也有自身內(nèi)在的局限性,并不適合復(fù)雜的應(yīng)用場景。
Serverless技術(shù)演進(jìn)才剛剛開始,我們也在路上。
- END -
關(guān)于我們:
速石科技專為有高算力需求的企業(yè)級用戶提供一站式算力運(yùn)營解決方案,幫助用戶提升10-20倍業(yè)務(wù)運(yùn)算效率,降低成本達(dá)到75%以上,加快市場響應(yīng)速度。目前主要應(yīng)用領(lǐng)域包括藥物研發(fā)、基因測序分析、半導(dǎo)體行業(yè)的EDA仿真及電路設(shè)計、汽車行業(yè)的自動駕駛開發(fā)、虛擬碰撞試驗以及AI人工智能。
想了解更多,可添加小F微信(ID:imfastone)
文章推薦:
>>AWS、阿里云、Azure、Google Cloud、華為云、騰訊云 各種云服務(wù)器價格收費(fèi)對比(上)