heroku alternative:免費的 GAE + DB IN GCE

慟!免費 heroku 將要結束!

使用 heroku free dyno 搭配免費的 heroku 資料庫
可以 0 元使用
雖有著半小時會休眠的限制,但可以透過 uptime robot 來喚醒
達到永不休眠

若是自用的小服務、demo 用的專案、Side Project….等
部署在 heroku 上真的是非常的划算

甚至連 React.Js 知名框架 Next.Js 的官方服務 VERCEL,教學裡也是叫你來 Heroku 建立 DB = =


而 8 月底突然看到信件heroku 公告將於2022/11/28後結束免費方案
若在此之前未付費,則會清除 DB 資料、終止 DYNO 運作

一開始還以為是釣魚信件,結果去官網找公告,發現是真的要結束了!

當然 Heroku 的價格不算太貴,對於單純的 WEB 服務來說
Heroku 真的非常方便、又簡單

但對於未營利的專案,每個月一直燒 16 美金,也不是辦法

於是著手研究取代方案…

Google Cloud Platform (GCP)

GCP首次啟用後,有9千元可以試用,若 3 個月內未使用完畢,則歸零
而超過後,仍有免費計畫(FREE-TIER)可以使用

點進 GCP 頁面,應該就可以深有體會 Heroku 簡化了多少事務
密密麻麻一堆功能、複雜的費用計算方式、看起來很像但似乎不一樣的GAE、GCE…
光是把一些基本名詞、服務搞清楚,就得花費不少時間

若只是單純的 WEB 服務,只需要搞清楚三個名詞:

  1. GAE - 類似 Heroku dyno
  2. GCE - VM,給你一台 Server,要什麼就自己處理
  3. Cloud SQL - 類似 Heroku-postgres,雲端資料庫。GCP免費計畫(FREE-TIER)並不包含這個

關於GAE VS GCE較詳細比較,可以參考我以前寫過的Google Cloud Platform(GCP) VS HEROKU 小資使用心得

於是再度爬文,有人提到可以將 DB 安裝在 GCE,可以大幅節省開銷
搭配免費計畫後,一幅免費方案出現在眼前:

將服務裝在GAE、DB 裝在 GCE 應該是目前最好的免費取代方案了!

GAE 用法接近 Heroku dyno,還算簡單
但GCE 安裝 DB,就較複雜,但還算可以接受
可以參考我的文章:在 Google Compute Engine(GCE) 部署資料庫,降低 GCP 開銷!

若不想折騰,願意付費,亦可直接上 Cloud SQL (或直接連 Heroku-postgres)
選用入門款的方案(約 8.5~9 美金),費用跟 heroku 入門款相近(9 美金)

將服務轉移至 GCP 另個好處是:
GAE 免費方案足夠執行一個服務,相比全部使用 heroku,可以省下 dyno 的開銷!

小小缺點

除了建置方式稍複雜之外
關於費用上,這解法仍有一個小小缺陷

若專案有夜間批次作業的話,會無法使用!
因 GAE 閒置一段時間,沒有收到任何 request 時,會休眠
有 request 進來則會自動喚醒,所以可以感覺到首次連入時會比較慢一些

要是夜間批次時間不是醒著時,是不會運作的!

GCP 有提供 Cloud Schedule
只需再增加個cron.yaml設定好、部署上去
將夜間批次作業改成 api,由 GCP 定時觸發就行

但這個服務是要費用的

不過相當便宜!10 jobs 才 0.7 美金
若只有1、2個批次作業,可能只要 0.1 美金而已

但若真的要追求極致 0 元開銷的話…
還有 2 個方法如下:

  1. 同 heroku,使用 uptime robot 常時喚醒 GAE
  2. 在 GCE 裡跑一個小 web 服務,自定時間去打自己的 API、或著使用 Linux 的crontab打自己的 API。可以參閱我的文章:GCE 使用 Container-Optimized OS (COS) 增加 crontab 服務,定時執行任務

Amazon Web Services (AWS)

提到 heroku,相信有些人知道,其實 heroku 整個服務都是架在 AWS 上的!
或著就直接用 AWS ?

AWS 一樣也有免費方案
相似於 heroku 的部份:

  1. AWS Elastic Beanstalk IN Amazon EC2 - 類似 Heroku dyno
  2. Amazon DynamoDB - 類似 Heroku-postgres,但只有 NoSQL

雖然服務可以免費跑起來,但 DB 的部份就卡關了
若是全新專案,還可以考慮配合免費方案而使用 NoSQL
但是既有專案已使用 postgres (因 heroku 免費提供僅有 postgres),就得去改程式了…

相比 GCP 只要調整設定、微調一些程式,比較沒辦法無痛轉移