by Dataflakes Staff
Reading time 5 min

Choosing the Best Snowflake Architecture: Evaluating Single vs. Multiple Accounts

Blog post cover image

Introduction

Your selected architecture lays the foundation for your data management and analytics capabilities in cloud data platforms. The Snowflake architecture stands out with its unique ability to decouple compute from storage, enabling scalable resources based on your requirements. As a fully managed service, it supports various data workloads, including data warehousing, data lakes, secure sharing, and application development. Selecting the ideal Snowflake architecture hinges on your specific needs—it is not a one-size-fits-all resolution. The choice between single or multiple accounts can influence aspects like ease of management, security level, performance efficiency, and cost. By grasping these factors, you can tailor an architecture that fulfills your current needs and is adaptable to future changes.

The Advantages and Drawbacks of a Single Account Setup

Let us delve deeper into this topic, which was sparked by a recent trend I've noticed in my daily work. Over time, Snowflake has gradually granted more control to administrators. Previously, activities such as account creation or renaming required an account representative and no one wants to have to open a ticket each time they want to experiment on something. However, I am thrilled with new features like the ORGADMIN role that empowers account administrators to create and rename accounts independently. This gives admins more flexibility in creating as many accounts as necessary to meet diverse requirements. With this in mind, let's examine both methods of setting up your brand new Snowflake account.

Single Account Setup

image
A single account setup is the preferred route for several reasons:

  • Administrative Simplicity:
    • A single account setup centralizes all your resources for easy management.
    • User onboarding, configuration, and monitoring are consolidated for simpler handling.
    • All your data resides in one account for convenient access and analysis.
  • Cloning:
    • A key advantage of a single account setup is the ability to clone objects.
    • For instance, you can easily replicate a development database in a test and production environment by cloning it.
    • This feature saves time and effort by automatically updating references in cloned objects.
    • It's especially beneficial when dealing with large data volumes since reloading everything is unnecessary. Learn more about zero clone copying here.
  • Security:
    • User management becomes straightforward with a single account.
    • All user information is centralized, whether you're utilizing username/password logins or integrating with a service like Azure Active Directory.

Multiple Account Setup

The demand for multiple accounts to cater to different needs is growing, particularly among legacy teams accustomed to environment segregation. Snowflake features like ORGADMIN facilitate this trend, simplifying these setups without requiring Snowflake support tickets. In my experience, I've seen organizations create separate accounts for their DEV, QA, UAT, and PROD environments, each with distinct URLs. Thanks to ORGADMIN, Snowflake now allows you to create custom URLs without having to open a ticket with Snowflake.

Advantages:

  • Enhanced Security Management: Multiple accounts offer separate environments for specific activities, helping users understand what type of data is stored in each account.
  • Environment Segregation: Each account operates independently, reducing accidental data leaks or resource conflicts between workloads. i.e., acme-dev.snowflakecomputing.com vs acme-prod. snowflakecomputing.com. For these two URLs, the distinction is clear as to what each account is purposed for.
  • Separation of Concerns: Some organizations prefer limiting developer access to the PROD environment. Separate accounts make this distinction more explicit.
  • Ability to Serve Different Use Cases: If your organization comprises independent business units, it makes sense to segregate these units using accounts.

Obstacles:

  • Operational Complexity: Managing multiple Snowflake accounts can be challenging and requires a well-coordinated team.
  • Data Migration from DEV to PROD: While working with sanitized data or data generated from libraries like FAKER might give a false sense of security, a single account setup allows you to clone the DEV database and have a QA or UAT environment ready with one command.

image

If you look at the image above, a couple of points to note about a multi-account environment setup:

  • You are still able to leverage zero-copy cloning
    • example has DEV and STG under the DEV account which can facilitate a workflow that requires the solution/changes to be staged first and reviewed before pushing to UAT.
    • In this instance, you would still want to leverage zero-clone copying
  • In the PROD account, you could have the workflow moving from UAT to PROD where users perform performance acceptance before promoting PROD changes.
    • The zero copy to clone would have to be weighed against the amount of data and how similar those two environments are - if its a first time deployment, a zero clone copy makes sense. If it's a day forward update, you might want only to deploy required changes, i.e., stored procedures, new table, etc.
  • Cloning between two accounts is impossible for now, so data sharing could be used to keep both environments in sync -especially if you want to update your DEV account with PROD data. This also depends on your data loading pattern, of course.

Conclusion

So, which approach is superior? While it depends, several factors can guide your decision based on your organization's priorities. Multiple accounts offer isolation, scalability, and easier resource management but also bring challenges like data duplication, potential additional costs, and complexity when sharing resources across accounts. Striking the right balance will ensure a robust and efficient cloud infrastructure tailored to your needs.

In my experience, I've received different recommendations from two separate Snowflake technical reps. One advocated for a single account for the abovementioned reasons, while the other favored multiple accounts for separating different environments. I'm leaning towards multiple accounts because:

  • Snowflake's product teams have been on fire recently, and I anticipate features like cross-account cloning could be on the horizon.
  • In my work of migrating clients from legacy environments to the cloud, many find the transition to a single account challenging and prefer the physical separation in line with their existing legacy mindset.
Published December 16th 2023
Background Logo