注意！GCPのUptime Checksの利用料金が1ヶ月で100万円増えてた話

# tl;dr
- 先日GCPの料金レポートを見たら、それまで無料だったUptime Checks(死活監視サービス)の利用料金がなんと`100万円`を超えていて面食らった。
- GCPの一部サービスが、`22年10月から料金改定を行う`ことは[ニュースや公式のアナウンス](https://cloud.google.com/blog/products/infrastructure/updates-to-google-clouds-infrastructure-pricing?hl=en)でかなり事前に知っていたが、GCSやネットワーク周りのみの認識だった。
- しかし実際、それまで完全無料のぶっ壊れサービスだったUptime Checksもしれっと`10月から1リクエストにつき0.0003ドル(無料枠あり)`の課金がなされるようになっていた。
- 円安時代、クラウドインフラの利用料金は開発者を悩ます大きな種の一つである。個人、公式のブログなど、料金改定をアナウンスする様々な記事をあたったが、`この事実を事前にアナウンスしている記事を見つけることができなかった(要検証)`ため、今後どうすればこのような事態を回避できるか検証した。（情報求む！）

# UptimeCheckとは？
- GCPで提供されている死活監視サービス。
    - https://cloud.google.com/monitoring/uptime-checks?hl=ja
    - 日本語表記では稼働時間チェックともいう。
    - 特定のエンドポイントに対して、最大6リージョンから監視してくれる。

# 実際、料金はどう変わったのか
- 新しい料金形態はこのようになっている。
    - https://cloud.google.com/stackdriver/pricing#pricing_examples_uptime

```
    　　　　　 (実行回数 - 1,000,000) * 0.0003 USD
```
<br>

- 要するに`1実行で0.0003USD`で、`一ヶ月に100万回分の無料枠が付いている`というもの。
    - 毎分監視するなら１エンドポイント当たり、`60回×24時間×30日=43,200回`
    - 実行回数はリージョンごと計測され、最低3リージョンを含む必要がある。
        - デフォルトの6リージョンにしておくと、`6×43,200=２５９,２００回`
        - この設定では４エンドポイントで無料枠を使い切ってしまうことになる。
        - 5エンドポイント以降は、１つあたり一ヶ月で`２５９,２００回×0.0003USD=77.76USD`掛かる。
        - 実際に私の環境でもこの設定だった&何十個も監視エンドポイントを持っていたため、気づけば100万円を優に超えてしまっていった。。。
- 5つ以上のエンドポイントでUptime Checksを使っている場合は設定に気をつけないと料金が膨らんでしまう。

# どうすればこの事実に事前に気付けたのか。

https://twitter.com/icco/status/1577500586651557891?s=46&t=Svj7k0swYR7EI0n6buUeOA

- Twitterなどを調べたが、この事実に言及していたのは↑のTweetしか発見できなかった。(22年1０月27日現在)
- 調べたところ、実は公式のリリースノートを見ればこの事実は`22年8月17日`時点でアナウンスされている。
    - https://cloud.google.com/monitoring/docs/release-notes#August_17_2022

> Cloud Monitoring is introducing pricing for uptime checks, effective October 1, 2022. For more information, see Cloud Monitoring pricing summary.

- しかし、「GCP 料金改定 10月」でググると上位に出てくる下記の記事にはいずれも、この事実は含まれていない。
    - https://techblog.gmo-ap.jp/2022/04/18/gcp_price_update/
    - https://blog.idcf.jp/entry/gcp-pricing2022
    - https://cloud-ace.jp/column/detail304/
    - https://cloud.google.com/storage/pricing-announce-apr23?hl=ja
    - https://www.itmedia.co.jp/news/articles/2203/15/news177.html

### 考察

- 記事はいずれも、Google Cloudの`22年3月時点での発表内容`に基づくものである。
    - その時点で予定されていた10月からの料金改定については、上記のように多くの記事で取り上げられている。
    - 一方でリリースノートに記載の通り、UptimeChecks有料化の情報はそれより後の22年8月17日に公開されているため、いずれの記事にもこの情報は記載されていないものと思われる。

- この情報を記載している後発記事もないことから、`このリリースノートの記載に事前に気づいていた人はごく一部なのでは?`と考える。
    - GCPで利用している`すべてのサービスのリリースノートを小まめに見るというのは現実的でない`一方、このような大きな料金改定については必ず事前に認識しておきたい！
- 一般の開発者として、この事実を事前に認識し、対処するにはどうすれば良かったのか、、、。
    - 情報求む！
    - まだ結論出ていません。

# 今後、クラウドでの死活監視はどうすればいいのか。

- 今まで平気でUptimeCheckを使い続けていたGCPユーザには結構由々しき問題。

- ### UptimeChecksを使い続けるなら...
    - 監視リージョンを減らす。
        - デフォルトの監視ロケーション設定では、GLOBAL(6リージョン)となっている。
        - これを減らせば監視は緩くなるが安くなる。
            - しかし最低でも3リージョン設定しないといけない仕様。
            - 日本にサーバを置いている場合、レイテンシの少ないASIA_PACIFICとUSA(3リージョン)の計4リージョンにすれば、料金は３分の2にできる。
                - ASIA_PACIFICはシンガポールのみで、東京とかは選べない。
    - 監視エンドポイントを減らす。
        - 元も子もないが、私の環境では、課金してまで監視する必要のある対象か、このタイミングで整理することした。
    - 実は`無料枠の100万回実行はプロジェクトごと`に設けられている。
        - https://cloud.google.com/stackdriver/pricing#monitoring-pricing-summary
        - 別プロジェクトに分ければ、無料枠はそれだけ増えるという仕様。
        - 管理はちょっと大変になるが、どうしてもお金を掛けたくない場合、この方法が最も有効。

- ### もうUptimeChecks使うの辞める？
    - 「事前に知りたかった！」と言っても後の祭りなので、これからどうすればいいか考えてみる。
        - そんなにお金かかるなら他の手段で死活監視すればいいだけと思ったが、、、
        - もちろんGCPだけで監視が完結していること自体が大きなメリットではある。
    - 検討① 他のクラウド監視サービスを使う。
        - AWS
            - Cloud Watch Synthetics
                - `１実行0.0019USD（月に100回の無料枠）`とGCPより割高。
                - https://aws.amazon.com/jp/cloudwatch/pricing/
        - DataDog
            - Syntheticモニタリング
                - `１実行0.0005USD`とGCPより割高。
                - 上記は年払いの価格、オンデマンドなら、`１実行0.00072USD`。
                - https://www.datadoghq.com/ja/pricing/?product=synthetic-%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0#synthetic-%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0
        - 結構GCPは良心的な価格のようである。。。むしろ今まで無料でやってたのがすごい。
    - 検討② 自前のサーバで監視する。
        - GCPどうこうという話ではないが、それだけ自前で管理運用するコストがかかる。
        - どちらが安いかはやり方次第。

# まとめ
- GCPの価格改定の情報をすべて事前にキャッチするにはどうすれば良いのか？
    - まだ結論めいたものはわかっておらず。。。
    - この件に関しての情報がほとんどないため、何か情報あればコメントいただけると嬉しいです。
- とはいえ、GCPは他クラウドに比べてかなり良心的な値段設定であるので、クラウドで死活監視する選択肢としては引き続きベストなのではと思う。。

# 追記

- Google Cloudサポートに問い合わせたところ、当該の料金変更は、組織の支払い管理者宛に22/09/15にメールで周知されていた。私は支払い管理者ではないのでメールを確認することができなかった。
- 端的に言えば、メールを見落としてしまったというそれだけのことなのであるが、果たして、今後メールをちゃんとチェックしようね、で解決できる話かというと、安心はできない。
- 料金改定のタイミングが10月と4月に決まっているのは安心できるのであるが、そのタイミングにおける変更も一括でアナウンスする形式にしてもらいたい。年2回のアナウンスさえチェックすれば大丈夫(実際そう思っていたわけだが、違かった)という周知の方式にしてもらいたいと思う。