注:本記事は(2022年5月4日)に公開された(Why Consumption-Based Apps Thrive on Snowflake)を翻訳して公開したものです。

データ集約型アプリケーションでは通常、構造化、半構造化、非構造化など、各種の膨大なデータを処理し、マイニングし、分析します。スピード、応答性、正確性といった顧客の要求を満たしつつこれらを効果的に実行するために、これらのアプリケーションは、ほぼ無限のストレージと、オンデマンドで利用できる柔軟性および拡張性の高いリソースを必要としています。

同時に、SaaSプロバイダーは、ビジネスチャンスを拡大し、収益を拡大する方法として、そして、柔軟な使用量ベースの価格設定に対する顧客の要求を満たす方法として、使用量ベースの価格設定モデルを模索しています。しかし、使用量ベースのモデルには、利用状況の正確な追跡、サービス提供コストの細部にわたる可視化、データアクセスの一元化、消費者へのビジネス価値の提示といった重要な業務をサポートできる最新のインフラが必要です。

SaaSプロバイダーに求められる重要な決断:これらの課題をすべて解決し、構築と成長のための優れた基盤を提供するデータプラットフォームはどのようなものでしょうか。しかし、その質問に答える前に、使用量ベースの価格設定の基本をおさらいしておきましょう。

使用量ベースの価格設定とは何か、それがなぜ重要なのか

使用量ベースの価格設定(使用ベース価格とも呼ばれる)では、顧客に対する請求は消費したリソースの分だけ行われることになります。この価格モデルでは、お客様にとって次のような利点があります。

  • 使った分だけ支払う:使用した時に、使用した分にだけ支払う
  • 成長に応じた拡張:需要に応じて使用量を調整
  • 前払いのコストは不要

SaaSプロバイダーが使用量ベース価格を検討すべき理由とは何でしょうか。このブログ記事ではいくつかの理由を紹介していますが、まず言えるのは、使用量ベースの価格は、自社の価値を顧客にわかりやすく伝え、自分たちが単なるベンダーではなくパートナーであることを示すチャンスだということです(顧客にソリューションを使用してもらって初めて成功したと言えるでしょう)。また、顧客があなたのソリューションを試し、その価値を理解し、新たな用途を見出すことによって収益拡大のチャンスも生じます。さらに、顧客のニーズや使用パターンをより深く理解することで、業界内でのモメンタムも構築できます。

使用量ベースの価格設定では、製品やソリューションの使用方法に応じた課金が可能となります。以下はその例です。

  • 使用したリソースに応じた課金(コンピュート、ストレージ、サーバーレス機能)
  • 定額料金+変動価格(段階的な使用量設定)の請求
  • 検索したデータに応じた課金(1GBあたりの料金)、またはクエリごとの課金

Snowflakeが使用量ベースのアプリに適したプラットフォームである理由

Snowflake上で構築すると、Snowflake独自の使用量ベースの価格設定モデルや、使用量ベースのアプリケーションにとって重要なその他の要素を活用することができます。

拡張性:あらゆるアプリケーションやシステムから大量のデータを継続的に取り込み、すべてのデータにほぼリアルタイムでアクセスして利用できます。

性能とスピード:ほぼ無制限のデータ容量を扱うことができ、高速な分析や機械学習モデルを実現するために、スピードや性能を犠牲にすることなく、データを同時実行できます。

データの変換:データを変換して、結合やリンクが可能な単一ソースのデータを提供できるほか、外部アプリケーションへの取り込みやプッシュバックも可能です。この自動化により、負担や複雑な作業なしで日常的に再予測を実行できます。

データタイプ:構造化データ、半構造化データ、非構造化データなど、さまざまなアプリケーションやシステムで生成されたデータタイプをまとめることができます。

一元化されたソース・オブ・トゥルース(信頼できる情報源):あらゆるデータソースから瞬時に関連データにアクセスし、ビジネスを全方向から把握することができます。

安全なデータシェアリング:データのコピーや転送をせず、元の場所からライブデータを共有することができます。

Snowflakeデータマーケットプレイス:Snowflakeデータマーケットプレイスを介して簡単にデータを共有し、Snowflakeに組み込まれた価格モデルや課金インフラを活用して、使用量ベースの価格設定による新たな製品ラインを作成できます。

セキュリティとガバナンス:あらゆるデータレベルでアクセス制限とガバナンスを実行できるクラス最高のセキュリティモデルを提供し、適切なデータを適切な人と共有するための細部にわたるコントロールを実現します。

