什麼是無伺服器運算?

無伺服器運算是一種雲端運算執行作業模型,可根據使用需求來分配機器資源。採用無伺服器模式後,開發人員就能輕鬆建構及執行應用程式,不必管理任何伺服器,而且只需支付資源實際用量的費用。執行應用程式程式碼的雲端基礎架構則由雲端服務供應商負責佈建、管理及調度資源。

雖然名稱可能造成誤解,但無伺服器運算並非完全沒有伺服器,而是指省去例行基礎架構工作,藉此簡化應用程式部署程序。也就是說,您無法查看、設定、管理或擴充執行應用程式的基礎機器。基本上,您是為伺服器服務付費,並非支付伺服器本身的費用。

從開發的角度來看,這種模式就像沒有任何伺服器存在一樣。開發人員只需編寫程式碼,然後部署至正式環境,其餘工作則由雲端服務供應商處理。

瞭解 Google Cloud 如何充分發揮無伺服器架構的效益

無伺服器運算如何運作?

建構應用程式時,開發人員通常需要執行許多其他伺服器管理工作,才能部署程式碼,例如定義處理及儲存資料所需的資源、修補作業和負載平衡機制等。這些額外項目會拉長佈建時間,增加額外的營運負擔,最終降低開發團隊的工作效率。

無伺服器運算的目標是為開發人員提供無形的「無伺服器」體驗,讓開發人員不必考慮伺服器或執行應用程式可能需要的任何資源。服務供應商會在幕後執行所有工作,確保您有資源可執行程式碼並滿足需求,而無須支付閒置容量的費用。

無伺服器運算簡介

不妨將無伺服器技術想像成,家中的供水。您可以自己挖井、測試水質、安裝並維護所有必要的外部管路,讓水可以輸送到家裡。您也可以直接連接所在城市的主要供水系統。只要在需要用水時打開水龍頭,就能取得所需的量,而該城市也會根據您每月確切的用水量寄送帳單給您。

同樣地,雲端服務供應商會自動啟動執行無伺服器應用程式所需的基礎架構資源和執行階段環境,執行作業完成後,再將配置資源自動縮減至零。一般而言,系統會依據執行期間所使用的資源向您收費。不過,實際收費方式可能因服務和供應商而異。

無伺服器與其他類型的雲端運算

可是,不是也有其他類型的雲端運算服務以即付即用的方式提供隨選資源嗎?基礎架構式服務 (IaaS)平台式服務 (PaaS) 等雲端服務模型確實也提供隨選運算資源存取方式。

不過,即使您未使用,分配給您的雲端基礎架構仍會保持運作中狀態。如要隨著使用者需求的變動來增減配置的資源,您也必須自行擴充伺服器容量,或設定應用程式。

另一方面,無伺服器架構是事件導向。因此如果採用這種模型,供應商只會在事件觸發程式碼執行時提供資源,並隨時應要求自動擴充。

透過 Google Cloud 解決業務難題

新客戶可以獲得價值 $300 美元的免費抵免額,盡情試用各項 Google Cloud 功能。
與 Google Cloud 銷售專員聯絡,深入探討貴公司面臨的獨特挑戰。

雲端運算模型的差異

主要定義:

  • 管理負擔:管理及維護底層基礎架構所需的工作量
  • 收費模式:計算資源用量費用的方法
  • 維護需求:必須執行的長期維護作業、修補作業和更新作業量
  • 擴充性:能自動調整資源,以因應不斷變化的需求
  • 無狀態性:指出應用程式是否會儲存各工作階段間的用戶端資料

無伺服器

  • 管理負擔:極低
  • 收費模式:按用量計費
  • 維護需求:
  • 擴充性:自動且即時
  • 無狀態性:通常為無狀態

PaaS

  • 管理負擔:一般
  • 收費模式:按執行個體計費
  • 維護需求:偏低
  • 擴充性:手動或自動調整資源配置
  • 無狀態性:可能為有狀態或無狀態

