SaaS Provider Best Practices: Unlocking the Power of Data Sharing with Snowflake

By Gopal Raghavan

In today’s digital age, SaaS providers play a pivotal role in the data ecosystem. Salesforce.com, for example, provides easy-to-consume applications that their thousands of customers use to run their businesses. Their customers interact with these applications and create content specific to their business needs, such as capturing leads, cases, opportunities, and so on. Providers are not just managing data but also unlocking its potential for their customers.

Customers are hungry for more. Increasingly, customers are asking SaaS providers to share the customer’s raw data back with them. Giving customers access to their raw data allows them to address their downstream analytic use cases by blending it with other data assets. Data providers who use Snowflake’s innovative collaboration framework are perfectly positioned to meet customer demand. Not only are the opportunities for data sharing expanding, they are also becoming more efficient and secure. Whether it’s delivering tailored data products, monetizing data insights, or enhancing customer engagement, Snowflake’s solutions are turning SaaS providers from mere data custodians into strategic partners in their clients’ growth. In this blog post, we’ll explore the myriad ways SaaS providers can leverage Snowflake to share data effectively and the architectures that make it all possible.

Snowflake Collaboration Framework: A Game-Changer

Snowflake’s collaboration framework is a game-changer for SaaS providers. It simplifies the complex process of sharing data, allowing providers to effortlessly and securely share tables and views, services via user-defined functions (UDFs), and custom applications created with Snowflake’s Native Application framework. Providers can share data products with their inter- and intra-organization partners by enabling access to live, ready-to-query-data across clouds and regions — all without the need for extract, transform, and load (ETL).

But the collaboration framework is not just about data sharing; it’s about creating value. By enabling providers to list their data products publicly on Snowflake Marketplace, or privately via private listings, it opens doors to transform a cost-center into a revenue-generating hub. The framework’s ease of use, scalability, and flexibility are why it’s rapidly becoming the go-to solution for SaaS providers.

Architecture Patterns for SaaS Providers

Let’s talk architecture. SaaS Providers may have data inside or outside Snowflake. We will walk through how to share data products with their Snowflake customers in either scenario.

With Data in Snowflake

For those who store their customer’s data inside Snowflake, the focus is on efficiency and insight. Here’s how:

  • Dynamic Data Partitioning: Partition data by Snowflake deployment or customer, optimizing for cost and efficiency.
  • Seamless Synchronization: Keep partitioned data in sync with base tables effortlessly.
  • On-the-Fly Analytic Models: Create analytic models from operational data to simplify products and fast-track customer insights.

The magic happens in a few steps — from customer requests in the SaaS application to sharing dynamic tables with customers’ Snowflake accounts. The following diagram illustrates a potential architecture for these providers to consider.

Here’s how it works:

Step 1:

Customers of the SaaS Provider log into the SaaS Provider application and request data products.

Step 2:

These requests are logged in a Requests table on the SaaS Provider’s Snowflake account. This table has streams built on it.

Steps 3 & 4:

A task on the SaaS Provider’s account monitors the stream and creates dynamic table(s) to partition the data and also build analytic models according to requirements. The target_lag parameter of the dynamic tables can be set appropriately to keep them updated.

Step 5:

The dynamic tables are shared via private listings to the customers’ Snowflake account.

Step 6:

Cross-Cloud Auto-Fulfillment can be leveraged to provision both initial and incremental data for the listings to the customer.

Step 7:

Customers mount the listing in their Snowflake account and consume the data

If data is partitioned by Snowflake deployment or region and shared with multiple customers, secure views can be applied to ensure that each customer gets their slice of the data only. Streams can be created on the dynamic tables on the customer account to support CDC use cases.

With Data Outside Snowflake

For those with data outside Snowflake, the approach is a bit different but equally powerful:

  • Customer-Centric Storage: Use storage buckets per customer for data storage.
  • Snowflake-Managed Iceberg Tables: Create and manage these tables for efficient data sharing.
  • Secure Data Consumption: Share data through secure views and private listings.

This option is relevant for SaaS Providers who store massive amounts of data outside of Snowflake and have no plans to bring this data into Snowflake, but still want to use Snowflake’s collaboration framework to share their customer’s data back with them.

The following diagram illustrates a potential architecture for these providers to consider.

This option uses Snowflake-managed Iceberg tables. Here’s how it works:

Step 1:

Customers of SaaS Providers log into the SaaS Provider application and request data products.

Step 2:

Per customer storage buckets are provisioned in the object storage of the cloud provider in which the customers’ Snowflake account is deployed.

Snowflake-managed Iceberg tables with customer-specific data are created and use the customer-specific storage buckets to store data as Parquet files.

Custodian Snowflake accounts are spun up in the customers’ Snowflake deployment.

Step 3:

Secure views are created on the Iceberg tables created in the above step and are shared with the customers using private listings.

Step 4:

Customers mount the listing in their Snowflake account and consume the data.

Step 5:

The Snowflake catalog provides a reference for the Iceberg table structure. Data for a given query against these tables is retrieved directly from the storage bucket.

We recommend setting up custodian Snowflake accounts to deliver data to target regions. In the longer run, cross-cloud auto-fulfillment will simplify this process and no longer require custodian accounts to be created. Snowflake-managed Iceberg tables can be queried by external query engines like Spark, however, any data governance rules applied on the Iceberg tables will not be applicable when queried externally. In the future, however, it should be possible to share Iceberg tables without secure views.

Looking Ahead

The Snowflake collaboration framework continues to grow exponentially, driven by the platform’s flexibility, scalability, and ease of use. Consequently, Snowflake users have a huge network of organizations with which they can collaborate, both as a provider and as a consumer. Snowflake is continuously evolving, pushing the boundaries of data collaboration. Whether it’s dynamic tables, managed Iceberg tables, or innovative listing strategies, the future of data sharing for SaaS providers looks brighter than ever. Stay tuned for more insights and tips on leveraging Snowflake to its fullest potential!

--

--