Snowflakeは、サービスを使用した量に応じて支払い金額が変化する「従量課金方式」となっており、定額のサブスクリプションサービスに比べて料金体系が少々複雑です。
そこで、この記事では、クラウドデータプラットフォーム「Snowflake」の料金体系と費用最適化のポイントをご紹介します。
※料金体系については、公式のプライシングガイドとプライシングページを参考に内容を整理しています。
はじめに、Snowflakeの契約形態は「オンデマンド」と「プリペイドキャパシティ」の2種類が用意されています。
オンデマンドが基本的な契約形態となり、リソースを使用した分だけ料金が発生する従量課金方式です。料金の支払いは毎月となります。
一方で、プリペイドキャパシティは前払い方式です。事前に契約した容量(キャパシティ)から、毎月の使用量分が消費されていく形となります。
プリペイドキャパシティの契約期間は年単位となり、契約容量もしくは期間が終了した後でも引き続き使用することが可能ですが、その場合はオンデマンドに対応する価格が請求されます。
また、プリペイドキャパシティで契約した場合には、後述の「クレジット単価」は契約容量に応じて調整(割引)となりますのでご留意ください。
Snowflakeの料金は、[ウェアハウス使用料+ストレージ使用料]で構成されます。(その他にデータ転送料やクラウドサービス使用料が発生することもありますが、割合としては小さいため本記事では割愛します)
料金体系は公式のプライシングページに掲載されています。このページを使用してSnowflakeの料金を調べる上で、抑えておくべきポイントは5つあります。
これらを順を追って解説していきます。
プライシングページを開いて画面を少しスクロールすると、”プラットフォーム”と”地域”の選択欄があります。
これは、Snowflakeがマルチクラウド(Amazon Web Service(AWS)/Microsoft Azure/Google Cloud Platform)・マルチリージョンで使用することができるためです。クラウドサービスとリージョンは任意に選択することができますが、選択した内容で料金体系が異なります。
※2021年6月現在では、AWSのみがTokyoリージョンに対応しています。
次に、Snowflakeには4つのエディションが用意されています。
Snowflakeのエディションは階段の様なイメージで、基本的なサービスを備えているスタンダードから、エンタープライズ、ビジネスクリティカル、バーチャルプライベートSnowflake(VPS)と上がっていくにつれ、使用できるサービスやサポートが追加されていきます。
4つのエディションと、それぞれで使用できるサービス・サポートを以下にまとめました。
エディション | サービス・サポート |
スタンダード |
|
エンタープライズ |
スタンダードに加えて以下が利用可能
|
ビジネスクリティカル | エンタープライズに加えて以下が利用可能
|
バーチャルプライベートSnowflake (VPS) | ビジネスクリティカルに加えて以下が利用可能
|
Snowflakeの導入を検討する上で、自社での運用に当たってどの程度のサービス・サポートが必要かを確認しエディションを選択する形となります。そして、クラウドサービス、リージョン、エディションの選択によって「クレジット単価」が決定されます。
ここで登場する「クレジット」とは、Snowflakeのリソース使用量の単位を意味します。より具体的に説明すると、Snowflakeの仮想ウェアハウス(コンピュートリソース)をどの程度使用したのかをクレジットという単位で表し、1クレジットあたりの価格が上記の選択(クラウドサービス、リージョン、エディション)によって定義されます。
一例として、クラウドサービスを" AWS"、リージョンを"Asia Pacific(Tokyo)"とした場合のクレジット単価を確認してみましょう。
クレジットあたりの費用(クレジット単価)は、スタンダードでは2.85ドル、エンタープライズでは4.3ドル、ビジネスクリティカルでは5.7ドルであることが確認できます。
※バーチャルプライベートSnowflake(VPS)のみ、クレジット単価の定義はされていません。VPSの使用を検討されているようでしたら、弊社もしくはSnowflake社までお問い合わせください。
※上記クレジット単価は2021年6月時点の情報となります。最新情報は公式プライシングページをご参照ください。
続いて、クレジットはどのようなルールに基づいて消費されるのか解説していきます。
前述したように、クレジットは仮想ウェアハウスをどの程度使用したかを表します。仮想ウェアハウスは、XS、S、M、L、XLといったサイズが用意されており、サイズによってクエリの実行速度が決まります。
それぞれのサイズを1時間稼働させると以下のレートでクレジットを消費します。
例えば、Mサイズのウェアハウスを1ヶ月間で10時間稼働させた場合、40クレジットが消費されます。クレジット単価が3ドルであると仮定すると、40クレジット×3ドル/クレジット=120ドルが当月のウェアハウス使用料となります。
ここで重要なのは、クレジットが消費されるのは稼働した分に対してのみということです。待機時間中にウェアハウスを停止させておけば、その分の費用は発生しません。
※ウェアハウスの最小課金時間は60秒となります(仮に30秒でウェアハウスを停止させても60秒分のクレジットが消費されます)。61秒以降は1秒単位でクレジットを消費します。
次に、ストレージ使用料はSnowflakeに保存しているデータ容量で月額料金が決定します。1ヶ月あたりの平均バイト数に基づいて計算され、以下のデータが対象となります。
ストレージ使用料を求める上で、「1TBあたりの価格」がクラウドサービスとリージョンの選択に応じて変動します。
クレジット単価同様に、クラウドサービスを"AWS"、リージョンを"Asia Pacific(Tokyo)"とした場合のクレジット単価を確認してみましょう。
ストレージ使用料は、オンデマンドの場合は46ドル/TB、キャパシティの場合は25ドル/TBであることが確認できます。
※上記ストレージ使用料は2021年6月時点の情報となります。最新情報は公式プライシングページをご参照ください。
ここまで、Snowflakeの料金体系をご紹介してきました。
実際にSnowflakeをご利用いただいている弊社のお客様では、費用全体の7-8割程度がウェアハウス使用料となるケースが多いです。つまり、如何にウェアハウスを効率的に稼働させるのかが、Snowflakeの費用を最適化させるポイントと言えるでしょう。
ここからは、Snowflakeの費用最適化に役立つ4つの機能をご紹介していきます。
まず最初にご紹介するのは、クレジットの消費状況を監視する機能「リソースモニター」です。
リソースモニターにより、現在のクレジット消費状況が把握できるだけでなく、特定の仮想ウェアハウスで消費されるクレジット数に制限を掛けることも可能となります。他にも、予め設定しておいた上限に達しそうになったらアラート通知を送信したり、ウェアハウスを一時停止させるなどのアクションをトリガーさせることができます。
続いては、自動的にウェアハウスを停止させる機能「オートサスペンド」です。
オートサスペンドにより、一定時間稼働していないウェアハウスを自動的に一時停止させることが可能となります。一時停止させてしまえば、クレジットを消費することはありませんので、費用の削減に直結します。停止時間は秒単位(Webコンソール上では分単位)で指定することができるため、運用に合わせて柔軟に設定することができます。
次に、ウェアハウスのクラスター数を自動調整する機能「オートスケール」です。
オートスケールを有効化すると、ウェアハウスを利用するユーザー数の増加に合わせてクラスタ数が自動調整され、最適なパフォーマンスを維持します。同時実行数が低下すると、追加されたコンピュートリソースは自動的に一時停止されるため、常に最適なパフォーマンスを最適な費用でユーザーに提供することができます。
最後に、クエリの結果を再利用できる「リザルトキャッシュ」のご紹介です。
Snowflakeでは、全てのクエリ結果を24時間保存しています。この保存期間中にテーブルの内容が変更されておらず、同一のクエリが実行された場合には、キャッシュに保持されたデータが読み出されます。この時、ウェアハウスは一切稼働しないため費用は発生しません。また、キャッシュから読み出すだけなので、応答速度も爆速になります。
計算量が多く、かつ使用頻度が高いクエリがあるようなら、リザルトキャッシュを活用することで費用最適化に大きく貢献することができます。
この記事では、Snowflakeの料金体系と費用最適化のポイントをご紹介しました。
弊社では、Snowflakeの活用に向けた提案、PoC実施サポート、導入、運用保守、既存DWHからの移行などをご支援いたします。また、BIツール・ETLも含めたデータ分析基盤全体の構築支援もご提供しております。
「Snowflakeの導入を検討したい」というお客様がいらっしゃいましたら、お気軽にお問い合わせください。