容器

  • 管理負擔:一般或偏高
  • 收費模式:按容器計費
  • 維護需求:一般
  • 擴充性:手動或自動調整資源配置
  • 無狀態性:可能為有狀態或無狀態

VM

  • 管理負擔:偏高
  • 收費模式:按 VM 計費
  • 維護需求:偏高
  • 擴充性:手動或自動調整資源配置
  • 無狀態性:可能為有狀態或無狀態

無伺服器運算類型

在無伺服器雲端運算領域,通常有兩種服務:函式即服務 (FaaS) 和後端即服務 (BaaS)。

  • 為回應要求,FaaS 會提供執行應用程式邏輯所需的運算資源。這些邏輯 (或函式) 片段會在雲端服務供應商全代管的容器中執行。無伺服器應用程式通常會拆分成個別的函式,每個函式執行一個動作以回應事件。
  • BaaS 會以服務形式提供網頁或行動應用程式的完整後端功能,例如驗證服務、資料庫管理、雲端儲存空間、推播通知與託管等。BaaS 也能讓您免去管理伺服器、容器或虛擬機器的需求。

在開發領域,「無伺服器」一詞通常用於描述 FaaS 服務。不過請注意,就技術而言,FaaS 只是無伺服器技術的一個子集。無伺服器運算涵蓋能讓使用者省去伺服器管理、設定、資源調度和帳單等工作的任何類型服務,包括資料庫、儲存空間、事件串流、訊息傳遞和 API 閘道等。

無伺服器運算的用途

以下列舉幾個最常見和新的無伺服器運算用途:

API 和第三方整合服務

  • 用途:順暢同步處理不同業務應用程式的待開發客戶/客戶資料,例如將 CRM 的資料同步至自動化行銷程式
  • 無伺服器解決方案:由 HTTP 觸發的 Cloud Run 函式會接收來源系統 (例如 Salesforce) 的 Webhook、轉換資料,然後呼叫目的地系統 (例如 HubSpot) 的 API。過程中,通常會使用 Secret Manager 取得憑證
  • Google Cloud 無伺服器產品:Cloud Run functions 和 Secret Manager

排定的動作和依指定條件觸發的動作

  • 用途:自動定期生成並發布報表
  • 無伺服器解決方案:系統每天會執行 Cloud Scheduler 工作,透過 Pub/Sub 觸發 Cloud Run 函式,用來查詢資料倉儲 (例如 BigQuery)、將資料處理成報表,並以電子郵件 API 傳送報表
  • Google Cloud 無伺服器產品:Cloud Scheduler、Pub/Sub、Cloud Run functions 和 BigQuery

IT 流程自動化

  • 用途:自動找出並管理閒置的運算資源,降低雲端成本
  • 無伺服器解決方案:系統每晚會執行 Cloud Scheduler 工作,透過 Pub/Sub 觸發 Cloud Run 函式。接著,這個函式會運用 Compute Engine API 和 Cloud Monitoring,找出並自動停止/刪除閒置的執行個體,再將相關動作記錄至 Cloud Logging。
  • Google Cloud 無伺服器產品:Cloud Scheduler、Pub/Sub、Cloud Run functions、Cloud Monitoring 和 Cloud Logging

即時和非同步處理

  • 用途:處理及充實大量串流資料 (例如使用者活動),以即時取得洞察資訊,並採取適當行動
  • 無伺服器解決方案:使用者點擊流事件串流至 Pub/Sub 後,Cloud Run 函式 (或 Cloud Run 服務) 會取用這些事件,並以來自 Firestore 的資料充實事件,再將經過增補的資料發布至其他 Pub/Sub 主題,進而在 BigQuery 進行即時分析,或提供個人化建議
  • Google Cloud 無伺服器產品:Pub/Sub、Cloud Run functions、Cloud Run、Firestore 和 BigQuery

