はじめに
最近仕事でGCPに関わるようになった。
個人的にGCPがちょうど日本での展開を始めた頃に当時の職場で少しだけ触る機会があったのだが、まだGoogle Compute Engine(GCE)を中心にいくつかのサービスしか使えない時代だった(それでもグローバルHTTPロードバランサは衝撃的にすごかった)。
久々にクラウドコンソールを見てみたらAWSに負けず劣らず、とまではいかないまでも相当な数のマネージドサービスが使えるようになっていて隔世の感がある。
ここから本題で、GCPを割引料金で利用するための仕組みについて調べる機会があり、ちゃんと理解していないと事故りそうな仕様をいくつか知ったので自分の整理も兼ねてまとめてみる。
おことわりとして、ここで説明しているのは2022年3月現在の内容です。
GCPの割引の種類
大きく以下の2つがある。
継続利用割引
- 請求月の特定のリソースの実行時間が一定の割合を超えた場合に自動的に適用される割引
- 何もしなくても勝手に割引される
- 2022年3月現在おそらくGCEのみ対象
- ref. 継続利用割引
確約利用割引
- 特定の期間に使用するリソースを確約(コミットメント)するのと引き換えに適用される割引
- AWSのSavings Plansに近い
- 確約利用割引には2つのコミットメントタイプがある
- 費用ベースのコミットメント
- 特定のリソースを最低いくら分の金額は利用します、という確約
- 例えば「Cloud SQLインスタンスのvCPUとメモリ利用分として、オンデマンド料金換算で月に$1,000は使います。仮に使わなくてもお金は払います」と確約することにより割引が適用される
- 割引率が25%とすると、確約利用割引を利用しない場合$1,000払っていたところが$750になる
- 逆に想定より少ししか利用しなくても確約した分は支払う必要がある
- 2022年3月現在Cloud SQL、Cloud Runなどいくつかのサービスで提供されている
- リソースベースのコミットメント
- 特定のリソースをいくつ利用します、という確約
- 例えば「GCEのvCPUを月に8コアは使います。仮に使わなくても8コア分のお金は払います」と確約することにより割引が適用される
- 確約利用割引と継続利用割引の同時適用はされない(まず確約利用割引が適用され、超過した分に継続利用割引が適用される)
- 2022年3月現在GCEのみで提供されている
- ref.
継続利用割引はシンプルで分かりやすい上に自動適用なので利用者側で間違いようがないし損もしないはず。
対して確約利用割引は、しっかり計画して買えばたしかに無駄なくコスト最適化できそうなものの直感的に分かりにくいと思う。断じて私の説明が下手くそだからではない。きっとな。
そんな確約利用割引についてサポート経由で仕様確認させてもらった中で、要注意だと思ったポイントを以下に。
確約利用割引には日割りが適用されない
- 確約利用割引は月単位の契約である
- ref. 確約利用割引 - 料金
- 割引は購入後少ししてから有効となり、月中に購入しても過去に遡って適用はされない
- 確約利用割引の費用は購入した翌月から請求される
- その際、今月中のいつ購入したとしても日割りは適用されず1ヶ月分の費用が請求される
- 仮に4月に1年契約で購入する場合、4月1日に買っても4月30日に買っても契約(割引)期間は「購入時点〜翌年3月31日」となる
- つまり、毎月$1,000支払うようなコミットメントを1年契約するとして、ポチったのが1日だろうが30日だろうが翌月に$1,000、年間で$12,000支払うことに変わりない
- しかし30日にポチった場合は割引適用される期間が最大1日分しかない
- かつ$1,000はあくまで確約利用分として支払っているので、過去に遡ってオンデマンド料金に充当されることもない
- 結論、30日にポチると$1,000の大部分が無駄になる
日付変更の基準は太平洋標準時(PST/PDT)
- 先述の通り日割りが適用されないため、極力月初に購入するべきと言える
- では4月1日9:00JSTに出社して即ポチると残念ながら事故る
- GCPの利用料金は太平洋標準時にそって計算される
- ref. 請求レポートと費用傾向の表示
- JSTと太平洋標準時の時差は冬時間か夏時間かに応じて16~17時間JSTのほうが進んでいる
- 費用ベースのコミットメントは購入した時点から1時間以内に有効になる
- ref. 費用ベースのコミットメントの購入
- ふまえて、JST基準だと月初1日16:00または17:00以降の早いタイミングで購入するのが効率がいい
- JSTの1日AMとかでポチると前月扱いとなってしまう
- リソースベースのコミットメントは購入後、翌日の深夜0時から有効になる
- ref. マシンタイプのコミットメントの購入
- ふまえて、JST基準だと月末16:00または17:00〜月初1日15:59または16:59の間に購入するのが効率がいい
まとめ
いかがでしたでしょうか。難しくないですか?断じて私の説明が下手くそだからではないと思います。
まとめると、JST基準の前提かつUSが夏時間か冬時間かを考慮の上で
- 費用ベースのコミットメントは月初1日16:00または17:00以降の早いタイミングで買うべし
- 心配なら月初1日17:00以降に買えば間違いない
- リソースベースのコミットメントは月末16:00または17:00〜月初1日15:59または16:59の間に買うべし
- 心配なら月末17:00〜月初1日15:59の間に買えば間違いない
ということになる。ご注意ください。