現在我們要介紹和 App Engine 同樣具備「上傳即部署」特性的服務:Cloud Run Functions。
雖然 App Engine 和 Cloud Run Functions 都提供了無需管理基礎設施的便利性,但兩者在應用場景上有著重要差異。App Engine 適合部署完整的 Web 應用程式,而 Cloud Run Functions 則專注於輕量級的函式服務,讓開發人員能夠實現事件驅動的微服務架構。
什麼是 Cloud Run Functions?
Cloud Run Functions 原名叫 Cloud Function,是 Google Cloud 的 Functions as a Service (FaaS) 平台,讓你可以撰寫小型的、專注於單一任務的函式,不用管理機器。支援的程式語言包含 .Net、Go、Java、Node.js、PHP、Python 和 Ruby。
這些函式會在事件發生時自動執行,用完即停,真正實現了「用多少算多少」的理念。
想像一下,你經營一家網路商店,當客戶下單時需要:
- 發送確認郵件給客戶
- 更新庫存數量
- 記錄銷售資料到分析系統
- 通知物流部門準備出貨
在傳統單體式架構中,這些功能可能都寫在同一個應用程式中。但使用 Cloud Run Functions,你可以為每個任務建立獨立的函式,當訂單事件發生時,這些函式會自動被觸發 (Trigger) 執行,就是所謂的「事件驅動」特性。
另外 Cloud Run Functions 也能 Autoscale,當同時有大量事件需要處理時,平台會自動建立多個函式執行個體 (instance;指輕量級的容器) 來並行處理;當需求降低時,也會自動縮減執行個體數量,甚至降到零。
所以和 App Engine 一樣,你只需為函式實際執行的時間和資源消耗付費,沒有請求時完全不收費。
Cloud Run Functions 的觸發機制
關於觸發機制,Cloud Run Functions 可以透過多種方式被觸發:
HTTP Trigger:最常見的觸發方式,函式會曝露一個 HTTPS 端點,可以透過 REST API 呼叫。適合建立微服務 API、Webhook 處理器等。
Cloud Storage Trigger:當 Google Cloud Storage 中的檔案被建立、刪除或修改時觸發。適合檔案處理、圖片縮放、資料備份等場景。
Pub/Sub Trigger:當 Cloud Pub/Sub Topic 收到訊息時觸發。適合非同步訊息處理、事件串流處理等。
Firebase Trigger:與 Firebase 服務整合,可以因應 Firestore 資料庫變更、使用者註冊、帳號變更事件等。
Cloud Scheduler 觸發器:定時執行函式,類似 Cron Job 的功能。
建立 Cloud Run Functions 示範
接著我們來建立一個簡單的函式看看,點擊主選單「Clodu Run 函式」再點擊「編寫函式」:

給函式命名、設定地區和程式語言版本,你看到它有產生一個端點網址,那就是之後對外服務的網址:

往下看到驗證的部分,我們要讓所有網路上的任何人都可以存取,所以要取消「使用 IAM 驗證傳入要求」。另外在服務資源調度的部分,我們要把「執行個體數量下限」改成 0。

再來 Ingress 的部分,我們要勾選「全部」,這樣子才能開放外部進來存取喔!然後我們再點擊右下角的展開按鈕,查看進階設定:

大部分內容都可以保持預設,主要看的是資源的部分,在正式的環境當中,你可以調整記憶體和 CPU 的規格,在這裡我們保持預設就好:

「執行個體數量上限」預設是 100,如果擔心它真的開到 100 台,可以像我一樣調成 5 就好,其他保持預設,最後按下「建立」:

接下來畫面會自動跳轉到「來源」這個頁籤,你可以在下方編輯程式碼,在這裡我們就保持不變,直接按下「儲存並重新部署」:

接著它會在背景作業,將現有程式碼打包成容器,等它幾秒鐘後,就可以點擊網址,並且看到網頁了。
