什麼是函式即服務 (FaaS)?

函式即服務 (FaaS) 是一種雲端運算模式,由您開發小型模組化程式碼 (即函式),讓雲端供應商在特定事件發生時執行這些函式。在這個模式中,您只需專注於程式碼邏輯,基礎架構則由無伺服器執行階段管理。雲端服務供應商則負責管理實體硬體、作業系統和網路伺服器軟體。

FaaS 與傳統的伺服器式應用程式或單體式架構不同。在這些舊模式中,您通常需要管理持續運作的伺服器,即使無人使用應用程式也一樣。但若採用 FaaS,平台只會在特定事件觸發程式碼時執行,您只需在必要情況下使用資源,應用程式建構效率因而提升。

FaaS、PaaS 與 IaaS

瞭解 FaaS 與其他雲端服務模式 (例如平台即服務 (PaaS) 和基礎架構即服務 (IaaS)) 的差異,有助於您做出明智決策。FaaS 屬於更廣泛的「無伺服器」類別,由供應商管理伺服器,並提供獨特的抽象層級。「無伺服器」所包含的服務很廣,包括資料庫、儲存空間或運算,這些服務的伺服器皆由供應商管理。FaaS 專指無伺服器運算的「運算」部分,可根據事件執行程式碼。

  • FaaS 著重於事件導向的程式碼。您部署的單一函式,會在事件 (例如上傳檔案) 發生時執行特定工作。平台會自動調整資源配置,閒置時甚至會降至零。
  • PaaS 提供建構及執行完整應用程式的平台。PaaS 雖然也免去管理硬體和作業系統的需求,但應用程式通常會持續運作,隨時等待使用者的要求。這個架構適合用來建構完整的網頁應用程式,而非個別事件觸發機制。
  • IaaS 提供最高的掌控度,但您需要投入最多的管理心力。您會租用虛擬機器 (VM) 和儲存空間,但必須負責管理作業系統、執行階段和中介軟體。

雲端服務模式比較

功能

FaaS (函式即服務)

PaaS (平台即服務)

IaaS (基礎架構即服務)

主要單位

單一函式 (程式碼片段)

整個應用程式

虛擬機器 (VM)

擴充性

根據要求即時調度資源 (包括縮減至零)

速度較慢,僅根據設定的規則擴充

透過手動或預先設定自動調度資源

定價模式

依執行時間 (毫秒) 計費

依資源執行時間 (運作時間) 付費

依分配的資源 (大小/時間) 付費

維護作業

無 (供應商管理所有事務)

較少 (供應商管理 OS/執行階段)

較多 (由您管理 OS、更新和修補工作)

適用情境

事件導向工作、黏合程式碼、資料處理

網頁應用程式、長時間執行的服務

舊版應用程式、複雜的自訂基礎架構

功能

FaaS (函式即服務)

PaaS (平台即服務)

IaaS (基礎架構即服務)

主要單位

單一函式 (程式碼片段)

整個應用程式

虛擬機器 (VM)

擴充性

根據要求即時調度資源 (包括縮減至零)

速度較慢,僅根據設定的規則擴充

透過手動或預先設定自動調度資源

定價模式

依執行時間 (毫秒) 計費

依資源執行時間 (運作時間) 付費

依分配的資源 (大小/時間) 付費

維護作業

無 (供應商管理所有事務)

較少 (供應商管理 OS/執行階段)

較多 (由您管理 OS、更新和修補工作)

適用情境

事件導向工作、黏合程式碼、資料處理

網頁應用程式、長時間執行的服務

舊版應用程式、複雜的自訂基礎架構

FaaS 的運作方式

FaaS 工作流程既簡單又有效率,通常採用事件導向模式,也就是透過動作觸發程式碼。

  1. 部署程式碼:您編寫執行單一工作的程式碼片段 (即函式),然後上傳給雲端服務供應商。
  2. 觸發事件:等待事件發生,例如使用者點選按鈕、將檔案上傳至儲存空間,或訊息送達佇列。
  3. 配置資源:雲端供應商確認事件後,會立即佈建必要的執行環境。
  4. 執行函式:執行程式碼、完成工作並產生結果,例如處理資料或傳送通知。
  5. 停用和計費:工作完成後,資源會立即釋出,您只需支付程式碼執行時間 (以毫秒為單位) 的費用。

FaaS 的常見用途

FaaS 用途廣泛,適合多種現代應用程式架構。

您可以將複雜的應用程式拆解成獨立的小部分,然後透過事件互相通訊。

FaaS 適合處理的工作包括在圖片上傳後隨即調整尺寸,或在收到資料時進行清理。

您可以將函式做為行動應用程式的邏輯基礎,或處理來自物聯網 (IoT) 裝置的資料。

FaaS 非常適合處理可拆分成多個小型同步工作的任務,例如影片編碼。

您可以將傳統的排程工作,替換為特定時間執行的函式,以執行維護作業或生成報表。

採用 FaaS 的主要優點

採用 FaaS 雲端技術可為開發人員和企業帶來多項優勢。

自動即時調整資源配置

從單一使用者到數千名使用者,應用程式可有效因應突然激增的流量,而不必手動進行任何設定。

用多少付多少,成本控管成效超群

只有執行程式碼時才需要付費,比起支付閒置伺服器的費用,成本大幅降低。

提升開發速度

開發人員可迅速編寫及部署程式碼,不必花時間管理伺服器或設定基礎架構。

專心編寫應用程式程式碼,不必費心管理基礎架構

團隊可將心力放在為客戶創造價值上,而不是修補伺服器或管理作業系統。

兼具高可用性與韌性

FaaS 平台通常會在多個可用區執行程式碼,即使某個區域發生故障,應用程式仍能繼續運作。

開發人員常見的問題:冷啟動

開發人員使用 FaaS 最常遇到的問題之一,便是「冷啟動」。如果函式閒置一段時間,雲端服務供應商會停用環境以節省資源。下次有事件觸發該函式時,系統得多花點時間來設定環境,並載入程式碼。這種延遲情況就稱為冷啟動,可能會減緩應用程式的運作速度。

如何減少冷啟動次數

如果應用程式需要即時回覆,只要按照下列步驟操作,即可將延遲降到最低。

  1. 縮減程式碼規模:檢查程式碼,移除不必要的龐大程式庫或依附元件。函式的規模越小,載入速度就越快。
  2. 採用延遲載入方法:指定程式碼的結構,確保只有在函式邏輯真正需要時,才載入大量變數或連線,而不是在函式啟動時立即載入。
  3. 設定執行個體數量下限:大多數主要雲端服務供應商都允許設定執行個體數量下限,這樣函式至少會有一個執行個體維持在暖機狀態,隨時可以開始運作,避免啟動延遲。
  4. 選擇速度較快的執行階段:有些程式設計語言 (例如 Go 或 Python) 的啟動速度通常比其他語言 (例如 Java) 來得快。若速度至關重要,建議以輕量級語言編寫有低延遲需求的函式。

透過 Google Cloud 解決業務難題

新客戶可以獲得價值 $300 美元的免費抵免額,盡情試用各項 Google Cloud 功能。

FaaS 和 Cloud Run functions

函式即服務 (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) 和無伺服器運算,歡迎探索下列資源。

後續行動

運用價值 $300 美元的免費抵免額和超過 20 項一律免費的產品,開始在 Google Cloud 中建構產品與服務。