はじめに
こんにちは!!@Sicut_studyです!
クラウド破産しかけました!ギリギリ払えるくらいやばかったです!!
普段サービスを Firbese でデプロイしているのですが、この度自分でサービスをリリースした時に破産しそうになった話を共有していきます。
自分が使うためのサービスとみんなに利用してもらうためのサービスではこの点が大きく違うんだなとしみじみ感じたので、自分以外が使うサービスをリリースする方には参考になるかと思います
0. アラートは突然に
とあるメールが自分のもとに届きました
!?!??!??!??!?!!!??
やばいまだ11月始まって6日なのに予算の半分を使ってしまっただと!?!
とくにリリースなどは行っていなかったのでなぜか今月になって請求額があがるようになっていました
仕事中にメールが来たのですが、気になりすぎてまったく集中できませんでした😅😅😅😅
1. とりあえず請求をみる
まずはGCPを開いて課金
を確認します
3日前から請求額が2000%アップしていました
デプロイなど新しくしたわけではなかったので不思議で仕方がありません
もうこの時点で破産確定。もやし生活なのですが、早く原因を突き止めていきます
(この記事で供養できるというのはありましたが、それにしても高額。たくさんいいねしてください)
2. 具体的な内容をみる
次に具体的にどこに課金されているのかを確認しました
青がほとんどを占めており、Cloud Functionsが原因ということがわかりました
またFirebaseコンソールをみて
となっていることからNext.jsのSSRを行うためのサーバーが原因ということもわかりました
3. 原因をつきとめる
それではCloud Functionsをみていきます
日付を7日にして11月3日と11月4日でどのような違いがあるのかをみました
Instance Count
のidleがその日を起点に増えており、そこから横ばいになっていました!!
こいつが原因じゃん!!!
3日以降に一気にアクセスが増えてオートスケーリングでインスタンスが増えてidleになったがidleなのでずっと裏で動き続けていてお金がかかっていました
そもそもidleになるんじゃなくて消えてほしい、、、
4. 問題を解決する
まずはFirebase.jsonにインスタンス数の上限値を設定しました
"frameworksBackend": {
"region": "asia-east1",
"minInstances": 1, //注意事項有り
"maxInstances": 2
}
これでデプロイし直したところで事なきを得ました
ここまで見た方は自分のFirebaseにとりあえず設定しましょう
最小インスタンス数を設定するとそのインスタンス数分は課金されてしまうので、設定しないと0になり、初回起動は遅くなりますが回避することは可能です。
下手すると以下のようにインスタンス数100で動くこともあるようです
アラート設定しよう
これを見た方はとりあえずGCPでもAWSでも課金のアラートをつけましょう
ほんの少し設定するだけで、最悪の事態は逃れられます。
私は高額請求で貯金がなくなったので売れるものを売って来月は生きることにしました
おわりに
Firebaseを使ったデプロイは私も普段気軽に行っているのですが、みんなに使ってもらうサービスとして公開する場合は気をつけておかないといけないなと思い記事にしてみました
ここまで読んでいただけた方はぜひいいねとストックよろしくお願いします。
少し宣伝します🔥🔥🔥🔥🔥
これからエンジニアになろうとしている人を本気でコーチングして3か月の期間で立派なエンジニアにするようなチャレンジをしてみたいなと考えております。
もし、本気でエンジニアを目指してコーチングを受けてみたいという方がいれば、Twitterに「プログラミング教えてほしいです」みたいなリプライ送っていただけたらなと思います!!
以上です。
今週もプログラミング頑張りましょう!
おすすめ記事
参考