1. 程式人生 > >認識與設計Serverless(一)

認識與設計Serverless(一)

什麽是 特性 ima 動作 發布 困難 鏡像 png his

一、什麽是Serverless

  定義:Serverless是一種無服務器的架構,區別於傳統的Baas,SAAS,作為FAAS(函數即服務)而存在,函數由事件驅動觸發並按需調用。

   按需調用:區別於傳統的7x24小時運行的服務,Serverless只會在特定事件觸發時運行,並按需收費。

   無需關註基礎設施和底層資源:雖然稱為無服務器的架構,但並不是完全的無服務器,只是人們不再操心運行所需的資源,只需關註自己的業務邏輯,即函數,並且為實際消耗的資源付費,而對於VM,容器和資源(如CPU,內存等資源)則完全交由第三方服務或平臺去自動化管理。

二、Serverless特性

  (1)降低啟動成本:區別傳統的服務啟動一堆初始化等動作,Serverless只需快速拉取容器部署準備一個函數的資源並啟動。

  (2)新一代微服務:粒度細化至函數的服務

  (3)安全性高:對於虛擬機,容器,網絡等資源的安全問題,完全由第三方采用高可靠的方式實現,用戶無需關心。

  (4)提高開發效率:開發者只需關心自己的函數實現,免去了其他後顧之憂。

  (5)拓展性強:Serverless具備的彈性伸縮能力,為函數的自拓展和容災提供了便利。

三、業界主流產品

  (1)AWS :提供一系列完全托管的服務,可以使用它們構建和運行無服務器應用程序。並提供了計算、API網關適配協議,數據庫、存儲、流處理、消息排隊,公共服務等能力

  技術分享圖片

  (2)Microsoft Azure:AWS 支持 Serverless 架構一段時間之後,Azure 作為競品正穩步發展中。除了支持Serverless的眾多特性外,Azure 提供快速構建Web端,移動端應用程序,以及實時流數據處理,文件處理和計劃任務的自動化,更多內容請參考https://azure.microsoft.com/en-us/services/functions/

  技術分享圖片

  (3)OpenWhisk :OpenWhisk 是一個開源項目,具有完整的可視性 FaaS 功能,可擴展也可定制。由於開源可拓展這一特性,自發布以來得到了廣大開發者的歡迎,但是目前OpenWhisk的產品和社區還在不斷完善中。

  技術分享圖片

四、Serverless弊端

  (1)不適合業務邏輯復雜的應用:Serverless比較適合簡單,運行時間短的應用或小程序,目前也沒有成功的復雜系統的案例。

  (2)冷啟動時間:函數在執行之前,都需要經過拉取容器,制作鏡像並部署的過程,此過程占用函數調用的時間較長。

  (3)代碼調試困難:目前已有的Serverless雲開發平臺,都面臨一個巨大的問題,即在線debug代碼,這是很多雲開發平臺共同的瓶頸。

  (4)CI/CD困難:在應用自動構建,代碼自動構建上都有不小的難度。

五、Serverless設計原則

  (1)單一責任:函數應盡量保持執行責任單一,盡量少的對眾多其他服務或函數形成依賴。

   (2)執行時長控制:Serverless是按需執行,按調用次數和時長來收費,所以設計的函數應盡量在毫秒或秒以內,減少遞歸等,避免造成資金浪費

認識與設計Serverless(一)