Google Cloud Platform(GCP) VS HEROKU 小資使用心得
前言
最近試著把side project部署在雲端主機上,也順便學習雲端主機的部署與維運
對於剛起步的小專案,免費絕對是首要考量!
HEROKU本身就有免費方案,雖只要半小時無人使用就會睡眠
但搭配uptime robot定期喚醒,對於極小型應用措措有餘
(可以參考我的文章:讓免費的heroku永不休眠)
一開始想說GCP免費方案絕對足以符合需求
這次就改部署在GCP,順便玩玩看
Heroku
- 可以與GitHub上的專案連接,當
main
有更新時,自動build、deploy - 不必管理Server
- 免費的Server、DB
- 不像GCP有那麼完整的監控,可加裝add-on另外付費監控。不如GCP的GAE那麼完整
- 免費無法綁定HTTPS域名
- Server在歐洲或美國,無法指定在亞洲
- 免費方案半小時未使用會睡眠,但可透過uptime robot定期喚醒。填上信用卡後,免費時數足以支撐整個月份
2022/08/29 更新
Heroku 2022/08/25發佈公告,從 2022/11/28起,將終止免費服務
僅能使用付費方案
故之後將沒有免費服務可以用了QQ~~
GCP (GAE VS GCE)
首次接觸GCP
第一個遇到的問題就是:我要選GAE還是GCE?
GAE(Google App Engine)
- 只需要部署程式,不必煩惱硬體面
- 要連DB,啟動DB服務,使用Cloud SQL
- 要使用批次作業,則透過GAE自身的Cron Job打自己API喚醒、執行批次作業
- 自動啟用https,免費即可直接綁定域名並使用https
- LOG則串接GCP的logging功能
- 網頁直接提供一切資訊、API被Call的情況、API錯誤訊息…等
- 若應用規模變大,於網頁調整後,即可迅速升級規格
GCE(Google Compute Engine)
- 相當於VM,要自己處理環境、安裝DB…等一切事務
- 基本上你在自己Server上要考量的事,在GCE上都得自行處理
- 雖然有提供Windows,但為了省錢,都會選擇Linux,無UI,一切皆須下指令處理
- GCE亦可當成GAE使用,連接其他GCP服務(如logging、cloud SQL…等)
心得
比較之下,GAE真的是好棒!
對於小應用,cron Job、logging的免費額度足以負擔
而完全不必煩惱硬體面的一切事務!
於是我就很開心的直接使用GAE了,部署等操作也是相當簡單容易
但後來才發現….
GAE常用的東西都是免費的,唯獨cloud SQL並不在免費的額度裡!
也就是服務被喚醒連上後,就開始計價
剛開始有試用金沒什麼感覺,想說3個月後也是歸零
一直到免費額度幾近消耗完畢後,我才開始正視這個問題
若24×7全時啟動,光DB費用一個月可能就會近萬元台幣
但我只是個微小應用!一個月使用量都還不到5人
就算我的Code寫的很爛一堆重複的Query,也不至於要支付如此高額的營運費用吧!
最初我以為是有查詢、異動DB資料才會收費
天真的加了快取、把一些運算改到前端
但發現每天仍持續被扣錢
再去Google後,才發現,原來cloud SQL被使用就會計價
而就算停用了,因佔用著公共IP,仍會收取基本費用…
GAE亦可部署靜態頁面,但對於子分頁直接輸入網址時,會變成找不到網頁
綁定得由首頁進入後,再到各自分頁,最後就直接將前端調整成SSR了
若不介意此問題的話,也未必得使用GAE,可直接將前端部署在GitHub Page (或GitLab Page)
最後還是上繳了幾千元的「使用費」給 Google
果然,免費的才是最貴-.-
其實GCP官方文件就有寫了,但對於初次使用的新手根本不會發現這麼細微的東西
僅以此文,記錄為了免費服務,無所不用其極的過程…XD
在極短時間內,大調架構,增加Cache模組
結果發現還是不行,又將前端加入SSR,變種成現在這個
API部署在Heroku,使用uptime robot定期喚醒Server
前端使用SSR放在GAE,至少還可以免費綁定域名的架構…
使用了3個免費服務構建起來的專案= =
未來展望
未來流量若真的起來,免費架構不足以應付的話
我就會全部轉Heroku了
畢竟heroku最便宜的付費方案,也才7美金,加上DB的費用(9USD)
入門款還可以將月租金壓至400~500台幣左右
而heroku付費dyno就有always on
+ https 域名綁定
uptime robot則可以調整成每小時ping一次檢查服務是否中斷,當作備援的Mail提醒
相信同樣的流量若是在GCP上,應該不會便宜到哪去
後記
最後有發現,國外討論區上有人推薦將DB建置在GCE,可以省下極大量的費用
這也是一個不錯的作法
只是架在GCE上,應該仍有備份等相關問題要另外處理吧?
但heroku免費方案亦沒有備援等機制,若GCP還能自己處理似乎還比較好?!
不過在短時間大調架構後…實在沒有心力再去嘗試了XD
就這樣吧……
之前一直搞不懂為什麼Heroku 明明是架在AWS上,但仍火紅一段時間
為何我不直接用AWS就好?
原來他真的簡化了不少事務,對於入門應用相當輕鬆
也不必準備太大量的前導技能在研究那複雜的營運費用上
當用量跨過免費門坎
以單純的WEB應用來看,只要輕量的價格提升Server後應當足以繼續使用
對於前期成本不會造成太大的負擔
結論
- GAE很方便,免費方案確實足夠小專案使用,只要你的專案不需要連線DB。因Cloud SQL收費不便宜
- 可以將 Server 部署在Heroku分離使用。若希望統一平台維護,可將DB建置在GCE,能省下不少費用
- 若期望統一平台維護,使用GCE DB + GAE,可能得考慮將 Server 部署在GCE。因GAE未使用時會自動休眠,每次喚醒連線DB的時間會讓你感覺網頁載入速度很慢
- Cloud SQL停用後,仍會收取公共IP保留費用,若確定不需要使用,資料備份完畢後,就直接刪掉吧!
- 新手上路、小專案,直接使用Heroku + uptime robot是個好選擇
- 若有綁域名需求,Heroku須付費才可以綁Https域名。Server 部署在 Heroku + uptime robot 喚醒;前端使用SSR部署在 GAE 是個可運作的0元方案
- 非前後端分離架構,那直接架在GCE應該是最划算的作法,只是可能得手動處理Lets encryption 免費憑證問題,或再寫批次自動Renew