5招基礎雲端節省費用手法,以GCP為例
要到雲端平台,也就是公有雲如AWS、Azure、GCP上,最重要的就是成本了。跑不跑的了原先的程式這不用考慮,因為大不了開一台VM,就等於一台電腦在雲端跑。
但這樣會超級浪費成本,因為VM是IaaS的架構,有一大堆的資源會浪費掉,如果像我們是以Windows和MS SQL Server為主的公司,那開發費用浪費最大的就是付給微軟的授權費。
水平擴充等等等下一篇文章在討論,等等文章會寫好。
節省成本第一式-負載監控
這個是雲端節省費用的起手式,好像武功要練蹲馬步,這個大概就是這樣。
地端轉到雲端一定有一個過渡時期,過渡時期一定是先將原本的架構原封不動地搬上雲端,比如一台機器就開VM,如果有兩台機器可以節省成一台,就合併成一台。
第一式,監控CPU與RAM的用量,這個我家的花貓可能都會,只要看數字,低於30%就代表資源浪費了,超過60%就要小心最理想的範圍是在30%~60%。最好越逼近於平均60%。
80%負擔的時候就要加開機器,但這屬於水平擴充的部分,或者就將程式拆開。
第一式就這麼簡單,但要很扎實的監控,只要有浪費,雲端費用就等於是沒有多增加新的效率或者功能,平白送給雲端平台,比銅板丟地板還慘,因為銅板丟地板至少還會彈起來,這個就直接蒸發。
節省成本第二式-轉換架構
這個是每個上雲的人第二個要做的事情,公司一定要有人可以轉換架構,不然全部都用VM雲端平台會很愛你,但老闆可能會Fire掉你為了平台的費用太高了。
VM是最浪費成本的,但有他可以做到的部分,如做一些排程、執行一些程式碼(比如我有夢想做一個監控自己聯盟行銷網站是否有被駭客入侵的程式,這個用VM就很可行)。
但以我用微軟語言在開發程式要放到GCP的時候,我發現一件事,如果我用容器化的話使用者不多的狀況根本連錢都不用出。VM 2 vCPU要59~109 USD,但Cloud Run在使用者不呼叫幾十幾百萬次,大概是沒有費用的。
然後我們團隊開發使用Angular也就是靜態的JavaScript 框架,如果開一台VM架一個Web Server,大多都會教人這樣做,但在GCP就是笨蛋。
因為Firebase Hosting是依照使用狀況付費,JavaScript框架優化好一點一個月再怎樣都不會超過VM的錢。不管VM是Liunx還是Windows。
然後SQL Server從最低階的方案選起,超過80%附載或者資料庫大小超過限制再升級增加機器大小。不要再用VM架設SQL Server了。
然後Cloud Run的vCPU和RAM設定成最小只要不會有出錯,就這樣,沒有人規定大比較好,因為大多半是浪費。
節省成本第三式-降低呼叫的傳回與壓縮
C# Web API一定要開GZIP壓縮,然後如果有一個是查詢庫存存量的功能,傳回1000000筆的庫存存量,保證在流量上的費用爆掉。
寫的時候就要限定傳回的最大筆數,以及夠多條件讓使用者可以選擇自己要查的,越是精準,重複查詢次數就越少,就越少流量費用。
如果有圖片上傳,記得壓縮過再傳,如果有檔案上傳,記得限制檔案大小。
這些都是些微的費用但使用者一多老闆一定來罵你。
節省成本第四式-再一次監控
如果前三個都做到很好的話,比如像我又用Shared VPN+Cloud SQL+Cloud Run+ Firebase hosting。
用戶上線後的一個月要頻繁的監控使用流量,最好在程式內部也加一個收集資料的代碼(不要收集敏感資料,收集使用狀態資料)。
我就有在程式碼內部紀錄呼叫了哪個函數,我內部運算時間多少,然後GCP可以協助統計真正的API傳回時間。
還有要看同時間的Cloud Run容器執行了幾個,大概會花多少成本,拜託ChatGPT幫忙算一下,分析一下就知道哪裡的費用過高。
過高有幾個方法,減少功能,或者做壓縮等處理。盡可能讓運算在Client端做。
節省成本第五式-確認架構沒有多餘的項目
整個雲端架構就要像一個人體一樣,不能有多餘的器官或者什麼,如果有盲腸,在雲端就要割掉。
SQL不用到Web版,就用Express,沒有什麼理由可以用Express改成用Web北加收33 USD一個月。
Windows VM如果可以 Shared Core 2 vCPU省授權費,就沒有必要用到獨立vCPU被多收一堆錢。
RAM 4GB夠的為何要用8GB?然後Cloud Run的容器如果要執行三個功能,其中兩個功能只需要用到128MB RAM,為什麼不切成三個容器,Main,sub1,sub2,只有Main RAM用到512 MB?
這些都是多餘的部分。
再來是如果有抵免額的服務,如果不超過抵免額的狀態下等於是免費,不用等於自己虧了。
結論
雲端的費用很多都很小,但小小的費用一堆加起來跑個3年大概就可以買一台很好的電腦。
很多東西都是積少成多的省,才有辦法保障公司的利益。
我們公司現在雲端剛上線,我用容器化等架構,讓一個月可以節省到不到150USD,一年下來我剛剛算頂多 1584 USD。
擴充要擴充很快,只要負擔超過80%我立刻就會擴大服務的規模。但沒到的時候,為什麼要預防性的先付款?
如果全部都用VM,我們公司少說一年得花5000USD,但用容器化可以變成1584 USD,這個讓我自己也很有成就感,雖然省的是公司的錢。