Google Cloud SQLのコストにお悩みではありませんか?Cloud SQL向けの確約利用割引(Committed Use Discounts、以下CUD)を使えばSQL料金を大幅に削減できる──そう聞いたことはあっても、節約効果をどう正確に見積もればよいか分からない方は多いはずです。Cloud SQL CUDの購入でどれだけ節約できるか、そしていくらコミットすべきかを素早く簡単に算出できるツールがあります。さっそく見ていきましょう。

Google Cloud SQLのCommitmentsは魅力的。でも、いくらコミットすべきかをどう判断する?
Cloud SQL CUDとは?
確約利用割引(CUD)について馴染みのない方向けに簡単に説明します。CUDとは、特定のGCPリージョンで大幅に割引されたコンピュートリソースを利用できる仕組みです。1年または3年の期間にわたって対象リージョンのコンピュートリソースを24時間365日利用することにコミットする代わりに、前払い不要の月額払いで利用できます。実際に使ったかどうかにかかわらずコミットした分の料金は発生するため、CUDが向いているのは、特定のworkloadが安定して高い負荷を生むことが確実なケースに限られます。
CUDは当初Compute Engineのみが対象でしたが、最近になって同じ仕組みがCloud SQLにも導入されました。
CUDの仕組み
Cloud SQLのコミットメント購入の仕組みは、Compute Engineのcommitmentと基本的に同じです。具体的なCPU数とRAMのGB数に対してコミットします。このコミット方式はGCPユーザーにとって有利で、コミット枠の使い方に高い柔軟性が確保されます。たとえば、100 CPU・400 GBメモリのコミットメントを高性能なデータベース1台でまるごと使い切ることもできれば、CPU 2基・メモリ8 GBの小規模データベース50台に分散させることも可能です。どちらのケースでもコスト削減効果は変わりません。
共有CPUマシンタイプ(db-f1-microやdb-g1-smallなど)を除き、すべてのCloud SQLマシンタイプにコミットメントを適用できます。そのため、コミット期間中に新世代のマシンタイプがリリースされた場合でも、データベースを最新世代へアップグレードしながら、消費するCPUとメモリの量が同じである限り、既存のコミット割引をそのまま活用できます。
総じて、GCPのCUDは、特定のマシンタイプ・サイズ・台数にコミット期間中ずっと縛られる他のクラウドプロバイダーと比べて、はるかに柔軟性の高い仕組みだと言えます。
CUDで得られる節約効果
2020年8月時点のCloud SQL CUDの価格は次のとおりです。1年コミットメントではオンデマンド料金から25%、3年コミットメントでは52%の割引が適用されます。この割引はすべてのCloud SQLデータベースタイプ(MySQL、PostgreSQL、SQL Server)に適用できますが、対象となるのはコミットしたCPU数とメモリ量のみで、ストレージ・ネットワーク・(SQL Serverの場合は)ライセンス費用には適用されない点に注意が必要です。以下に、SQL Serverのデフォルト構成と高可用性(HA)構成の価格例を示します。

SQL Serverの料金:オンデマンド vs. 1年/3年CUD
料金体系自体はシンプルに見えますが、本番環境でこれを正確に算出するのは想像以上に骨が折れます。複数のリージョンにまたがるCloud SQLインスタンスを運用しているケースもあるでしょう。各リーダーノードには、サービス需要の変動に応じてスケールアップ・ダウンする読み取りレプリカが複数ぶら下がっているかもしれません。開発者がテストや開発用にCloud SQLインスタンスを一時的にプロビジョニングしていることもあります。こうした要因が断続的なコスト変動を生み、ベースラインとなる支出額の特定を難しくしています。
月末のCloud SQL請求額を頼りに必要なCPU・RAMのコミットメント量を見積もると、過剰プロビジョニングに陥り、本来の日常的なベースライン運用コストを超える支出を抱え込むリスクが高まります。理想は、長期間にわたる時間単位のCloud SQL利用状況をリージョン別に可視化し、その実データから素早くベースラインの利用量と支出を割り出せる状態です。
Cloud SQL CUD適格性レポート
DoiT Internationalのお客様限定でCloud Management Platformの機能としてご提供しているのが、クラウドコストを素早く読み解くためのインタラクティブな分析ツール「Cloud Reports」です。DoiTのFAQで端的に表現されているとおり、Cloud Reportsは「請求書を何時間もかけて精査することなく、Google Cloudのコストを瞬時に可視化」します。
1つ以上のGCPサービスを横断するカスタムレポートも手軽に作成できますが、よく使われるデフォルトレポートもあらかじめ用意されています。その1つが「Cloud SQL CUD Eligible Consumption」レポートで、リージョン別に時間単位のCloud SQL CUD対象支出(CPU・RAM使用量)を表示します。
下記のDoiTのお客様の例では、us-central1のCloud SQL CUD対象支出は時間あたり約$28でピークを迎えていますが、今後1〜3年にわたって時間あたり$28分の利用が続く見込みがない限り、コストが時間あたり約$23だったときの過去のベースラインに近いCPU・RAM量でプロビジョニングするのが賢明です。

リージョン別 Cloud SQL CUD対象の時間単位支出

Cloud SQL CUD対象の時間単位支出(us-west1リージョンにホバーした状態)
Cloud Reportsは、Cloud SQL CUD対象の時間単位支出をリージョン別にインタラクティブに可視化します
10リージョンにわたってCloud SQLマシンを運用している別のDoiTのお客様の例を見れば、リージョン別のCloud SQL CUDの見積もりがいかに複雑になり得るかが一目で分かります。
以下の例で、Cloud SQLの月次請求額の合計だけを根拠に各リージョンのCUDを見積もろうとすれば、誤りが頻発し、リージョンごとに過剰・過少プロビジョニングを招く致命的な結果になります。リージョン別CUDに最適なベースラインCPU・RAM使用量を正確に見極めるには、リージョンや日ごとのCloud SQL支出の大きな変動を把握し、理解しておく必要があります。

あるグローバル企業のCloud SQL利用状況の変動。CUDによる節約余地は大きいものの、慎重な見極めが必要です。
使用されたCPU数とRAMのGB数を時間単位で確認するには、「Customize」をクリックして以下のように設定を変更するだけです。
- Metricを「Cost」から「Usage」に変更
- View Asオプションを「Area Spline」から「Table」に変更
- 「Unit」をBreakout Dimensionとしてドラッグし、CPU使用量とRAM使用量を分離

時間単位のCloud SQL CPU・RAM消費量を示すテーブル
DoiTのCloud Reportsによるデータ分析がなければ、グローバル展開する各リージョンに最適なCloud SQL CUDを割り出すには、独自の監視ソリューションの開発とデータレビューに数週間を費やすことになります。これを避けようと月次請求額から勘で利用量を見積もれば、CUDの過剰プロビジョニングを招き、1〜3年のコミット期間中にクラウドコストを大きく押し上げる結果になりかねません。
次のアクション
ベースラインの利用レベルを素早く特定し、それを確約利用割引の基準として活用することで、Cloud SQLの支出削減につなげたいとお考えではありませんか?
DoiT Internationalまでお気軽にお問い合わせください。Cloud Reportsを活用し、Cloud SQLのコスト削減を素早く実現する方法をご案内します。きっとご期待にお応えできるはずです。