Is Multi-tenancy Just a Database Architecture?
Most everyone that’s part of SaaSGrid has converations either with customers, industry types, media, etc. about multi-tenancy capabilities that we “inject” into guest applications that live on SaaSGrid. One common misconception that we hear people spew out is that multi-tenancy “is just a database thing.” That is so far from the truth! While many typically think of multi-tenancy as data segregation, it’s in fact much, much more. Usually, folks that haven’t done it (multi-tenancy) don’t get it!
First, let’s look at multi-tenancy at it’s core. What we’re really saying is that we want each customer to feel as if they have their own application instance regardless of what instance orientation is being used (single instance, multi-instance, etc.) Let’s look at the holy grail of single instance, multi-tenant. What we’re really saying is that generally (this doesn’t fit all applications, but most):
- Customers needs to login to some *shared* frontend.
- Customers execute business logic on *shared* compute resources
- Customers store/get data from a *shared* data stores
- Customers use auxilliary systems to manage their presence with the service
Is multi-tenancy just a database issue? I hope at this point some level of obviousness has become part of the equation. Multi-tenancy means that you architect your front-end to fit the instance flavor you’ve chosen (in our case, single instance) so that UIs can segregate provisioning and UI rendering. Second, services layers need to execute against data for the correct customer in a safe fashion (so one customer doesn’t clobber another customer), which means we need execution isolation from a tenancy perspective. Next, data needs to be stored and retrieved correctly per tenant. Last, everything from authentication systems to upgrade engines need to understand tenancy and distinguish tenants from one another.
The footprint of multi-tenancy, when done correctly, is huge on an architecture (which also means you’re not using SaaSGrid;-)) One shouldn’t trivialize it as “just an extra column on some tables” because it’s far from that, so make sure you really understand multi-tenancy before tackling it, as it’s one huge iceberg!




Well said.
Just the security aspects of “multi-tenancy” alone are huge. What do you put into place to ensure that I only see my app/my data? This means that the entire App needs to be aware of how the underlying provisioning/management is supposed to work. If you can’t speak to security, you won’t have much of a life in the SaaS space.
Add to this the fact that customer execution is only one part of the equation. How do you manage disaster/recovery? How do you provision new tenants/users? How do you trouble shoot client reported problems? All of these questions take up as much time and effort as deploying the database.
The latter is the part that seems to sneak up on would-be SaaS practitioners.