iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0

一、前言

昨天拜訪了聞聲錄字的俠客 Google Cloud Speech-to-Text,留下了一個問題:
要請這位高手出手,得先出示令牌(Google Cloud 的憑證)。
但令牌不適合發給每一支長輩的手機,萬一外流,帳單會寄到府上。

這其實是很多 App 開發者都會遇到的問題,特別是沒有自己後端的獨立開發者:

  • App 想用 Gemini、Cloud STT 這些雲端服務,金鑰要放哪裡?
  • 不想自己租伺服器、裝系統、顧機器,有沒有更省事的做法?
  • 用量突然暴增,帳單會不會失控?

今天就來逛逛府外的一整條商業街「Firebase」,
並認識街上專門替人押送貨物的鏢局「Cloud Functions for Firebase」!


二、Firebase

(一)簡介

官方首頁的介紹:
Firebase is a platform of services to help you and AI agents build and run intelligent apps with more speed, security, and scalability.

意思是:
Firebase 是 Google 提供的一整套服務,
協助開發者更快、更安全、更容易擴展地打造並營運 App。 

重點 說明
涵蓋範圍 為 App 開發的完整生命週期設計:從打造到上線後的營運
服務對象 行動 App、Web App,也包含遊戲
支援平台 Apple 平台、Android、Web、Flutter、Unity、C++(伺服器端另有 Admin SDK)
主要產品分區 AI、Build(打造)、Run(營運)
底層 以 Google Cloud 為基礎;每個 Firebase 專案,背後都是一個 Google Cloud 專案

用商業街來比喻:
街上有幫忙 打造 App 的店家(登入、資料庫、檔案、後端程式) ,
也有上線後 照顧 App 的店家(當機回報、使用分析、推播),還有 AI 相關的店家 。

其中 Build(打造)的服務,
就是常聽到的 BaaS(Backend as a Service,後端即服務): 登入、資料庫、檔案儲存這些後端功能,不用自己架伺服器,直接使用現成的雲端服務。

(二)產品地圖

1. AI

產品 做什麼
Firebase AI Logic 從 App 直接呼叫 Gemini 模型
Genkit 開源框架,用來在伺服器端開發 AI 功能
Gemini in Firebase Firebase 主控台裡的 AI 助理
AI 工具(agent skills、MCP server) 讓 AI agent 也能使用 Firebase 的工具

2. Build

產品 做什麼
Authentication 使用者登入:匿名、Email、Google、Apple 等
Cloud Firestore 文件型 NoSQL 資料庫,可以即時同步
Realtime Database 以 JSON 樹狀結構儲存、低延遲同步的資料庫
SQL Connect 以 Cloud SQL for PostgreSQL 為基礎的關聯式資料庫
Cloud Storage for Firebase 存放使用者上傳的圖片、音訊、影片
Cloud Functions for Firebase 在雲端執行後端程式(今天的主角)
App Check 確認請求來自正版 App、未被竄改的裝置
Hosting、App Hosting 部署網站與 Web App

3. Run

產品 做什麼
Crashlytics 當機回報
Performance Monitoring 效能監控
Test Lab、App Distribution 在雲端裝置上測試、發佈測試版
Google Analytics 使用行為分析
Cloud Messaging(FCM) 推播通知
Remote Config 不發新版,就能調整 App 的設定
A/B Testing、In-App Messaging 比較不同版本的效果、App 內訊息

(三)計費方案:Spark 與 Blaze

Firebase 有兩種方案:免費的 Spark,以及隨用隨付的 Blaze。

比較項目 Spark Blaze
付款資訊 不需要 要連結 Cloud Billing 帳戶
免費產品(Crashlytics、FCM、App Check、Analytics 等) 完整使用 完整使用
有免費額度的付費產品(Firestore、Realtime Database 等) 只有免費額度 免費額度,超過的部分隨用隨付
Cloud Functions 不能部署(可以在本機模擬) 可以部署
Cloud Storage for Firebase 不能使用 可以使用,仍有免費用量
Google Cloud 付費服務(Cloud Run 等) 不能使用 可以使用
超過免費額度時 該產品當月停用 照用量計費

小提醒:

  • 方案套用在整個專案,專案裡的所有 App 共用同一個方案。
  • 在 Google Cloud 主控台連結帳單帳戶,或在同一個專案開始使用 Cloud Run 等 Google Cloud 服務,專案會自動升級成 Blaze。

