網頁

2022年3月19日 星期六

[野人獻曝] Google App Engine ...... 的踩雷

最近因為要把用 Go 寫的一些 API 搬到專用平台跑又不想花錢,
想到 App Engine 有免費方案,
所以看了一下就先搬一兩隻進去跑了一個禮拜後,
昨天好奇瞄了一下帳單後大吃一斤,
發現才跑一個星期就有 16 鎂的帳單!

再仔細翻一下文件發現這其中的奧秘......

App Engine 分成兩種運作環境,
一為標準,另一個則為彈性。
前者有提供免費方案,依照選擇的類型不同,可能會有一天 28 或 9 個的免費時數可用;
後者完全沒有免費方案,一開下去就立刻算錢。
而我用的正是彈性,所以一開下去就馬上燒錢 Orz

話說回來了,到底標準和彈性環境有什麼差別?

標準環境的特色:

  • 使用的程式語言版本基本按照 App Engine 要求。以 Go 為例,他該死的就只支援到 1.16 ,想用 1.17 以上的版本,你只能使用彈性環境。
  • 有免費方案(不是重點
  • 運作系統規格只有籠統的 F1 / B1 這種讓你選,就算想要記憶體多一點你也只能選更高的等級。
  • AutoScaling 只能設定標準由 App Engine 自行控制
  • 想在運作環境裝一些額外的東西嘛......應該是不行。

彈性環境的特色:
  • 可以自己寫 Dockerfile ,所以要什麼東西用什麼語言環境,你自己決定
  • 沒有免費方案(依然不是重點
  • 運作所需的 CPU 核心和記憶體數量可以自訂,只要符合基本要求即可
  • AutoScaling 機制可以手動也可以自動控制
  • 可以 SSH 登入,想查什麼東西還蠻方便的說
所以你知道為什麼彈性環境沒有免費方案了吧(眼神死

======================

不過根據使用和昨天翻文件下來,
我覺得 App Engine 彈性環境遠比 AWS 的 ECS Fargate 更懶人包。
前者只需要專注在程式撰寫和設定所需運作的環境,基本上沒什麼事要做了;
但後者除了上述的東西外,
還需要自己設定從 VPC / Security Group / Load Balancer 等一狗票東西,
老實說還挺麻煩的。

======================

不過地雷還是有,
在寫 App Engine 的 app.yaml (運作環境設定檔)時,
關於 auto_scaling 的相關設定必須要特別注意,
如果沒特別宣告的話,
會讓你的服務可能一開始就開出兩個 instance 運作,
在只是實驗的狀況下可能會莫名噴出一堆成本。

參考文件: