While there are varying degrees of data isolation in cloud solutions, for this article we will be considering “full shared-everything multi-tenancy”.
For a more detailed understanding of the architecture behind a multi-tenant application read our blog entry on The different Stages of Multi-tenancy
Before jumping into the benefits lets first clarify some terminology.
One of the most important implementations of Cloud technology is Software as a Service (SaaS). In this architecture, to deliver software to organizations, instead of installing separate instances of the software for each customer, you install a shared instance of the software that can serve all the customers. So now, each customer is considered a Tenant of the software and your software needs to be re-written to be multi-tenant.
Each Tenant will have their own collection of users who will use their service. Let’s take a Customer relationship management (CRM) application as an example; each of your tenants will be a company who desires to use this CRM. Each company will then have multiple employees using the CRM application. So you are providing your CRM application to your client, the company.
In a Multi-tenant software architecture a single instance of an application runs on a server and handles input from multiple tenants. In this architecture the tenants share resources and even though their data is stored on the same hardware it is separated logically, users of tenant A’s software cannot access tenant B’s software or data.
This structure has a range of significant benefits:
The manner in which the structure of a multi-tenant architecture is designed means the software and hardware is already in place for provisioning new customers. This offers a low cost and quick method of setting new customers up. This automated provisioning provides you with the ability to offer your application on a trial basis where prospective customers can avail of self-registration and try out your system. The ease with which customers can register drastically reduces any implementation costs and allows your customers to fully appreciate your application before making the decision to become a paying customer and avail of the full capabilities of your application.
In instances of single tenant applications, the more successful you are and the customers that use your software, the more support and maintenance is required. This can become a real limiting factor for the acquisition of new clients. For each tenant there is a corresponding instance of your application and hardware because of this you are required to perform the same number of updates as you have tenants. This produces a significant increase in complexity and work. In multi-tenant applications every tenant uses the same instance of your application. This means maintenance and updates only have to be performed once. In a multi-tenant application a tenant has the ability to customize the application but not change the code. This reduces the complexity of support, in some single tenant instances a tenant has the ability to modify your code and so you would be required to support multiple variations of the same application.
Leveraging the true power of the cloud
By combining a cloud (IaaS) service with a multi-tenant application you are planning for success. Without either multi-tenancy or Infrastructure as a Service (IaaS) every new customer requires extensive provisioning, either new hardware or a new Virtual Machine. Even with a multi-tenant application you are responsible for managing your private cloud and ensuring that your hardware can handle the increase in customers or the success of one of your tenants. In combining both a multi-tenant application with IaaS you are greatly increasing your potential for scaling. You are only paying for the amount of storage/computation power that you use, significantly reducing the cost of your success. When one of your tenant increases in size and begins to use up more of your resources or you have an increase in tenants signing up for your service, you don’t have to migrate to a bigger server or purchase upgrades for your current server, you simply increase the amount of resources that your IaaS provider gives you access to.
To avail of all these great benefits there are a few hurdles you must first overcome. These must be taken into consideration before developing a multi-tenant application or transforming your current application. The most significant hurdle is the logical separation of tenants.
Designing or redesigning an application to make it multi-tenanted can be difficult. The databases which were previously stored on individual servers must now be combined into one, and it is vital that one tenant’s data is not accessible to another tenant. That is one of the major concerns for tenants looking to adopt a multi-tenant service. This separation can be implemented by carefully designed metadata which will logically separate the data per tenant on a single database.