什麼是無伺服器模式?

無伺服器運算方式徹底改變了應用程式開發作業,讓開發人員可以專注於編寫程式碼,完全不必擔心基礎架構的問題。與傳統運算方式相比,無伺服器運算模式具備多種優勢,包括不必管理伺服器、無須預先佈建、可自動調整資源配置,以及僅須為您所使用的資源付費。這些優勢讓無伺服器模式非常適合用於無狀態 HTTP 應用程式、網路、行動裝置、IoT 後端、批次與串流資料處理、聊天機器人等用途。


GCP 無伺服器運算組合

Cloud Functions

無伺服器功能與事件

Cloud Functions

事件驅動的運算平台可以輕鬆連結及擴充 Google 和第三方雲端服務,並建構可擴充至全球規模的應用程式。

瞭解詳情
App Engine 標準環境

無伺服器 HTTP 應用程式

App Engine 標準環境

這個全代管無伺服器應用程式平台適用於網路和 API 後端。您可以使用熱門的開發語言,完全不必擔心基礎架構的管理問題。

瞭解詳情
Cloud Run

無伺服器容器

Cloud Run

無伺服器運算平台可讓您執行能透過 HTTP 要求叫用的無狀態容器。Cloud Run 可做為按用量計價的全代管平台使用,也可以做為 GKE 外掛程式使用。

瞭解詳情

哪種無伺服器運算平台最適合您?

無伺服器選項

* App Engine 標準環境支援 Node.js、Python、Java、Go、PHP

* Cloud Functions 函式支援 Node.js、Python、Go

用途

網頁應用程式

網頁應用程式

App Engine 標準環境適用於以 Node.js、Python、PHP、Java 和 Go 執行、且需要極少量人工管理作業的網頁應用程式。您可以使用任何語言程式庫以標準的慣用方式編寫應用程式。App Engine 標準環境可快速部署及擴充回應能力,因此非常適合處理爆增的工作負載。

非同步後端處理服務

非同步後端處理服務

Cloud Functions 適合用於回應雲端中的資料事件及處理輕量級資料,例如調整已傳送到 Cloud Storage 的映像檔大小,或在修改 Firestore 資料庫中的值之後用來驗證資料。

行動後端

行動後端

對於行動應用程式的傳統 REST API 後端來說,App Engine 標準環境是一個可監控、更新及擴充託管環境的應用程式平台,您只需要專心編寫行動後端服務程式碼即可。Firebase 提供了一套強大的後端服務,可直接整合至您的行動應用程式,包括即時 NoSQL 資料庫、驗證、託管、檔案儲存空間等。Firebase 整合了 Cloud Functions,讓您可以輕鬆連結其他 Google Cloud Platform 服務。

API

API

如果您要建構一個簡單的 API (可透過 HTTP 或 Cloud Pub/Sub 存取的一小組函式),建議您使用 Cloud Functions。這項服務專為暴增的工作負載設計,其程式設計範例 (函式) 可協助小規模的後端程式碼保持井然有序。如果是較為複雜的 API (例如包含許多路徑的 REST API),建議您改用 App Engine 標準環境,這樣整理大量函式時會比較輕鬆。如果您使用 Cloud Endpoints 管理 API,建議您使用支援 Cloud Endpoints 的 App Engine 標準環境 (需搭載 Python 2.7 和 Java 8)。

定期作業

定期作業

Cloud Scheduler 可以依照使用者定義的時間表,傳送排定的 HTTP 要求來觸發作業。這項服務還可以明確指定 App Engine 或 Cloud Functions 和 Cloud Run 等 HTTP 端點。

快速執行原型設計及拼接 API

快速執行原型設計及拼接 API

如果是需要快速執行原形設計和 (或) 拼接多個 API 與服務的小規模專案或「黑客松」專案,建議您使用 Cloud Functions。這項服務的程式設計範例除了可以讓您快速開發小規模應用程式以外,還能「黏貼程式碼」,將既有的 API 和服務拼接在一起。

執行各供應商通用的容器

執行各供應商通用的容器

Docker 容器符合業界標準,可在任何雲端或內部部署環境中執行。Cloud Run 能以無伺服器要求-回應的方式執行容器。除非您需要自訂 GPU 等硬體或必須使用 Kubernetes 叢集,否則我們建議您使用 Cloud Run。在此情況下,您可以在 Google Kubernetes Engine 叢集中執行 Cloud Run on GKE。

結合無伺服器和有狀態工作負載

結合無伺服器和有狀態工作負載

Cloud Run on GKE 可讓您輕鬆地將無伺服器和有狀態的工作負載一起執行。舉例來說,您可以將 MongoDB 從 Marketplace 部署至 GKE 叢集,做為無伺服器工作負載的文件存放區使用。GKE 可讓您在叢集中靈活地執行任何內容,您也可以同時使用 Cloud Run 部署無伺服器工作負載。

產品比較

App Engine 標準環境 Cloud Functions Cloud Run (Beta 版)1 Cloud Run on GKE (Beta 版)1
部署成果 應用程式 函式 容器 容器
將資源調度降至零 勾選符號 勾選符號 勾選符號 Pod2
免費方案 勾選符號 勾選符號 勾選符號
WebSocket 勾選符號
語言 Java、Node.js、Python、Go、PHP Node.js、Python、Go 不限 不限
存取權控管 Oauth 2.0、CICP、Firebase 驗證、Google 登入、Users API Invoker IAM 權限 Invoker IAM 權限、CICP、Google 登入、Firebase 驗證 僅限叢集、僅限 VPC
HTTP/2 和 gRPC 勾選符號
自訂網域 勾選符號 勾選符號 勾選符號
要求逾時 1 分鐘3 9 分鐘 15 分鐘 15 分鐘
GPU 和 TPU 勾選符號
VPC 連線 勾選符號Beta 版1 已加入藍圖 勾選符號

1. Beta 版軟體不提供服務水準協議

2. Cloud Run on GKE 將 Pod 數量調整為零。每個叢集的節點數量不得調降為零,且系統會在缺少要求的情況下對這些節點進行計費。

3.自動調整資源配置:HTTP 要求的期限為 60 秒。

進階提示與最佳做法

建議您一併考量以下額外因素。

如果您的架構包含無法自動調度資源或無伺服器的元件,則可以自動調度資源的元件可能會造成前述元件超載。您可以使用 Cloud Pub/Sub 主題並在 Cloud Functions 中設定 max_instances 屬性,即可將針對無法自動調度資源元件發出的呼叫加入佇列。
許多 GCP 產品都有免費方案,提供大部分 (如果不是全部) 輕量級低流量應用程式的資源用量。您可以使用 Cloud Functions 輕鬆設定帳單限制。
詳情請查看這個教學課程
以設計方式來說,Cloud Functions 只能為每個執行個體處理一個要求,藉此確保每個要求都能分配到充足的運算單元和記憶體。在此情況下,使用 Cloud Functions 可能會讓快速資源調度的速度變慢,但 App Engine 標準環境、Cloud Run 和 Cloud Run on GKE 可以為每個執行個體處理多個並行要求。因此,這些服務可以為每個執行個體處理更多流量,藉此加快資源調度速度,但同一個執行個體中的所有要求必須共用資源。
Cloud Run 與 Knative Open-Source API 和執行階段環境相容。因此,您可以移動 Cloud Run、Cloud Run on GKE 或自有 Kubernetes 叢集上的無伺服器工作負載。如果您需要使用特定的 GKE 功能 (例如自訂機器類型或存取 VPC),您也可以先透過 Cloud Run 開始執行工作負載,然後再改為使用 Cloud Run on GKE 執行。