Multitenancy refers to a principle in software architecture where a single instance of the software runs on a server, serving multiple client organizations (tenants). Multitenancy is contrasted with a multi-instance architecture where separate software instances (or hardware systems) are set up for different client organizations. With a multitenant architecture, a software application is designed to virtually partition its data and configuration, and each client organization works with a customized virtual application instance. Multitenancy is also regarded as one of the essential attributes of cloud computing.
Differentiation from Virtualization:
In a multitenancy environment, multiple customers share the same application, running on the same operating system, on the same hardware, with the same data-storage mechanism. The distinction between the customers is achieved during application design, thus customers do not share or see each other's data. Compare this with virtualization where components are abstracted enabling each customer application to appear to run on a separate physical machine.
Approaches to Managing Multi-Tenant Data:
Differentiation from Virtualization:
In a multitenancy environment, multiple customers share the same application, running on the same operating system, on the same hardware, with the same data-storage mechanism. The distinction between the customers is achieved during application design, thus customers do not share or see each other's data. Compare this with virtualization where components are abstracted enabling each customer application to appear to run on a separate physical machine.
Approaches to Managing Multi-Tenant Data:
- Separate Databases
- Shared Database, Separate Schemas
- Shared Database, Shared Schema
Hybrid Multi-Tenant Database Architecture:
- Single Tenant - While this approach offers customers a separate custom database, it does not allow for a scalable solution thereby requiring software vendors to maintain multiple highly variable database schemas making software upgrades more difficult and restricting the ability of the vendor to maintain one core code base.
- Multi-Tenant with Identical Schemas - While this approach offers substantial scalability, it limits the breadth of configuration options for each individual customer forcing them to cope with limited business process support from the application.
- Multi-Tenant with Custom Schemas - While this approach offers a wide range of configuration options for the customer, it limits the vendor's ability to maintain one core code base and/or forces the vendor to introduce customer specific complexity into the master code line potentially impacting performance.
ref:
Wiki - http://en.wikipedia.org/wiki/Multitenancy
Multi-Tenant Data Architecture - http://msdn.microsoft.com/en-us/library/aa479086.asp
Architectural Multi-Tenancy - https://devcentral.f5.com/weblogs/macvittie/archive/2010/05/18/architectural-multi-tenancy.aspx
Multi-Tenant Data Architecture - http://msdn.microsoft.com/en-us/library/aa479086.asp
Architectural Multi-Tenancy - https://devcentral.f5.com/weblogs/macvittie/archive/2010/05/18/architectural-multi-tenancy.aspx
Convert your web application to a multi-tenant SaaS solution - http://www.ibm.com/developerworks/cloud/library/cl-multitenantsaas/
An Open Multi-Tenant Architecture to Leverage SMEs - http://www.europeanjournalofscientificresearch.com/ISSUES/EJSR_65_4_14.pdf
A Multi-Tenant Architecture for Business Process Execution - http://people.apache.org/~hemapani/research/papers/ode-multi-tenancy.pdf
Securing Multi-Tenancy and Cloud Computing - http://www.juniper.net/us/en/local/pdf/whitepapers/2000381-en.pdf
SaaS strategies for Software Delivery - http://msdn.microsoft.com/en-us/library/aa479069.aspx