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

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

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

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

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