Help us understand the problem. What is going on with this article?

Cloud Runは便利!GCPの月額費用を4万円以上節約した話

g4というサービスを運営しているのですが、ここ数ヶ月間でGCPの月額費用を4万円以上節約したので、経緯を書いておきます。

7月の費用 ¥53,818
9月の費用 ¥18,801 詳しくはこちらのレポート
11月の費用 ¥7,333 詳しくはこちらのレポート

5月はこんな感じでした。
スクリーンショット 2019-12-03 6.27.19.png

完全にやらかしてますね!!敗因は

  • 無料期間なのもあり利用料金気にせずに使っていた
  • そして無料期間の終わりを忘れていた
  • アラートを設定していなかった

です。

まずは、

7月の費用から約3万円節約するために、GAEのオートスケール周りの設定を見直しました

7月の状態は

  • 本番: (GAE flexible/custom cpu x 2) x 2台
  • ステージング: (GAE flexible/custom cpu x 2) x 2台

(DBに関しては本番とステージングで同じインスタンスを使っています)

でした。これは、app.yamlの設定をほぼ何もしなかったためなので、設定を変更して単純にcpuを1つにしたうえでインスタンス増えないようにしました。

app.yaml
resources:
  cpu: 1

manual_scaling:
  instances: 1

これだけ!

結果、約2万円くらいにまで下がりました。

それでも2万円近い月額。ちょっとつらい

そもそもステージングに7千円近くかけたくない...タダにして

ステージングは結構稼働してないことが多く、使ってないときは料金かからないと嬉しい。
使うときだけ手動で立ち上げるとかも考えましたが、やっぱり自動でやりたいのでベータ版であるAppEngineのStandard環境(ruby)にすることを決意しました。

あとStandard環境には無料枠があるのでそれによる節約も期待できます。

GAE (Flexible環境/Docker) をStandard/ruby環境に移行

g4のバックエンドはシンプルなRuby on RailsのGraphQL APIサーバーなのですが、mecabを使っている箇所があります。
mecabはOSへのインストールが必要で、Dockerを使えるカスタムランタイムでインストールして使っている状態でした。
Standardのrubyイメージを使うにはこいつが邪魔だった。

なのでこいつを外部API化して別に切り出してしまうことを検討しました。

移行先はこいつCGPのCloud Runです。すでにg4では利用実績が合ったので、イニシャルコストが安いこともわかっていたこいつを使うことにしました。

app.rb
# encoding: utf-8

require 'sinatra'
require 'natto'

get '/hogehoge' do
  # 処理してjson返す
end

not_found do
  content_type :txt
  "404 page not found."
end

Railsからの切り出しなので、こんな感じでsinatraにしたらサクッと20行くらいのコード+Dockerfileとか設定ファイルだけで済んでしまいました。めっちゃ簡単じゃん。

スタンダード環境化であとやったことは

  • mecabを使っている箇所でAPIリクエストするようにコードを変更して、依存を消す
  • app.yamlの設定をrubyのstandardに変更して、オートスケールなど設定

くらいです。

app.yamlについてはとりあえずこんな感じにしてみました。

app.yaml
env: standard
runtime: ruby25

automatic_scaling:
  max_instances: 5
  max_concurrent_requests: 40
  target_cpu_utilization: 0.6
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

1ヶ月ちょっとやってみて3台くらいインスタンスが立ち上がっていることも割と多い印象。
立ち上がりに若干時間かかる気がするので、最低インスタンス数とか設定は見直していきたい。

結果、サーバー費用は200円くらいに収まり、現在はほぼデータベースの約7千円のみに落ち着きました。

スクリーンショット 2019-12-02 6.41.20.png

データベースは今後データも多くなるし、ある程度コストかかってもしかたないかなって思っているのでこれにて一旦節約プロジェクトは完了です!

忘れずに金額アラートを設定

GCPの予算とアラートのページからアラートを設定できるので設定しておきましょう。
とりあえず1万円で設定して、5千円を超えたら通知が来るようにしました。

まとめ

  • 無料期間中でもしっかり料金計算して必要な分だけ使うようにしましょう
  • CloudRunでマイクロサービス化するといろんな依存を外出しできるので活用しましょう
  • アラートは設定しておきましょう

という自分への戒め

image.png

こんな感じでg4というサービスを開発しています。
ポモドーロ・テクニックを用いて現実で頑張った分だけ成長できるゲームのようなサービスなので、興味があったら触ってみてくださいね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away