FaaS 與其他雲端運算服務
什麼是函數即服務
FaaS 指一種 Serverless 後端服務,允許開發人員隨時編寫模組化代碼,並在特定事件觸發時執行。
藉助 Serverless 計算,開發人員無需關注云基礎設施即可建立和運行應用。Serverless 架構中伺服器仍然存在,但與應用開發過程相分離。雲端服務商負責伺服器的資源撫平、維護和擴縮容等日常工作,使開發人員能夠專註於部署代碼。
雖然函數即服務(FaaS)和 Serverless 有時被混用,但二者有明確的區別。Serverless 泛指伺服器與終端使用者完全分離的架構類別,而 FaaS 是 Serverless 計算的子集,專註於事件驅動觸發,代碼在響應事件或請求時執行。沒有事件驅動請求時伺服器會關閉,資源可供後續請求使用。FaaS 按需響應並靈活擴縮容,Serverless 函數空閑時幾乎不產生費用,從而在不同情境下降低成本。
PaaS、IaaS 與 FaaS 的關係
平台即服務(PaaS)、函數即服務(FaaS)和基礎設施即服務(IaaS)統稱為雲端運算服務,三者的區別在於基礎設施與使用者之間的抽象層級不同。
IaaS 提供最低的抽象層級。使用者對基礎設施及配套工具和軟體擁有完全控制權,但無需管理或控制資料中心等物理基礎設施。IaaS 允許開發人員選擇所需的抽象層,可以自行管理所有組件,也可以引入負載平衡器和託管服務等特性來簡化應用維護。
對終端使用者而言,PaaS 增加了一層抽象。使用者無需管理應用的作業系統、運行時及其他基礎設施組件,但仍可精細控制底層基礎設施選項和應用。PaaS 為希望快速上線應用的開發人員提供全託管的基礎設施方案,開發人員可以專註於業務,由服務位址理系統管理和後端營運。
FaaS 為營運人員提供最高的抽象程度和最為特定的功能。開發人員可以訪問按需運行應用邏輯的系統,由服務提供者管理所有系統資源和其他基礎設施組件。
PaaS 與 FaaS 的區別
雖然 FaaS 和 PaaS 初看起來很相似,但選擇時需要考慮以下重要差異。
● 配置:FaaS 用例簡單且採用全託管方案,資源配置時間短。PaaS 雖然比其他雲端運算服務抽象程度更高,但仍需要一定的配置工作。根據所需的控製程度,這既可能是優勢也可能是劣勢。
● 營運:FaaS 為每個請求啟停整個應用。PaaS 雖然支援按需擴縮容,但資源通常隨時可用。這一 FaaS 特性可能影響延遲、成本和複雜請求的處理能力。
● 可擴充性:PaaS 支援按需擴縮容,但需要開發人員主動配置。FaaS 無需容量規劃,可自動靈活擴縮。
● 定價:PaaS 定價因服務商而異,輕量工作負載下通常比 FaaS 更貴。如果事件觸發不頻繁,FaaS 按函數調用次數計費,可節省成本。對於穩定或大規模工作負載,PaaS 可能更經濟。
FaaS 的工作原理
早期應用通常採用單體架構,整個應用作為一個整體執行。微服務架構逐漸流行,由可獨立部署的組件構成,便於單獨維護和測試。
理想情況下,函數就是一個能夠執行單一操作以響應事件的微服務。在 FaaS 中調用函數時,服務商會啟動伺服器執行代碼,完成後關閉伺服器。Serverless 服務僅在函數運行時處於活動狀態,計算資源可部署到其他用途。
開發人員通過 FaaS 平台運行應用代碼。FaaS 的優勢在於簡潔性。要充分發揮 FaaS 的價值,需確保每個函數只執行單一操作,函數範圍應受限且高效。使用過多庫或讓函數調用其他函數會導致程式變慢並增加成本。
FaaS 的優勢
採用 FaaS 架構有諸多優勢,以下是選擇 FaaS 運行應用的幾個理由:
● 專註於應用的編碼和開發
● 按使用量付費,降低成本
● 自動擴縮容,無需容量規劃和日常維護
● 測試和開發簡便,縮短上市時間
選擇 FaaS 時的注意事項
從 Web 應用程式到線上聊天機器人、資料處理到後端函數,FaaS 用途廣泛。選擇 FaaS 服務商前,請考慮以下因素:
● 工作負載:FaaS 適合輕量且請求頻繁的重複任務。由於 FaaS 按函數執行次數計費,高負載情境下的費用可能高於 PaaS。工作負載較小時,FaaS 是簡化資源撫平和降低成本的理想方案。
● 控製程度:FaaS 是抽象程度最高的雲產品之一。考慮對配置和基礎設施所需的可見度和控製程度。如果希望比 FaaS 多一些控制同時保持易用性,可以考慮 PaaS 方案。需要完全掌控生產環境及基礎設施設計和行為的團隊,建議選擇 IaaS 方案。
● 供應商鎖定:指服務商構建的應用難以遷移到其他供應商的情況。使用開源雲技術可以更容易將計算工作負載從單一服務商遷移到其他服務商。
