C# 使用 Google Cloud Run 心得
我們的一個全雲端產品直接跳到無伺服器架構的容器化部署,使用Google Cloud Run。
至於語言是挑選C#,第一個原因是我20歲以後程式母語就是C#,第二個原因是總經理指定(說了等於沒說)。
C#寫API好嗎?
C#寫API說真的比想像中的好,效能即使加上Token驗證(JWT差不多驗證方法)與資料庫帳號密碼驗證(要用Dapper呼叫資料庫),運行不會超過20ms。
也就是在判斷一個帳戶只能有一個使用者的時候的登入確認,很快就可以傳回然後到下一步,不會有任何體感的延遲。
所以要我說C#寫API好嗎?我絕對會說好!
C#可以在Cloud Run上執行嗎?
Cloud Run是只要容器化的東西都可以在上面執行,包含Web Server,我還看過有人把WordPress放上面。
.NET 7.0(開發當時最新版本),只要有Dockerfile就可以用Cloud Build做到容器化然後部署到Cloud Run上面。
因此C#可以在Cloud Run上面執行僅限於.NET Core以後版本且容器化了。
容器化很難嗎?
容器化不難,難在於如果出錯的時候排除錯誤比較難,因為語法要熟練才行。
容器化我這邊不教學,要學先學docker,然後就知道容器是什麼。
Cloud Run跑C#心得
Cloud Run跑C#比較遺憾的,C#佔用RAM相當多,所以128 MB的Cloud Run是跑不動,一定要開256MB+,所以會比較消耗成本(但其實也沒多少,除非一個月要呼叫幾千萬次)。
Cloud Run跑C#相當穩,目前我還沒遇到一次執行例外。
缺點是Cloud Run沒有固定IP,要用VPC的方式才可以做到有固定IP,會消耗成本。
要固定IP做什麼?如果防火牆例外只給一個IP,就要固定IP。
Cloud Run要用VPC的區網要額外的Serverless VPC Connector(要費用)。
有冷啟動時間,因為每次執行容器有可能需要啟動容器,久了沒用會關掉省費用。
不然其實目前看起來即使被BOT掃也不會造成多少費用。
結論
如果是微軟的工程師,又想要走GCP,Cloud Run比開VM然後付了50+ USD 一個月給微軟只因為Windows的授權費好太多了。
尤其使用多少收多少錢,這點對於剛開始營運很有利,費用太高就轉GKE,容器可以直接轉移。