CI/CD 和 DevOps 工作流程

  • 用途:在程式碼有異動時,自動建構、測試及部署微服務
  • 無伺服器解決方案:Cloud Build 觸發條件會監控 Git 存放區,例如 Cloud Source Repositories。如果偵測到程式碼經過修訂,Cloud Build 會執行測試、建構要推送至 Artifact Registry 的容器映像檔,然後自動將新版本部署至 Cloud Run
  • Google Cloud 無伺服器產品:Cloud Build、Cloud Run、Artifact Registry 和 Cloud Source Repositories

圖片/影片處理

  • 用途:上傳圖片後,自動生成最佳的變化版本,例如縮圖或不同格式
  • 無伺服器解決方案:您將新圖片上傳至 Cloud Storage bucket 後,系統會啟用 Cloud Run 函式,用來處理圖片 (調整大小、轉換格式)、將新版本存回 Cloud Storage,然後更新儲存於 Firestore 的中繼資料
  • Google Cloud 無伺服器產品:Cloud Storage、Cloud Run functions 和 Firestore

AI 應用程式和 AI 代理

  • 用途:使用大型語言模型 (例如 Lllama 3.1、Gemma 2 和 Mistral 等) 執行即時 AI 推論
  • 無伺服器解決方案:Cloud Run 可整合 Gemini API 等 AI 模型、Vertex AI 端點,或已啟用 GPU 的 Cloud Run 服務所代管的模型。此外,Cloud Run 也能做為可擴充的 API 端點,用於託管 AI 代理
  • GCP 無伺服器產品:Cloud Run、Cloud Storage 和 Firestore

無伺服器運算的優點

提高開發人員工作效率

採用無伺服器技術能讓開發人員專心編寫程式碼並將商業邏輯最佳化,而不必費心佈建、管理或擴充基礎架構。

立即可用的擴充能力

無伺服器架構本身就會動態調整資源配置。有別於其他類型雲端運算必須依賴微調規則,無伺服器的自動調度資源功能會隨時運作,並能將配置資源縮減至零。

具彈性的計費方式

無伺服器運算服務的定價模式通常是根據實際用量和執行函式所需時間來計費。你不用為閒置容量付費,因此能降低執行及管理伺服器所需的營運成本。

加快部署速度

透過無伺服器運算,DevOps 團隊能順利定義整合、測試、推送或部署作業所需的基礎架構,進而集中心力編寫程式碼並部署至正式環境。

支援所有語言

無伺服器環境支援任何語言或框架,團隊可以使用最熟悉的語言或框架 (例如 Go、Python、Java、Node.js、.NET 等) 來開發。

無伺服器運算的缺點

無伺服器運算的最大缺點之一,就是這仍是較新的技術。因此,目前還不適合應用在所有可能的用途。

可以確定的是,隨著無伺服器運算技術持續演進,現有的一些弱點將會陸續解決。特別值得一提的是,無論是透過開放原始碼導入無伺服器技術,或是設法提升雲端服務的開放性,以便讓解決方案能在不同平台和環境中使用,目前都已獲得顯著的進展。

  • 適用範圍有限:如果應用程式有特定需求,例如必須長時間執行程序,或需要極低延遲時間等,不一定適合採用無伺服器架構
  • 效能受限:無伺服器函式可能會發生冷啟動情形 (即初次執行的速度較慢),執行時間和記憶體也可能受到限制
  • 受制於相同廠商:各雲端服務供應商的 API 和設定不同,因此遷移無伺服器應用程式的過程可能相當複雜
  • 無法全盤掌握伺服器運作情況:開發人員對底層基礎架構的控管能力有限,導致難以解決效能問題或充分運用資源
  • 啟動速度緩慢:無伺服器函式有時會發生「冷啟動」情形,也就是系統叫用函式的速度較慢,可能影響延遲時間

展開下一步行動

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