現在、台頭するコネクテッドアプリケーションモデルが、多くのソフトウェア企業や開発者の関心を集めています。本ブログシリーズの第1部で説明したように、コネクテッドアプリケーションは、コードとデータを分離したSaaSアプリであり、アプリケーションプロバイダーがアプリケーションを管理し、顧客は自身のデータプラットフォームにあるデータを管理する仕組みです。Snowflakeにおけるコネクテッドアプリケーションの構築は、顧客とSaaSプロバイダーの双方に多くのメリットをもたらします。顧客は自身のデータの管理権限を維持でき、SaaSプロバイダーはSnowflakeの市場投入戦略に足並みをそろえやすくなります。

Snowflakeコネクテッドアプリケーションがどのように機能し、どのように構築されているかを詳しく見てみましょう。

Snowflakeコネクテッドアプリケーションの機能

コネクテッドアプリケーションの機能を説明するために、次の広告キャンペーンにおいて、ターゲットとすべき顧客セグメントをさまざまなデータソースに基づいて推奨するマーケティングアプリケーションのようなSaaSソリューションの開発者を例に挙げてみます。図1で示されたように、アプリケーションは顧客の関連性のあるソースからデータを収集し、必要に応じて処理し、顧客自身のSnowflakeインスタンス内でデータを維持します。アプリケーションは予測モデルをデータに適用し、結果を顧客のSnowflakeインスタンス内の別のテーブルに書き込みます。

図1:コネクテッドアプリケーションの一般的なデータの流れ

コネクテッドアプリケーションにおけるデータの流れはユースケースによって異なります。例えば、顧客のSnowflakeインスタンスが既に、アプリケーションが必要とするすべてのデータを保有しており、追加のローディングが不要な場合もあります。

図2は、顧客が複数の場合のデータの流れを示しています。各顧客は自身のデータをそれぞれのSnowflakeインスタンス内に保持しており、マルチテナントは不要となっています。 

図2:顧客が複数の場合のコネクテッドアプリケーションの一般的なデータの流れ

一方、図3で示すように、マネージドアプリケーションとして構築された同じアプリケーションは、顧客の全データを自身のマルチテナントSnowflakeインスタンス内に保存します。今回のケースでは、プロバイダーがデータの管理権限を保有しており、クレジット消費はプロバイダーのSnowflakeアカウントに課されています。

図3:マネージドアプリケーションの一般的なデータの流れ

マネージドアプリケーションがSnowflake上に構築されると、顧客はSnowflakeのセキュアデータシェアリング機能(図3には表示されていない)を使用してデータにアクセスできます。そのため顧客は、本ブログシリーズの第1部で言及したようなAPIパイプラインを構築する必要なく、即時にデータにアクセスすることができます。

コネクテッドおよびマネージドアプリケーションモデルの双方をサポートするアプリの構築

コネクテッドかマネージドかというアプリケーションモデルの選択は互いに排他的なものではありません。ある顧客向けにはマネージドアプリケーションを構築し、別の顧客にはコネクテッドアプリケーションを構築することができます。この場合、アプリケーションのプロバイダーが、可能であれば顧客のSnowflakeインスタンスに接続し、無理であれば自身のSnowflakeに接続します(図4参照)。

図4:コネクテッドおよびマネージドアプリケーションモデルの双方をサポートするアプリケーション

顧客のオンボード

顧客がコネクテッドアプリケーションにオンボードする際は、顧客がこの目的専用のユーザーをSnowflakeアカウントに作成し、新規ユーザーの認証情報をアプリケーションに読み込みます。データベース内のアプリケーションアクセスを制限するために役割を使用し、顧客は統一された信頼できる情報源内で自身のデータの管理権限を保持できます。

コネクテッドアプリケーションのデータの読み込み

アプリケーションのニーズにより、データはKafkaのようなストリーミングサービスを使用してストリーミングされる場合や、クラウドオブジェクトストレージ内のバケットにステージングされる場合があります。その後、Snowflakeのサーバーレスで継続的なデータインジェスションサービスであるSnowpipeを使用し、顧客のSnowflakeアカウントにデータを読み込みます(図5参照)。

図5:コネクテッドアプリケーションを使用したSnowflakeへのデータ読み込み

顧客に負荷がかかることを避けるために、当社ではバケットのステージングまたはアプリケーションプロバイダーに内在するサービスのストリーミングを推奨しています。成功するコネクテッドアプリケーションは一般的に、顧客によるSnowflakeデータクラウド外部インフラストラクチャーの管理を必要としません。Snowflakeへのデータ読み込みに関する詳細はSnowpipeおよびKafkaコネクタのドキュメンテーションをご覧ください。

コネクテッドアプリケーションのデータのクエリ

顧客のSnowflakeインスタンスのクエリは、非常に明快です。Snowflakeは完全にANSI SQLに準拠しているため、SQLデータベースを使用していればどのようなアプリケーションでも簡単に双方向のクエリサポートを実装できます。さらに、幅広いプログラム言語や対応するコネクタを使用してSnowflakeをクエリすることも可能です。Snowflakeコネクタおよびドライバには、Node.js、Go、.NET、JDBC、ODBC、PHP、Python、Sparkが含まれます。ドライバのデプロイや管理なしに、当社のSQL REST APIを使用してSnowflakeをクエリすることも難しくありません。接続に関するオプションについては、コネクタやANSIに関するドキュメンテーションをご参照ください。

コネクテッドアプリケーションとSnowflakeの統合の実装はシンプルです。Powered by Snowflakeパートナーの経験によると、製品やチーム次第ですが、一般的なプロジェクト所要期間は6~8週間です。

Powered by Snowflakeパートナーとなるには

Powered by Snowflakeプログラムは、メンバーにSnowflake上で運用可能なアプリケーションの設計や実装の方法をご紹介しています。また本プログラムは、データクラウドユーザー間における認知度向上のための共同ソリューション開始後もパートナーをサポートします。Powered by Snowflakeプログラムページで詳細を確認し、ぜひSnowflake Partner Networkにご登録ください。