次に、Snowflakeのさまざまな機能が、使用量ベースのモデルを使用するデータアプリケーションとSaaSプロバイダーが直面する課題にどのように対応しているか、詳しく見ていきましょう。

拡張性

Snowflakeプラットフォームでは、ほぼ無限の規模と同時実行性が提供されるため、使用量ベースのモデルの鍵となるスケールオンデマンド機能を自信を持って提供できるようになります。また、Snowflakeは、複数のクラウドやリージョンにわたってデータを統合し、ユーザーにシームレスな体験を提供できる唯一のプラットフォームでもあります。 

図1:Snowflakeはコンピュートとストレージを分離し、柔軟性と拡張性に優れた運用を実現します。 

当然のことながら顧客は、必要なリソースのみをプロビジョニングし、その分の対価を支払うことを望んでいます。予めリソースをプロビジョニングしようとするとエラーが発生しやすく、無駄が多くなります。Snowflake独自のアーキテクチャ(図1参照)により、アプリケーションプロバイダーは、可用性と拡張性の高い専用または共有のリソースを簡単にオンデマンドでプロビジョニングできます。コンピュートクラスタが分離されている(仮想ウェアハウス)マルチクラスターの共有データアーキテクチャにより、ストレージとコンピュートリソースの両方をシームレスにスケーリングすることが可能です。 

仮想ウェアハウスには、標準ウェアハウスとマルチクラスターウェアハウスがあります。標準ウェアハウスの構成には、ウェアハウスのサイズをベースとして数が固定された計算ノードが採用されています。マルチクラスターウェアハウスでは、必要に応じてクラスターを動的に追加プロビジョニングできます。Snowflakeでは、リソースが使用されていないときには自動的に中断されます。データはクラウドストレージ(S3、Azure Blob、またはGCS)に保存され、事実上無制限に容量を拡張できます。

アカウント管理

アプリケーションには、新規顧客の獲得、使用量の正確な報告(毎時、毎日、毎月、またはその他のメトリクスによるもの)、提供するサービスのモニタリングに関わるすべてのタスクを処理する、一連の堅牢なアカウント管理機能が必要です。

以前は新規アカウントのプロビジョニングには手作業が必要であり、アカウントごとに管理ページやビューが分かれていたため、遅延が生じていました。しかし、Snowflakeのオーガニゼーション機能(現在公開プレビュー中)により、単一のインターフェースから複数のアカウントを管理し、任意のクラウドやリージョンで新規アカウントを迅速に作成し、複数のアカウントの使用状況を統一されたビューで表示できるようになります(図2参照)。

図2:Snowflakeオーガニゼーション機能を利用すれば、単一のビューで複数のアカウントを管理できます。

一般的なアカウントモデルオプションとして、次のようなパターンが挙げられます。

顧客ごとに別々のアカウント:専用のコンピュートオブジェクトとデータベースオブジェクトにより、顧客ごとに簡単かつ正確に課金できます。

専用リソースを持つ単一のアカウント:

  • 専用のコンピュート(仮想ウェアハウス)と専用のデータベースオブジェクト:顧客ごとに専用のコンピュートノードを用意することで、データプロバイダーは使用量を正確に測定し、必要に応じて水平方向に拡張できます。同様に、専用のデータベースオブジェクトを使用することで、ストレージの使用量を簡単に測定し、使用状況の傾向を把握することもできます。
  • 専用のコンピュート(仮想ウェアハウス)と共有データベースオブジェクト:このモデルでは、顧客特有のデータ容量に基づいて、ストレージ使用量を顧客に割り当てる必要があります。Snowflakeのオブジェクトタギングとテーブルレベルでのストレージメトリクスでは、顧客がストレージコストを適切に割り当てることができます。このアプローチでは、データベースオブジェクトのメンテナンスが簡単となりますが、専用のストレージでは全体的な複雑さが軽減されるというメリットがあります。

共有リソースを持つ単一のアカウント:従来の方法では、共有リソースの使用量をさまざまな顧客に割り当てることは困難でした。Snowflakeのオブジェクトタギングとクエリタギング機能を使用すると、シンプルなratio_to_reportウィンドウ機能により、使用量を簡単に割り当てることができます。

アプリケーションの設定やメリットとデメリットを含むこれらのオプションの詳細については、ホワイトペーパー:Design Patterns for Building Multi-Tenant Applications on Snowflake(Snowflake上でマルチテナントアプリケーションを構築するための設計パターン)を参照してください。

