Cloud Run 計算成本方法提示
Cloud Run的成本計算方法相當困難,這邊只能提供一個提示,也就是我在為公司計算Cloud Run的成本的時候是怎樣計算才準確的,這邊不提供計算啟動容器使用兩倍CPU的部分。因為兩倍CPU要啟動多久實在太難計算了。
先不管抵免額
Cloud Run可能因為怕被網路上的Bot亂呼叫,所以有提供一定的抵免額,抵免額可能在您看這篇文章的時候又不一樣,因此先不管抵免額。
且如果只有抵免額的呼叫,說真的也不用計算成本,就是0而已。
Cloud Run成本有以下:
- vCPU時間(秒)
- RAM時間(秒)
- 呼叫次數
- 網路流量
這邊要注意的是vCPU時間並不是您的程式執行完就算結束,Cloud Run有一個很神奇的機制是會持續容器一陣子,然後閒置,最後關閉。
持續容器一陣子和關閉是要計費,閒置則是不計費,閒置會多久,說真的沒人知道,只有設計Cloud Run的團隊才會知道,還好閒置不計費。
開啟容器也要計費,所以整體vCPU的費用是開啟容器時間+容器持續時間+關閉時間。
開啟容器可能1秒左右,如果有用過就知道最多可能到2秒,容器持續時間並不是執行完程式就關閉,必須去控制面板查看每一個容器大概持續多久(這個跟每家公司在運用Cloud Run的狀態有關我沒辦法提供數據),關閉的時間也是不確定多久。
因此一堆不確定多久變成vCPU和RAM時間最難抓。但容器如果在持續中又被調用了,就會繼續持續,省略開和關,所以這個部分費用超麻煩。
那要怎麼辦?
寫一個壓力測試軟體來測試自己程式直接產生成本就好了。壓力測試軟體可以模擬同時有幾個使用者輪替,這樣就好算了,跑個2天就知道了。
這樣大概還在抵免額,但GCP會有金額產生隨即給折扣掉。
我就寫了一個模擬10個重度使用者的程式,得知一天的成本大約1~2 NTD一個使用者。而我們公司的使用者都是中度輕度的,所以一天不會超過1 NTD。我們的程式是手機版的,並不是電腦操作的Web ERP,所以費用相對低。
也可以直接讓公司的同事協助測試,比如一天會呼叫5000次API,就自己或讓同事間隔一段時間總共呼叫500次,然後大概乘以10倍就是預估,但怎樣都不會準確,只能抓個大概。
總之估算每天呼叫的API次數要準,費用就會比較精準。
呼叫次數要收費?
呼叫次數的費用聽起來很可怕,但真正算起來以後他的費用是最低的,除非是百萬次等級以上的呼叫,不然呼叫API費用真的不是重點。
就算寫一個Pulling的程式,1秒鐘呼叫一次API(我想應該沒人會寫這麼狂的程式),一天也86400次而已,一個月抵免額度就200萬次了,所以成本不在於呼叫的次數,在於vCPU時間和RAM的時間以及每次呼叫的流量。
呼叫次數是很考驗設計的腦,要怎樣節省最多次數的呼叫又能達到最高效益。
流量要收費?
傳到Cloud Run的流量不用收費,但Cloud Run出來的流量要收費,所以Cloud Run一定要經過Gzip壓縮才行,不然流量費用會很可觀。
尤其是有傳圖檔或者影片,費用只能轉嫁給客戶,不然一定虧本。
我想知道詳細計算要怎辦?
雖然是Google Cloud,但可以去問Skype的Bing,它會算得好好的給你。
但那個不包含我剛剛說的不可預知的費用部分,比如開啟容器和關閉容器的費用。
大概說一下我預估以一個Web ERP的話,一天一個人的費用不會超過10 NTD,除非呼叫後端太頻繁,也就是前後端的比例沒算好。大多一個人一天的費用在1~3 NTD就很誇張了。