macbook air on grey wooden table

Cloud Functions for Firebase 跟 Google Cloud Functions 差在哪?

不知道大家有沒有注意過:Cloud Functions 除了出現在 Google Clould 裡頭,在 Firebase 也看得到它的身影,一樣的服務為何要放在兩個地方?還有,它們倆真的一樣嗎?

當然,第一個問題只有官方知道,我也只是猜測而已:在 Firebase 剛推出時,強調開發者專注寫程式就好,剩下的 Firebase 會幫我們搞定。Google Clould 服務五花八門,很多服務不是單純寫程式可以理解的,不少服務還要具備伺服器管理經驗才有機會接觸,對於純粹寫程式的開發者而言就沒這麼友善。而 Cloud Functions 也是專注在寫程式的服務,跟 Firebase 的初衷如出一轍,將Cloud Functions 放在 Firebase 當然沒問題。

至於第二個問題,它們一樣嗎——答案是否定的。我是先從Google Cloud Functions 開始使用,最近的 Side Project 才用了 Cloud Functions for Firebase,一開始我以為兩者相同,但沒多久我就意識到:差多了!

語言

Google Cloud Functions 支援語言:Node.js, Python, Go, Java, .NET, Ruby, or PHP

Cloud Functions for Firebase 只支援Node.js

我在創了 Firebase 專案後,本來要用 Go 寫 API,但完全找不到選項可修改,最後只好妥協用Node.js 寫。

Firebase 驗證

Google Cloud Functions 需要設定憑證檔案才有辦法存取 Firebase。

Cloud Functions for Firebase 則是不用設定,可以直接使用需要驗證的函式。

規格調整

Google Cloud Functions 設定可以透過網頁調整。

Cloud Functions for Firebase 需要透過 command line 或是寫在程式之中。

例如:新增 / 刪除 / region / memory size / count of instance … etc.

Ref: https://firebase.google.com/docs/functions/manage-functions

Client SDK

只有Cloud Functions for Firebase 支援,提供整好的 protocol 讓 client 使用,驗證資訊直接包在裡面,還滿方便的。

Ref: https://firebase.google.com/docs/functions/callable

結論

對語言有要求請直接用 Google Cloud Functions,這點無庸置疑;若用了 Firebase 裡頭的其他服務,且不排斥 Node.js,Firebase 全家餐吃好吃滿也無不可。整體來看我會覺得Google Cloud Functions 比較有彈性,畢竟設定完憑證還是可以存取 Firebase,而 Client SDK 也沒有方便到非用不可。

有什麼想法嗎?快來跟大家分享你的看法。