Cloud Functions 在 Blaze 的每月免費額度(Firebase 價格頁,2026 年 9 月):

項目 每月免費 超過之後
呼叫次數 200 萬次 每百萬次 US$0.40
GB-秒(記憶體 × 執行時間) 40 萬 依 Google Cloud 價格
CPU-秒 20 萬 依 Google Cloud 價格
對外網路流量 5 GB 每 GB US$0.12

部署函式時會建置容器映像檔,這部分另有免費額度(Cloud Build 每天 120 分鐘、Artifact Registry 儲存 500 MB)。 官方提到容器儲存可能產生小額費用,所以就算用量都在免費額度內,Cloud Functions 仍可能出現少量的帳單。

(四)Blaze 的防爆帳單工具

隨用隨付很有彈性,但也讓人擔心帳單失控。Blaze 有三種工具可以搭配使用:

工具 做什麼 會暫停服務嗎
預算提醒(alerts-only budget) 花費到設定的門檻時寄 email 不會
設定花費上限(spend cap,Preview) 某項服務的當月花費達到預算時,暫停該服務到月底 會
API 配額(quota) 限制 API 的使用速率 超過時回傳錯誤

設定花費上限的幾個重點:

重點 說明
支援的服務 目前只有 Firebase AI Logic、App Hosting、Cloud Functions、Extensions
不是即時的硬上限 用量回報有延遲,可能晚幾分鐘才生效,這段時間的費用照常計算;官方建議設得比真正的底線再低一點
以服務為單位 一個花費上限,只管一個專案裡的一項服務
下個月自動恢復 被暫停的服務,下個月初會自動恢復,也可以手動解除
設定位置 Firebase 主控台:Settings > Usage and billing > Details & settings

Cloud Functions 的花費上限,管的是函式本身(底層的 Cloud Run functions);
函式裡呼叫的 Cloud STT 屬於另一項服務,目前不在花費上限的支援清單上。
可能需要替這些服務另外設預算提醒,並搭配 API 配額一起控管。

另一個需要留意的地方:
專案升級 Blaze 之後,Gemini Developer API 的呼叫都會改成隨用隨付,
不再適用免費層。
想用 Cloud Functions,又想用 Gemini 的免費層時,這點要一起考慮。


三、Cloud Functions

(一)簡介

官方介紹:
Cloud Functions for Firebase is a serverless framework that lets you automatically run backend code in response to events triggered by background events, HTTPS requests, the Admin SDK, or Cloud Scheduler jobs.

意思是:
把後端程式交給 Google 保管與執行,有事件或請求時才自動執行,不用自己管理伺服器。

官方列出的三個特點:

特點 說明
整合 Firebase 與 Google Cloud 可以回應 Authentication、Cloud Storage 等產品的事件,也能透過 Admin SDK 操作其他 Firebase 服務
免維護 一個指令就能部署,之後依使用量自動擴縮;不用處理憑證與伺服器設定
邏輯私密且安全 程式在伺服器上執行,與 App 隔離,不會被竄改或反組譯

(二)為什麼 App 開發需要 Cloud Functions?

有些事情,只靠 App 自己做會遇到限制:

需求 只靠 App 的情況 交給 Cloud Functions
呼叫需要金鑰的 API 金鑰打包進 App,就有機會被取出 金鑰留在雲端,App 只呼叫函式
不能被竄改的邏輯(計分、發獎勵) App 端的程式可能被修改 在伺服器上執行
控制用量(每人每天幾次) App 端的限制可能被繞過 在函式裡檢查身分與次數
資料變動後要做的事 App 要開著才做得到 由事件觸發
定時執行的工作 App 沒開就不會執行 排程函式
接收第三方通知(webhook) App 沒有固定網址可以接收 HTTP 函式提供固定網址

談到金鑰,有一個可能混淆的地方:

金鑰 可以放進 App 嗎 官方說明
Firebase API key(firebase_options.dart裡那一串) 可以 只用來識別專案與 App;資料安全靠 Security Rules、App Check、IAM
Gemini API key 正式環境不建議 編譯進 App 的金鑰可以被取出,官方建議透過後端代理呼叫

Firebase API key 不是機密,Gemini API key 是。兩者名字很像,性質不太一樣。
前提:Firebase API key 只拿來用 Firebase 的服務;
不要設定這把 Firebase API key 去呼叫其他付費的 API。

(三)不一定需要 Cloud Functions 的情況

有些需求,其他做法可能更直接。
這類比較不同方案得失的評估,常稱為技術選型或權衡分析(trade-off analysis):

