Software multitenancy is a software architecture in which a single instance of software runs on a server and serves multiple tenants. Systems designed in such manner are "shared" (rather than "dedicated" or "isolated"). A tenant is a group of users who share a common access with specific privileges to the software instance. With a multitenant architecture, a software application is designed to provide every tenant a dedicated share of the instance - including its data, configuration, user management, tenant individual functionality and non-functional properties. Multitenancy contrasts with multi-instance architectures, where separate software instances operate on behalf of different tenants.

Some commentators regard multitenancy as an important feature of cloud computing.

Multitenancy

Adoption

History of multitenant applications

Multitenant applications have evolved from—and combine some characteristics of—three types of services:

Multitenancy

Timesharing: From the 1960s companies rented space and processing power on mainframe computers (time-sharing) to reduce computing expenses. Often they also reused existing applications, with simply a separate entry field on the logon screen to specify a customer-account ID. On the basis of this ID, the mainframe's accountants could charge the individual customers for CPU, memory and disk/tape usage actually incurred. Hosted applications: From the 1990s traditional application service providers (ASPs) hosted (then-existing) applications on behalf of their customers. Depending on the limitation of the underlying application, ASPs were forced to host applications on separate machines (if multiple instances of the applications could not be executed in the same physical machine) or as separate processes. Multitenant applications represent a more mature architecture which enables a similar service with lower operational cost. Web applications: Popular consumer-oriented web applications (such as Hotmail) developed with a single application instance serving all customers. Multitenant applications represent a natural evolution from this model, offering additional customization to groups of users within (say) the same client organization.

Multitenancy

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 transformed, enabling each customer application to appear to run on a separate virtual machine.

Competitive differentiation

Some companies actively promote the principle of multitenancy and use it as a source of competitive differentiation. The use of multitenancy is increasing day by day.

Economics of multitenancy

Cost savings

Multitenancy allows for cost savings over and above the basic economies of scale achievable from consolidating IT resources into a single operation. An application instance usually incurs a certain amount of memory and processing overhead which can be substantial when multiplied by many customers, especially if the customers are small. Multitenancy reduces this overhead by spreading it over many customers. Further cost savings may come from licensing costs of the underlying software (such as operating systems and database management systems). Put crudely, if you can run everything on a single software instance, you only have to buy one software license. The cost savings can be eclipsed by the difficulty of scaling the single instance as demand grows - increasing the performance of the instance on a single server can only be done by buying faster hardware, such as fast CPUs, more memory, and faster disk systems, and typically these costs grow faster than if the load was split between multiple servers with roughly the same aggregate capacity. In addition, development of multitenant systems is more complex, and security testing is more stringent owing to the fact that multiple customers' data is being commingled.