Google 的 Serverless 產品對比:Cloud Run、Cloud Functions、App Engine

/images/2021-02-08-gcp-serverless-comparation/gcp-serverless.png

來源:https://www.splunk.com/en_us/blog/devops/gcp-serverless-comparison.html

作者:Splunk

譯者:donghui

本文來源: ServerlessLife 公衆號

Serverless 平臺的主要優點是,它們使您可以專注於編寫代碼,而不必關心管理基礎結構,自動擴容或爲所用資源支付更多費用。

這使得 Serverless 計算非常適合以下用例:

  • 無狀態 HTTP 應用程序
  • Web 和移動後端
  • 實時的或事件驅動的數據處理

Cloud Run、Cloud Functions 和 App Engine 都是 Google Cloud 提供的 Serverless 平臺,但是它們之間有細微差別,在某些情況下某個平臺可能會比其他平臺更受歡迎。

Google Cloud Run:Serverless 容器

Cloud Run 由 Knative 構建, 是 Google 最新的 Serverless 產品。其他 Serverless 平臺使用事件驅動函數作爲部署的主要單元,而 Cloud Run 使您可以將代碼打包在無狀態容器中,然後通過 HTTP 請求調用它。

在 Google 完全託管環境中部署 Cloud Run 容器可爲開發人員提供 Serverless 的通常優勢(無需管理基礎架構,按使用付費,更容易自動縮放),還支持任意數量的編程語言、庫或系統二進制文件。Cloud Run 還可以在 Google Kubernetes Engine(GKE)上部署容器,並能夠爲後一種場景的 Serverless 容器專門配置硬件需求。

有了這種靈活性,Cloud Run 的用戶可以使用他們已經用來在 Google Cloud 上打包和運行容器的工具輕鬆地運行 Serverless 工作負載,或者將有狀態和無狀態工作負載一起部署。

Google Cloud Functions: Serverless 函數

儘管 Cloud Run 接受容器並通過 HTTP 請求來調用,但 Cloud Functions 仍然是 Google 的事件驅動型 Serverless 平臺。與打包在 Docker 容器中不同,您需要將代碼部署爲函數。Google 支持編寫 Cloud Functions,因此也可以通過 HTTP 請求調用它們,或將其設置爲根據後臺事件觸發。

def hello_get(request):

    """HTTP Cloud Function.

    Args:

        request (flask.Request): The request object.

        <http://flask.pocoo.org/docs/1.0/api/#flask.Request>

    Returns:

        The response text, or any set of values that can be turned into a

        Response object using `make_response`

        <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>.

    """ 

return 'Hello World!'

 

 

Cloud Functions 對代碼的部署方式施加了更多限制(顯然易見,您需要將其打包爲一個函數),並且僅支持一組特定的語言(您可以使用 JavaScript、Node.js、Python 3,或 Go 運行時),但可以使用您的雲環境中的事件觸發功能。

Google App Engine: Serverless 應用

App Engine 是 Google 針對 Web 和 API 後端的完全託管的 Serverless 應用程序平臺。儘管 Serverless 函數使您可以輕鬆地運行輕量級和獨立的函數,但使用 Cloud Functions 運行更復雜的應用程序可能會很困難。對於想要構建具有多種功能的 Serverless 應用程序或保留超出單個請求範圍的某種程度的上下文的開發人員,Google App Engine 提供了一種引人注目的選擇。

在 Google App Engine 中,您只需獲取代碼並將其部署到 Google 上,然後爲您消耗的資源付費-這在 App Engine 上作爲包含一個或多個服務的單個資源運行。對於每種服務,您都可以部署該服務的一個或多個版本,這些版本又可以在一個或多個實例中運行,具體取決於每個版本處理的流量。

/images/2021-02-08-gcp-serverless-comparation/app-engine.jpg

如上所示,使用單個命令從您的應用程序目錄在 Google App Engine 上部署 Hello World。

根據您的特定需求,您可以在兩種類型的 App Engine 環境中選擇一種來運行代碼。如果您要運行需要快速擴容的應用程序,並且使用 App Engine 支持的特定語言版本編寫,那麼 Google 建議您使用標準環境。對於具有更穩定流量的應用程序,使用自定義運行時或不受支持的編程語言在 Docker 容器中運行,或者要訪問在運行在 Compute Engine 上的 Google Platform 項目的其他部分,請使用 App Engine 靈活環境。

在 Cloud Run、Cloud Functions 和 App Engine 之間進行選擇

通常,Serverless 平臺最好用於構建無狀態應用程序,並且無需管理基礎架構。一些示例包括:

  • 快速製作功能原型
  • 快速自動縮放 Web 應用程序
  • 爲了響應後臺事件執行一個任務

在確定哪種 Serverless 平臺最適合您時,請記住以下幾點:

  • 如果您已經將代碼打包在 Docker 容器中或正在 Google Cloud 中運行 Kubernetes 集羣,請針對您的 Serverless 工作負載考慮使用 Cloud Run 或 Knative。
  • 對於運行響應實時事件的代碼,或在不使用容器的情況下處理請求,請使用 Cloud Functions。
  • 如果您需要在一個地方放置多個函數並且只想部署整個應用程序,請使用 App Engine。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章