[2024] Get Started with Snowflake Native Apps

Executive Summary

  • About Snowflake Native Apps Framework
  • Various Components of Native Apps Framework
  • Building Blocks of Native Apps Framework
  • Different Types of Application Deployments
  • Value Proposition of Snowflake Native Apps

Snowflake Native Apps Framework Overview

The Snowflake Native App Framework allows users to create data applications that leverage core Snowflake functionality. Users can expand the capabilities of Snowflake features, share applications with consumers through listings, include rich visualizations using Streamlit, and have an enhanced development experience with streamlined testing, robust developer workflow, versioning, and logging support.

Native Applications can include a Streamlit app, stored procedures, and functions written using Snowpark API, JavaScript, and SQL.

The Snowflake Native App Framework also supports an enhanced development experience that provides:

  • A streamlined testing environment where you can test your applications from a single account.
  • A robust developer workflow. While your data and related database objects remain within Snowflake, you can manage supporting code files and resources within source control using your preferred developer tools.
  • The ability to release versions and patches for your application that allows you, as a provider, to change and evolve the logic of your applications and release them incrementally to consumers.
  • Support for logging of structured and unstructured events so that you can troubleshoot and monitor your applications.

Components of Snowflake Native App Framework

Snowflake Native App Framework follows is built on the concepts of Provider and Consumer used by other snowflake features.

The Provider creates an application package that encapsulates the business logic, stored procedures, streamlit app, metadata, and sql setup script. The Provider can reference it’s propietary data and entitlements dataset in the application package, which won’t be accessible to the consumer.

Then this application package is shared via listing which can be through Snowflake Marketplace or a direct listing.

Consumer can get this application package installed on their account and can use the application. The application can interact with the consumer’s data without sharing it with provider, hence maintaining the data security.

The Consumers have options to setup events which can be pass on to the Provider so that Provider can investigate if there’s any defects in the functionality of it’s application package.

You now must be thinking how an application package inside Provider’s account became application inside Consumer’s Account?

To understand this, let’s take a step back and understand what each term means:

  • Snowflake Native App: An app powered by Snowflake that is native to Snowflake.
  • The Snowflake Native App Framework: Enables partners to build Snowflake Native Apps
  • Application Package: Provider created container that encapsulates the business logic, meta data, and setup script.
  • Versions: Helps evolve the business logic over time.
  • Listing: Provider creates a public or private listing on the market place. An application package gets attached to a listing. Enables a provider to share their application package using the marketplace.
  • Application: A running instance of an application package is called an application.

Building Blocks of Snowflake Native Apps

Application package

An application package encapsulates the data content, application logic, metadata, and setup script required by an application. An application package also contains information about versions and patch levels defined for the application.

An application package can include references to data content and external code files that a provider wants to include in the application.

Manifest file

Defines the configuration and setup properties required by the application, including the location of the setup script, versions, etc.

Setup script

Contains SQL statements that are run when the consumer installs or upgrades an application or when a provider installs or upgrades an application for testing.

Three Major Types Of Application Deployments

Snowflake offers three different approaches for building your data application.

Managed:

In this type of application deployment, the provider operates the application within their own Snowflake account (SaaS).

Connected:

In this type of application deployment, the provider connects to a Consumer-owned Snowflake account via supported clients and credentials. For instance, deploying an custom application on a VM which connects to Consumer Snowflake account for data scan.

Native Apps:

Consumer installs apps published by Providers from the Snowflake Marketplace.

Value Proposition of Using Snowflake Native Apps

  • You can drive revenue and distribute your application to customers across the Data Cloud.
  • You can easily build apps using Snowflake functionalities and leverage Snowflake’s availability and scalability.
  • Installation and running applications within end consumer’s Snowflake accounts helps in reducing the security/procurement hurdles.
  • Provider IP protected by hiding implementation details from consumers.

About Me:

Hi there! I am Divyansh Saxena

I am an experienced Cloud Data Engineer with a proven track record of success in Snowflake Data Cloud technology. Highly skilled in designing, implementing, and maintaining data pipelines, ETL workflows, and data warehousing solutions. Possessing advanced knowledge of Snowflake’s features and functionality, I am a Snowflake Data Superhero & Snowflake Snowpro Core SME. With a major career in Snowflake Data Cloud, I have a deep understanding of cloud-native data architecture and can leverage it to deliver high-performing, scalable, and secure data solutions.

Follow me on Medium for regular updates on Snowflake Best Practices and other trending topics:

Also, I am open to connecting all data enthusiasts across the globe on LinkedIn:

https://www.linkedin.com/in/divyanshsaxena/

New Ways To Stay Connected

I’ve been getting a lot of DMs for guidance, so decided to take action on it.

I’m excited to help folks out and give back to the community via Topmate. Feel free to reach out if you have any questions or just want to say hi!

https://topmate.io/divyansh_saxena11

--

--