函式即服務 (FaaS) 是一種雲端運算模式,由您開發小型模組化程式碼 (即函式),讓雲端供應商在特定事件發生時執行這些函式。在這個模式中,您只需專注於程式碼邏輯,基礎架構則由無伺服器執行階段管理。雲端服務供應商則負責管理實體硬體、作業系統和網路伺服器軟體。
FaaS 與傳統的伺服器式應用程式或單體式架構不同。在這些舊模式中,您通常需要管理持續運作的伺服器,即使無人使用應用程式也一樣。但若採用 FaaS,平台只會在特定事件觸發程式碼時執行,您只需在必要情況下使用資源,應用程式建構效率因而提升。
瞭解 FaaS 與其他雲端服務模式 (例如平台即服務 (PaaS) 和基礎架構即服務 (IaaS)) 的差異,有助於您做出明智決策。FaaS 屬於更廣泛的「無伺服器」類別,由供應商管理伺服器,並提供獨特的抽象層級。「無伺服器」所包含的服務很廣,包括資料庫、儲存空間或運算,這些服務的伺服器皆由供應商管理。FaaS 專指無伺服器運算的「運算」部分,可根據事件執行程式碼。
功能 | FaaS (函式即服務) | PaaS (平台即服務) | IaaS (基礎架構即服務) |
主要單位 | 單一函式 (程式碼片段) | 整個應用程式 | 虛擬機器 (VM) |
擴充性 | 根據要求即時調度資源 (包括縮減至零) | 速度較慢,僅根據設定的規則擴充 | 透過手動或預先設定自動調度資源 |
定價模式 | 依執行時間 (毫秒) 計費 | 依資源執行時間 (運作時間) 付費 | 依分配的資源 (大小/時間) 付費 |
維護作業 | 無 (供應商管理所有事務) | 較少 (供應商管理 OS/執行階段) | 較多 (由您管理 OS、更新和修補工作) |
適用情境 | 事件導向工作、黏合程式碼、資料處理 | 網頁應用程式、長時間執行的服務 | 舊版應用程式、複雜的自訂基礎架構 |
功能
FaaS (函式即服務)
PaaS (平台即服務)
IaaS (基礎架構即服務)
主要單位
單一函式 (程式碼片段)
整個應用程式
虛擬機器 (VM)
擴充性
根據要求即時調度資源 (包括縮減至零)
速度較慢,僅根據設定的規則擴充
透過手動或預先設定自動調度資源
定價模式
依執行時間 (毫秒) 計費
依資源執行時間 (運作時間) 付費
依分配的資源 (大小/時間) 付費
維護作業
無 (供應商管理所有事務)
較少 (供應商管理 OS/執行階段)
較多 (由您管理 OS、更新和修補工作)
適用情境
事件導向工作、黏合程式碼、資料處理
網頁應用程式、長時間執行的服務
舊版應用程式、複雜的自訂基礎架構
FaaS 工作流程既簡單又有效率,通常採用事件導向模式,也就是透過動作觸發程式碼。
FaaS 用途廣泛,適合多種現代應用程式架構。
您可以將複雜的應用程式拆解成獨立的小部分,然後透過事件互相通訊。
FaaS 適合處理的工作包括在圖片上傳後隨即調整尺寸,或在收到資料時進行清理。
您可以將函式做為行動應用程式的邏輯基礎,或處理來自物聯網 (IoT) 裝置的資料。
FaaS 非常適合處理可拆分成多個小型同步工作的任務,例如影片編碼。
您可以將傳統的排程工作,替換為特定時間執行的函式,以執行維護作業或生成報表。
採用 FaaS 雲端技術可為開發人員和企業帶來多項優勢。
自動即時調整資源配置
從單一使用者到數千名使用者,應用程式可有效因應突然激增的流量,而不必手動進行任何設定。
用多少付多少,成本控管成效超群
只有執行程式碼時才需要付費,比起支付閒置伺服器的費用,成本大幅降低。
提升開發速度
開發人員可迅速編寫及部署程式碼,不必花時間管理伺服器或設定基礎架構。
專心編寫應用程式程式碼,不必費心管理基礎架構
團隊可將心力放在為客戶創造價值上,而不是修補伺服器或管理作業系統。
兼具高可用性與韌性
FaaS 平台通常會在多個可用區執行程式碼,即使某個區域發生故障,應用程式仍能繼續運作。
開發人員使用 FaaS 最常遇到的問題之一,便是「冷啟動」。如果函式閒置一段時間,雲端服務供應商會停用環境以節省資源。下次有事件觸發該函式時,系統得多花點時間來設定環境,並載入程式碼。這種延遲情況就稱為冷啟動,可能會減緩應用程式的運作速度。
如果應用程式需要即時回覆,只要按照下列步驟操作,即可將延遲降到最低。
函式即服務 (FaaS) 是一種雲端運算模式,而 Google Cloud 的 Cloud Run functions 產品具體呈現這個概念,帶來即付即用的可擴充 FaaS 解決方案,讓使用者能輕鬆執行程式碼,完全不需要管理伺服器。
選擇 Cloud Run functions,就等於採用無伺服器技術,由 Google Cloud 處理底層基礎架構作業。您只需要提供程式碼,平台會負責管理執行環境、作業系統更新,以及自動調整資源配置功能。有這項整合機制,即可部署單一用途的函式來回應事件 (例如 HTTP 要求或資料變更),無須佈建單一虛擬機器。
這項服務結合簡便的函式部署體驗和強大的 Cloud Run 技術,開發人員可使用 Python、Node.js、Go、Java、.NET 和 Ruby 等語言,建構事件導向的應用程式。Cloud Run functions 採用 Google 完善的基礎架構,因此函式能依據需求,自動從零將執行個體擴充至數千個。
如要進一步瞭解函式即服務 (FaaS) 和無伺服器運算,歡迎探索下列資源。