サーバーレス機能

Snowflakeのサーバーレス機能により、データプロバイダーは顧客の代わりにサーバーレスでタスクを実行できます。顧客情報を含むタスクにタグを付ければ、利用情報を簡単に共有できます。ワークロードが完全に専用のものとなっているため、タスクの性能が格段に向上し、効率も上がります。これは、顧客に使用ベース価格を提供するプロバイダーにとって大きなプラスとなります。 

請求と使用状況に関するコストの透明性

Snowflakeは、使用したすべてのサービスについて、要約と詳細な使用状況メトリクスを提供します。そのため、簡単に使用状況を把握し、請求のモニタリングと管理を行うことができます。Snowflakeデータベースは、Organization_Usage、Account_Usage、Reader_Account_Usage、Data_Sharing_Usageで構成されています。

Organization_Usageビューでは、ある組織内のすべてのアカウントの使用状況データの概要を確認できます。

Account_Usageビューでは、次の項目を含め、特定のアカウントの具体的な情報を確認できます。

  • 仮想ウェアハウスによって消費されたクレジット数
  • ストレージコスト
  • Snowpipe、自動クラスタリング、マテリアライズドビュー、検索最適化、サーバーレスタスクといったSnowflakeのその他のサービスによって消費されたクレジット数
  • すべてのクエリの履歴と主要なパフォーマンス指標(実行時間、スキャンされたバイト数、リモートストレージに溢れたバイト数、クエリ負荷率など)
  • アクセス履歴とログイン履歴

クエリタギングとオブジェクトタギングを導入すれば、共有のリソースによって消費されたクレジットを割り当てることで、正確なチャージバックモデルを簡単に構築できます。

アプリケーションやプロバイダーは、Account_Usageと同様のプライベートで安全な共有を使用し、チャージバックデータを別個のデータベースでそれぞれの顧客に公開できます。したがって、データプロバイダーはコストを顧客に転嫁しやすくなります。使用状況データは、図3に示すように、データを移動することなく消費者と共有できます。

図3:データプロバイダーと消費者の双方が、データそのものを移動することなく、Snowflakeを通じて最新の利用データに透過的にアクセスできるようになります。

コスト管理とモニタリング

リソースモニターとアラートによって、簡単にリソースをモニタリングし、特定のしきい値を超えた場合にアラートを出して中断できます。しきい値は、日次で使用状況の傾向を積極的にモニタリングすることで、必要に応じて調整できます。SnowflakeのSnowsight管理者ダッシュボードは、使用状況をモニタリングし把握する上で非常に有効なツールです(図4参照)。

図4:Snowsightのダッシュボードは、組織、使用量、ストレージに関する情報を一目で把握できるため、使用状況を簡単にモニタリングし、先手を打って迅速に対応することができます。 

データガバナンスとセキュリティ

SaaSプロバイダーは、データガバナンスとセキュリティに関する業界のベストプラクティスをサポートする必要がありますが、それを初めから構築するのは複雑で時間がかかる場合があります。Snowflakeは、堅牢なセキュリティ機能を提供し、開発者が余計な労力をかけずに、あらゆる段階でガバナンスを組み込めるようにします。

たとえば、Snowflakeは、ロールベースのアクセス制御と、行アクセスポリシーや列レベルのマスキングなどの動的なデータマスキング機能を豊富に取り揃え、機密データにアクセスできるのを許可されたユーザーのみに限定できます。強力なデータ分類機能とタギング機能では、機密性の高いデータの追跡と分類を簡単に実行できます。これらの機能により、SaaSプロバイダーはチャージバックビューを作成し、適切な行レベルのセキュリティを使用して顧客と共有することができるため、顧客には自分のデータのみが見えるようになります。これは、顧客の信頼を高めるエレガントなソリューションです。

まとめ

Snowflakeは、お客様がSnowflake製品から継続して価値を得られるように、絶え間なく製品の強化、最適化、改良を行っています。これが、消費型アプリケーションがSnowflakeで成功するもう1つの理由です。プロバイダーと消費者の巨大なネットワークがデータをシームレスに共有しているため、Snowflakeが消費型価格モデルのアプリを構築するための優れたプラットフォームであることは容易に理解できます。Snowflake上での構築に関する詳細は、https://developers.snowflake.comでご覧いただけます。