Multitenancy in computing corresponds to a principle of software architecture in which a single instance of the application runs on the server, but serving multiple clients or organizations (fork or instance). This model differs from multi-instance architectures where each organization or customer has its own installed instance of the application. With a multi-tenant architecture, the application can virtually partition its data and configuration so that each client has a virtual instance tailored to their requirements. Some experts consider multiple tenure as a decisive factor of the cloud computing paradigm.
In a multi-tenant system, a distinction must be made between client-dependent and cross-client data and objects. Client-dependent data and objects are data, data presentations, and configurations that can be controlled individually for each client. Examples include customers, their account information, or the user directory. Cross-client data and objects are used for general and client-independent configuration of the system. Examples are countries, locations, exchange rates or internationally standardized industry catalogs.
Advantages of Multitenancy
A multi-tenant architecture makes it possible to pool the resources and costs necessary to run the application. In this sense, this architecture can be seen as an alternative to virtualization. Instead of collecting data from multiple sources using probably different database schemas, all customer information is stored in a common and single schema. Therefore, executing requests to the database about customers to complete tasks e.g. data mining, analysis and prediction are much simpler to perform. The delivery process is simplified because there is only one instance to update. Needless to say, there is significant cost reduction.
---
Disadvantages of Multitenancy
The development of a multi-tenant application is more difficult because there are more configuration possibilities and data management become complex. Data security is critical so that a user of one entity cannot access the data of another entity. In order to achieve this, data loading should be limited to including only the data of the current entity, with rare exceptions such as batch processing. The delivery process is riskier because if the app contains a bug, there will be an impact on all entities. In addition, it can become difficult to find windows for updating the application when a multi-tenant application is used across multiple time zones. Finally, backup mechanisms, and even more so restoration, also pose real problems. Indeed, while the backup can be performed hot, on all the data (all entities combined), it is much more difficult to perform a recovery of the data of a single entity. These can force the maintenance and support of two different products with all their associated drawbacks.
Examples
- Large web hosts offer thousands of websites of independent clients under one IP address.
- On some content management systems and online shop systems, different clients can be served on the same instance.
- With virtual servers, several systems with different IP addresses can be operated on one hardware, which look like a separate server for the respective customer.
- Several companies/clients are managed in the same instance of an ERP system, e.g. parent companies plus subsidiaries. On a smaller scale, for example, several companies can be created in the same accounting program, such as parent companies plus subsidiaries or a tax consultant manages several clients in their program.