情況 可以考慮 說明
運算能在手機上完成 地端處理 不需要網路、不另外計費、延遲低;例如本系列介紹過的 MediaPipe、sherpa-onnx
只想從 App 呼叫 Gemini Firebase AI Logic 官方的 SDK 與代理服務,Gemini Developer API 的金鑰不用放進 App;2026 年 11 月 2 日起要強制啟用 App Check
讀寫使用者自己的資料 Firestore、Cloud Storage 搭配 Security Rules App 直接讀寫,權限由規則控管
需要長連線、WebSocket,或想用其他程式語言 Cloud Run 服務 Cloud Functions for Firebase 支援 JavaScript、TypeScript、Python,另有 Dart 實驗性支援(目前只有 HTTP 與 callable 函式);Cloud Run 可以執行任何能包成容器的程式。彈性更大,要自己處理的事情也比較多

Cloud Functions 最能發揮的,是一定要在伺服器上做的事:
保管憑證、不能被竄改的邏輯、事件觸發與排程。
其他需求,可以先比較不同做法的成本與維護負擔。

(四)運作方式:從部署到執行

部署時

步驟 發生什麼事
1 Firebase CLI 把程式碼壓縮後,上傳到專案的 Cloud Storage
2 Cloud Build 建置程式碼,產生的容器映像檔存進 Artifact Registry
3 新版函式上線,舊版的執行個體被清掉

執行時

階段 發生什麼事
待命 沒有請求時,執行個體可以縮到 0
觸發 事件或請求符合條件,函式開始執行
擴縮 忙碌時自動增加執行個體,閒置時回收

縮到 0 之後的第一個請求,要先把執行環境準備好,
稱為冷啟動(cold start),通常會慢一些。
就像員工都回家休息了,第一位客人上門時,得先把人叫回來。

兩個版本

比較項目 1st gen 2nd gen
底層 原始版本 部署成 Cloud Run 服務
最長執行時間 9 分鐘 HTTP、callable 60 分鐘;排程、Task queue 30 分鐘;其他事件 9 分鐘
並行 一個執行個體一次處理 1 個請求 一個執行個體最多同時處理 1,000 個請求

官方建議新的函式盡量使用 2nd gen。

觸發方式:函式什麼時候會執行

類型 什麼時候執行 例子
HTTP 函式(onRequest) 收到 HTTP 請求 公開 API、webhook
Callable 函式(onCall) App 透過 Firebase SDK 呼叫 App 請後端做某件事
排程函式(onSchedule) 到了設定的時間 每天清理資料
Task queue 函式(onTaskDispatched) 佇列分派工作 需要限速、重試的長工作
Firestore 事件(例如 onDocumentCreated) 文件新增、修改、刪除 資料變動後發通知
Cloud Storage 事件(例如 onObjectFinalized) 檔案上傳、刪除 產生縮圖、處理音訊
Authentication 事件 註冊、登入之前;帳號建立、刪除之後 限制誰能註冊、寄歡迎信

四、小結

今天逛了 Firebase 這條商業街,也認識了街上的鏢局 Cloud Functions for Firebase:

  • Firebase:官方定位是涵蓋 App 完整開發生命週期的服務平台,產品分成 AI、Build、Run 三區。
  • 計費:Cloud Functions、Cloud Storage 都需要 Blaze;預算提醒不會暫停服務,花費上限(Preview)目前只支援四項服務,也不是即時的硬上限。
  • Cloud Functions:有事件或請求才執行的後端程式,適合保管憑證、不能被竄改的邏輯、事件與排程。

令牌交給鏢局保管、伺服器交給 Google 打理、請帳房幫忙盯著花費:
文章開頭的三個問題,都找到了對應的做法!


五、預告

認識了鏢局的規矩,明天就來正式開張:
建立 Firebase 專案、寫下第一支函式,
在本機模擬測試、部署上線,再讓 Flutter App 呼叫它。

明天就來開張鏢局:Cloud Functions for Firebase(中)!

感謝有緣看到這邊的你~
希望佛菩薩也祝福你:🌟平安開心 健康自在🌟
南無觀世音菩薩🍀 南無地藏菩薩🏠 南無阿彌陀佛☀️


上一篇
雲端語音辨識:Google Cloud Speech to Text
下一篇
Cloud Functions for Firebase(中)
系列文
Build on Google AI :長者照護 —— 口腔機能訓練 與 延緩認知退化 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言