從阿里雲函數計算看Serverless的演進與思考

從阿里雲函數計算看Serverless的演進與思考

來自專欄我是程序員17 人贊了文章

雲計算之所以能夠成為DT時代顛覆性力量,是因為其本質是打破傳統架構模式,降低成本並簡化體系結構,用全新的思維更好的滿足了用戶需求。而無伺服器計算(Serverless Computing)作為這個巨大市場的下一個階段的進化產物,將真正幫助企業實現只專註於業務和構建應用程序而不必擔心IT基礎設施,這也將成為雲服務商未來競爭的關鍵。

什麼是無伺服器計算

雲原生計算基金會(Cloud Native Computing Foundation, CNCF)對無伺服器計算作了如下定義:

Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.

無伺服器計算是指開發者在構建和運行應用時無需管理伺服器等基礎設施。應用被解耦為細粒度的函數,函數是部署和運行的基本單位。用戶只為實際使用的資源付費。可見,serverless 計算能夠幫助應用開發者擺脫伺服器等底層基礎設施管理的負擔,專註於業務層的創新。

圖片1 - 無伺服器計算的特點

無伺服器計算的發展歷史

實際上,Serverless 不是一個新概念,計算、存儲等領域的很多服務都是 serverless 的模式。例如阿里雲推出的第一個雲服務,對象存儲(OSS),就是 serverless 形態的存儲服務。用戶不需要關心數據是如何存儲在底層伺服器上,只為實際使用的存儲資源付費。統計數據表明,近年來,各個雲服務商推出的新服務/新功能,超過70% 都是 serverless 形態。隨著雲端 serverless 類型的服務種類越來越豐富,用戶能夠快速使用多種服務構建彈性高可用的雲原生應用。因此,serverless 計算正變得越來越流行。

圖片2 – 無伺服器計算已經無處不在

從函數計算架構看無伺服器計算的特性

在 serverless 計算中,平台服務接管了底層基礎設施的管理,因此平台服務必須處理好容錯和資源伸縮等問題,才能充分發揮 serverless 計算的能力。

從阿里雲函數計算架構圖不難看出,API服務層完成身份驗證,元數據的讀寫等功能。同步調用函數時,API服務模塊從資源調度模塊獲取可用的函數執行引擎並發送請求,最後取回結果。非同步調用函數時,則將事件寫入到消息隊列後即返回。由事件分發模塊分發事件,整個流程和同步調用類似。

圖片3 阿里雲函數計算架構

實時彈性伸縮是函數計算的核心優勢,當用戶負載出現波峰時,系統能實時擴張資源,平滑應對峰值訪問。以非同步事件處理為例,整個處理流程分為三步:

  1. 事件寫入函數計算的事件隊列。
  2. 事件分發器從隊列中讀取事件,並調用對應的函數處理事件。
  3. 用戶函數處理事件。

圖片4 函數計算實時伸縮

函數計算系統會監控用戶的負載變化,各組件均能夠根據用戶負載動態伸縮。如上圖所示,當用戶A的事件產生速率變大時,系統會自動在每個環節給A分配更多的資源,以匹配事件處理的能力。

函數計算採用多級資源調度策略,系統會根據用戶負載和資源池水位預判需求,提前準備好計算資源。依託於阿里雲飛天分散式系統平台多年的技術積累,在調度的實時性和準確性上取得了很好的平衡,具備毫秒級彈性伸縮的能力。

無伺服器計算的典型應用場景

藉助函數計算,用戶幾乎可以構建任何類型的應用程序或後端服務,包括 Web 應用後端服務,大規模文件處理,數據實時流式處理等等。

例如藉助對象存儲和函數計算的集成,用戶只需要編寫函數處理單個視頻。當有大量視頻文件被上傳到對象存儲服務後,會自動觸發多個函數實例並發處理。

圖片5 Serverless 視頻轉碼服務

使用函數計算的 HTTP 觸發器,用戶只需要編寫函數處理單個請求。當 TPS 升高時,函數計算會自動擴容計算資源執行多個函數實例處理請求。

圖片6 Serverless 網站後端服務

無伺服器計算對用戶的價值

自阿里雲函數計算上線以來,被開發者廣泛的用於大規模多媒體數據並行處理,日誌/物聯網數據的流式處理,網站後端服務等場景中。從實際使用情況來看,serverless 計算在工程效率、可靠性、性能、成本和安全性等方面給用戶帶來了巨大的價值。

1)工程效率:藉助函數計算和其他雲端服務的集成,用戶只需要編寫少量代碼就可以串聯多個服務完成複雜的功能。用戶不需要負擔伺服器配置/升級,資源擴容/縮容等繁瑣工作,運維成本大幅降低。

2)可靠性:用戶不需要購買或維護任何的伺服器,不需要安裝任何的軟體,藉助函數計算,系統自動處理基礎設施層各種錯誤,減少宕機、網路中斷等危機情況發生,提升系統可靠性。

3)彈性伸縮:應用程序所需計算資源的伸縮能在毫秒級別由 serverless 計算平台自動完成,用戶不需要負責增減伺服器的數量。

4)低成本:不需要對計算和存儲之類的服務預留容量。如果代碼沒有運行,就不會收費。研究數據表明,70%以上的伺服器資源並未得到充分利用,函數計算採用全新模式,資源使用率達100%,實踐結果顯示,通常能節省10%-90%的成本。

也就是說,藉助函數計算意味著開發者可以專註在產品代碼上,而無須管理和操作雲端或本地的伺服器或運行時。生產實踐中,用戶用幾百行代碼就可以實現一個規模上億,日調用次數幾十億次的圖片處理服務。

結語

雲計算1.0時代,基礎設施的雲化(IaaS)為用戶提供了和傳統IT環境近乎一致的體驗,讓用戶能把應用無縫遷移到雲端。當人人都能獲取所需的計算資源後,如何更高效的管理和使用計算資源,函數即服務(FaaS)則是雲計算2.0時代最為重要的問題。阿里雲函數計算這樣的無伺服器計算服務,能夠從工程效率、可靠性、性能、成本和安全性等方面給用戶帶來巨大的價值,為廣大開發者打開了一扇通往美麗新世界的大門。

本文作者:scorpion

原文鏈接

更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎

本文為雲棲社區原創內容,未經允許不得轉載。


推薦閱讀:

北航軟體學院推移動雲計算創新型教育方式
群雄逐鹿!雲計算市場烽煙四起,行業將進入巨頭競爭時代
雲計算加速程序猿、攻城獅開發流程

TAG:阿里雲 | 雲計算 | 科技 |