The word “tenancy” often comes up in discussions on software architectures. Whether you are looking to buy a cloud-based application or about to build an in-house software platform, you will inevitably have to choose between multi-tenancy and single tenancy. But what do these terms really mean? What benefits does one have over the other? Which one is harder to implement? Let’s find out.
Software applications tend to serve different customers or user groups. Each customer/user group can be considered a tenant. Multi-tenancy is an architecture that enables a single software deployment to serve multiple tenants. The underlying resources are shared among all the tenants, but each tenant is guaranteed privacy and certain configurational customizations.
On the other hand, a single-tenant architecture supports only one tenant per instance. Each tenant gets a separate, dedicated set of resources. Single tenancy also allows software vendors to deliver tailor-made products, based on personalized customer needs.
For example, in a multi-tenant web application, the same web server will handle requests from all customers. The same database will be used to store data of all the customers. However, customers will be able to personalize parts of the application that are configurable, e.g. appearance, mode, etc. They will not be able to request customizations of the source code.
You can think of a multi-tenancy deployment as an apartment building. The same apartment building provides housing, security, and utilities to different tenants, via self-contained apartments. In the same way, a single instance of a software application caters to the needs of different customers, without ever compromising anyone’s privacy or service delivery.
Just like an apartment building allots a separate housing unit (apartment) to each tenant, a multi-tenant application may reserve separate resources for each customer. E.g. an application may spawn different processes to handle the requests of different customers. It may also create different tables for different customers, within the same database.
Multi-tenant applications are easy to deploy. You only need to set up one instance of a software application, which will be able to serve all your customers.
Multi-tenancy architectures allow for efficient usage of compute and hardware resources.
The cost of ownership and maintenance is shared across multiple customers, which reduces overall spend.
Adding new customers usually only requires configurational changes, and not provisioning of new resources.
A single software instance is much easier to maintain, secure, and optimize.
Designing and developing an efficient, future-proof multi-tenant architecture can be difficult.
In case of a breach, data of all customers is at risk of compromise.
Complete separation of resources allows for the best possible performance and throughput.
Isolation of customer data reduces the risk of a cyberattack affecting multiple customers.
Every customer gets to customize the product, to the fullest extent.
Migrating single-tenant applications is easier, because data of only one customer is involved.
Since there are as many software instances as customers, resources are often underutilized.
Single-tenant applications take more time to deploy, as each customer gets a separate instance.
The cost of ownership and maintenance is a lot higher.
Adding a new customer requires adding a new instance, which means more resources and more costs.
Maintaining, securing, and optimizing multiple software instances is difficult, and requires a much bigger team.
If you are building a software application, use multi-tenancy when you:
Want to support multiple customers in a cost-effective cloud environment.
Don’t want to have a large infrastructural footprint.
Don’t have a large team for deployment, maintenance, and support.
Want smoother scalability.
Have a team of experienced developers and architects.
If you are purchasing a software application, choose multi-tenancy if you:
Are in an organization that doesn’t prohibit resource or data sharing.
Can make do with the configurational customizations of the product, and its existing feature set.
Want to hit the sweet spot on the performance vs. cost graph.
If you are building a software application, use single tenancy when you:
Have a large team for deployment, maintenance, and support.
Don’t have a lot of customers.
Are okay with having a large infrastructural footprint.
Don’t have any budgetary restrictions.
Want to deliver unparalleled performance and throughput.
Don’t have a team of experienced developers and architects.
If you are purchasing a software application, choose single-tenancy if you:
Are in a company with a corporate policy that doesn’t allow resource or data sharing.
Want to completely transform the product according to your personalized needs.
Are okay with paying a much steeper amount for slightly better performance.
Even though both architectural paradigms have their pros and cons, multi-tenancy is the better choice in most scenarios. If done right, it enables you to build a future-proof platform that optimizes resource usage and is much easier to maintain.
Multi-tenancy is also a cloud-first approach. Most cloud platforms are themselves built on multi-tenant architectures. They use the same underlying hardware resources to support hundreds of thousands of customers.
With that said, if your industry or organization has strict security guidelines (e.g. healthcare, financial), then a single tenant architecture may fulfill your needs better.