For technical readers.
At Fortress, we allow SaaS companies to manage a multi-instance database architecture through a single interface. Here is an example of what a multi-instance architecture looks like:
For many, it seems that supporting a multi-instance database architecture is unnecessary: a single-shared database with Row-Level Security is sufficient to provide isolation for all customers.
In this blog, I want to share why we believe that supporting a multi-instance database architecture will soon become a necessity for the growing SaaS company.
When talking about database isolation for multi-tenant SaaS, a few terms are generally used: db-per-tenant, schema-per-tenant, and row-level security (RLS).
Db-per-tenant is often even more ambiguous as in certain contexts (such as Postgres), it mostly refers to logical database isolation in a shared Postgres instance, while in other contexts, it refers to database instance-level isolation (for example, SQLite).
We refer to multi-instance as a catchall term for any architecture that includes multiple database instances. For example, it can refer to a hybrid architecture consisting of shared or dedicated instances and an architecture consisting of a DB instance per tenant.
These are all examples of multi-instance architectures that we’ve seen SaaS companies use:
We support all of these use cases to make it easy for SaaS companies to transition to our platform.
We have spoken to large SaaS companies that still use a shared database instance for all of their customers and some sort of logical isolation.
The problem is not with a single shared database itself; RLS is quite secure if it is set up correctly (albeit it arguably lacks performance at scale). Rather, the problem is with the inherent DevOps that occurs once a second database instance is (inevitably) required: how to handle different database connections, propagate schema migrations across these databases simultaneously, tenant management across databases, etc.…
Trends in regulation and concerns in data privacy have made dealing with multiple database instances a necessity for many SaaS companies. GDPR and other local regulations surrounding data sovereignty make it such that the geographical location where data is stored is incredibly important, necessitating separate database instances.
Multi-instance database architecture, split geographically to ensure GDPR compliance.
Further, the rise of AI-based SaaS have made it so that buyers care more about data isolation as they are giving up more of their sensitive internal data to 3rd party vendors. While isolated database instances have been a standard for buyers of SaaS in certain regulated industries, such as Finance, Healthcare, and defense, we have seen this become a growing standard for selling to enterprises in general, with many including this as a requirement in security questionnaires.
Even for customers where dedicated databases are not explicitly required, offering a dedicated database instance is often a way to show enterprise clients that you take security seriously.
At Fortress, we give SaaS companies the flexibility to offer fully isolated database instances without the additional DevOps this usually requires.
We abstract away the underlying complexity so that developers can interact with a fleet of databases through just the ‘tenant-id.’ Fortress manages schema migrations across database groups and provides a simple interface for tenant-management.
If you are curious to learn more about what we do and how we can help you close more enterprise clients with just a few changes to your code, schedule a call with our founders!
Beyond regulations and requirements, there are also inherent advantages of offering a dedicated database:
Performance:
Security:
Simplified Compliance:
Customizability: