什么是功能即服務(FaaS)?
功能即服務(或稱為 FaaS)是一種云計算服務,它允許開發人員以功能的形式來構建、計算、運行和管理這些應用包,無需維護自己的基礎架構。
FaaS 是一種在無狀態容器中運行的事件驅動型執行模型,這些功能將利用 FaaS 提供商的服務來管理服務器端邏輯和狀態。
FaaS 解決方案可通過主流公共云提供,并可在內部置備,這樣就為企業 IT 應用開發新增了一些重要的功能。獲取云原生策略指南,為借助 FaaS 實施無服務器方案做好準備。FaaS 的一些常見示例:
- IBM 云功能
- Amazon 的 AWS Lambda
- Google 云功能
- Microsoft Azure 功能(開源)
- OpenFaaS(開源)
FaaS和無服務器
FaaS 是一種實現無服務器計算的方法,藉此開發人員可以編寫業務邏輯,然后在完全由平臺管理的 Linux 容器中執行這些業務邏輯。
雖然通常只是一個使用云計算服務的云計算平臺,但該模型還在擴展中,包含內部部署和混合部署。
無服務器會對基礎架構問題進行抽象處理,例如管理或置備服務器及開發人員的資源分配,并將其提供給平臺(如紅帽OpenShift),這樣開發人員就可以專注于編寫代碼和實現業務價值。
功能是操作系統上的一個運行業務邏輯的軟件。應用可以由許多功能組成。
使用 FaaS 模型是通過無服務器架構來構建應用的方法之一,但隨著無服務器模式的日漸普及,開發人員正在尋找支持構建無服務器微服務和無狀態容器的解決方案。
功能即服務是如何工作的?
FaaS 為開發人員提供了一種運行 Web 應用的抽象方式,可以在無需管理服務器的情況下響應事件。例如,上載文件可觸發自定義代碼,從而將文件轉碼為各種格式。
FaaS 基礎架構通常是由服務提供商按需計量的,主要通過事件驅動型執行模型進行,因此它會隨時待命,但不需要任何服務器進程在后臺持續運行(這一點與平臺即服務 (PaaS)不同)。
現代 PaaS 解決方案提供了無服務器功能(作為通用工作流的一部分),藉此開發人員可以實現應用的部署,從而模糊了 PaaS 和 FaaS 之間的界線。
實際上,整個應用將由以下解決方案混合而成:功能、微服務和長期運行的服務
FaaS動態擴展
提供商會通過應用編程接口(API)讓您的功能處于可用狀態并管理資源分配。由于功能是事件驅動而不是資源驅動的,因此它們很容易進行擴展,這種擴展允許提高效率和價值。
為了發揮部分優勢,其體系架構會受到一定制約(例如對功能執行施加時間限制),因此需要做到功能的快速啟動和運行。
功能會在毫秒內啟動并處理各個請求。如果您的功能有多個同步請求,系統將創建盡可能多的功能副本來滿足需求。
當需求下降時,應用會自動減少功能副本的數量。動態擴展是 FaaS 的一項優勢,而且頗具成本效益,因為提供商僅對使用的資源收費,而不對空閑時間收費。
在內部運行時,這種動態特性還可以提高平臺密度,從而允許運行更多工作負載并優化資源消耗和功能。
需要橫向擴展的事件驅動型服務可作為功能和 RESTful 應用進行工作。
FaaS 非常適合大數據量的交易、經常發生的工作負載,例如報表生成、圖像處理或任何計劃任務。常見的 FaaS 用例包括數據處理、IoT 服務、移動和 Web 應用。
您可以使用 FaaS 構建完全無服務器化的應用,也可以打造部分無服務器、部分傳統微服務組件的應 用 ,以便利用更新的技術和容器編排系統,如 Kubernetes。
FaaS的優勢
- 提高開發人員的生產率并縮短開發時間
- 不負責服務器管理
- 易于擴展,且橫向擴展由平臺管理
- 僅在必要和需要時消耗資源或支付費用
- 幾乎可以用任何編程語言來編寫功能
FaaS 和無服務器之間有何區別?
最初,FaaS 和無服務器多多少少具有一定的相似性,但現在,無服務器的含意已擴展至更多的體系架構模式和實踐,除了以 FaaS 編碼的自定義業務邏輯外,它們還大量使用了通用服務。
微服務甚至傳統應用都可以使用無服務器,只要它們可以容器化并且符合動態擴展和狀態管理的要求即可。
"無服務器"一詞也用于表示托管服務(例如數據庫和消息傳遞系統)- 由于系統由云提供商或第三方公司管理,因此無需開發人員或管理員來操作系統。
FaaS 與主要通過事件驅動型體系架構連接的通用后端服務(如數據庫、消息傳遞和身份驗證)相結合,可為無服務器開發人員帶來最大的收益。